El 27 d'agost, CISA va posar al seu catàleg de vulnerabilitats explotades una fallada de JFrog Artifactory amb nota 5,3 sobre 10. El 2 de setembre en va posar una altra del mateix producte amb nota 9,8. La segona es va endur els titulars; de la primera gairebé no se'n va parlar. Són a la mateixa caixa, i l'ordre en què es va confirmar que algú les feia servir és el contrari a l'ordre en què es llegeixen les notes.
Les dues dates
El catàleg KEV de CISA recull fallades amb evidència d'explotació, no fallades greus. Una entrada allà significa que algú l'està fent servir contra algú, i porta termini: per a les agències federals nord-americanes, el del 5,3 venç el 10 de setembre. Cronologia, doncs:
- 12 d'agost del 2026 — es publica
CVE-2026-66384, un path traversal a Artifactory, nota 5,3 (mitjana). - 27 d'agost — CISA afegeix aquest 5,3 al KEV, juntament amb una fallada d'ownCloud i una altra del kernel de Linux.
- 28 d'agost — JFrog publica i corregeix
CVE-2026-82329, nota 9,8: salt d'autenticació amb accés administratiu. - 1 de setembre — watchTowr detecta explotació contra la seva xarxa d'esquers. Quatre dies després del pedaç.
- 2 de setembre — CISA afegeix el 9,8 al KEV, en un lot de set que inclou SonicWall SMA1000, Kestra, LiteLLM i Sangoma Switchvox.
Sis dies separen una confirmació de l'altra. Si el teu criteri per posar coses a la cua de pedaços és la nota, el 5,3 encara espera en algun tauler mentre el 9,8 es va pedaçar el cap de setmana. I el 5,3 ja portava sis dies amb explotació confirmada quan l'altre hi va entrar.
El 9,8: la clau de signatura es podia calcular
CVE-2026-82329 és una fallada d'autenticació incorrecta (CWE-287) amb CVSS 9,8, i no és al catàleg de paquets ni a la interfície: és a JFrog Access, el component que emet i valida credencials. Segons l'anàlisi de watchTowr, les instal·lacions que no tenen configurada una join key addicional reben una join key «fantasma»; a les versions vulnerables s'accepta la cadena buida com a join key vàlida, i la clau de signatura que el sistema deriva d'una join key buida és completament predictible. A partir d'aquí, forjar un token d'administrador és aritmètica.
L'important d'aquesta frase és el que no cal: ni usuari, ni contrasenya, ni API key, ni una sessió robada abans. N'hi ha prou d'arribar-hi per xarxa. Afecta instal·lacions autoallotjades; segons JFrog, la seva plataforma SaaS en queda fora.
El 5,3: escriure fora de la memòria cau de Docker
La descripció de CVE-2026-66384 cap en una línia: «un usuari autenticat pot escriure dades fora de la ruta prevista de memòria cau de Docker sota determinades condicions de repositori remot». És CWE-22, path traversal clàssic, i la correcció és a les versions 7.146.35 i 7.161.16. Ens el vam creuar de passada escrivint sobre l'incident de les 136 claus, a la llista del que va entrar al catàleg aquell dia; llavors era una línia, ara és mitja història.
Aquest «repositori remot» del qual parla la descripció és el proxy amb memòria cau: la manera com Artifactory es posa davant de Docker Hub o d'un registre extern, es descarrega la imatge un cop i la serveix des de dins. L'avís acota la fallada a «determinades condicions» i no diu quantes instal·lacions les compleixen; que aquest mode sigui el motiu habitual de muntar l'eina és lectura nostra, no dada del fabricant.
5,3 no vol dir «poc important». Vol dir «una sola dimensió»
El vector complet del 5,3 és aquest: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N. Llegit per parts diu força més que el número del final.
C:N — no arriba a llegir res que no hauria de llegir. A:N — no tomba res. I:H — impacte màxim en integritat. La nota és un escalar que combina les tres dimensions d'impacte en una sola xifra; amb dues a zero, el resultat baixa. Queda dempeus la que defineix per què existeix un repositori d'artefactes: que allò que en treus sigui allò que hi vas posar. I a sobre AC:H (cal encertar la condició) i PR:L (cal estar autenticat) tornen a estirar el número cap avall.
I aquí va lectura nostra, no dels avisos, perquè no hem vist ningú encadenar les dues coses i convé dir-ho: en una caixa vulnerable a totes dues, el PR:L del 5,3 deixa de ser un requisit. El 9,8 reparteix credencials d'administrador sense demanar res a canvi, i «cal estar autenticat» es compleix sol.
Dit això, no ho inflis: si ja ets administrador pel 9,8, canviar el contingut d'un repositori ho pots fer per la via normal, sense cap path traversal. El que hi afegeix el 5,3 és escriure fora del directori previst, és a dir, al sistema de fitxers del servidor fins on arribi el procés d'Artifactory. És la diferència entre «canvio el que hi ha al repositori» i «escric a la màquina». No és el mateix salt, i a nosaltres el segon ens preocupa força més.
La trampa de les versions
Els rangs afectats pel 9,8 que s'han publicat són 7.161.0–7.161.19, 7.146.0–7.146.36 (algun llistat diu .37), 7.133.0–7.133.28, 7.125.0–7.125.19, 7.117.0–7.117.27 i 7.111.4–7.111.21, i les compilacions corregides 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38 i 7.161.20. Creuats amb l'altra fallada en surten dues coses. La primera: 7.161.16 a 7.161.19, i 7.146.35 endavant fins al final del rang, són versions pedaçades del «mitjà» i exposades al crític. Qui va actualitzar a l'agost pel path traversal i s'hi va quedar té la sensació d'estar al dia.
La segona és pitjor, i és lectura nostra sobre els rangs publicats: el 5,3 només té correcció anunciada a 7.146.35 i 7.161.16. Qui sigui a 7.111, 7.117, 7.125 o 7.133 pot aplicar l'arranjament del 9,8 de la seva pròpia branca —la .21, la .28, la .20, la .29— i continuar sense pedaç del path traversal, perquè en aquestes branques no n'hi ha cap d'anunciat. Si la teva política és «em quedo a la branca i aplico pedaços», allà et quedes a mitges. Pot ser que JFrog tingui retroports que no surten als resums públics; nosaltres no els hem trobat, i aquesta és exactament la pregunta que li faríem al fabricant.
Un apunt més, per si de cas: els llistats públics discrepen entre ells. A la 7.111, la .21 apareix en uns llocs com a última versió afectada i en altres com la compilació corregida; a la 7.146 hi ha qui tanca el rang a .36 i qui el tanca a .37. Circula una lectura coherent («anterior a 7.111.21» i «7.146.0 a 7.146.37») que resol les dues anomalies, però no l'hem poguda contrastar amb l'avís original. Comprova el número de compilació exacte contra el fabricant. «Vaig per la 7.146» no respon a aquesta pregunta.
El mirall que vas muntar per no dependre de fora
Ningú instal·la un repositori d'artefactes per gust. S'instal·la per dos motius raonables: perquè una compilació no caigui perquè Docker Hub tingui un mal dia, i per quedar a cobert que algú publiqui un paquet enverinat allà fora —que és exactament l'escenari del qual parlàvem amb l'incident dels 444 paquets d'npm.
I a partir d'aquí endureixes al voltant: les màquines de compilació només estiren del repositori intern, la sortida a internet es retalla, el registre extern surt de la llista blanca. Totes aquestes regles, una per una, apunten a la mateixa caixa. És una arquitectura bona, amb una conseqüència incòmoda: qui controli aquesta caixa hereta cadascuna d'aquestes regles com a privilegi. Li has ensenyat tu a la teva infraestructura a creure's el que en surti.
I la substitució no creua el teu perímetre de cap manera que un filtre de sortida noti: mateix domini, el teu certificat, un host de la teva pròpia VLAN. Si a sobre desplegues per etiqueta mòbil, que ja vam dir que latest no és una versió, el canvi no deixa ni un número diferent a la vista.
El primer que van mirar va ser el clauer
Aquí cal precisar d'on surt el que sabem, perquè canvia la mida del sobresalt: watchTowr descriu el que els atacants van fer contra la seva pròpia xarxa d'esquers, no contra víctimes identificades, i l'activitat venia d'un grapat d'adreces, sense escaneig massiu de moment. Dit això, el que van fer allà és el guió: encunyar tokens d'administrador i, amb ells, enumerar usuaris, grups, conjunts de credencials i relacions d'accés federat, o sigui mirar l'entorn per decidir si valia la pena continuar; en un nombre limitat de casos van crear, a més, usuaris porta del darrere. Amb aquests permisos es poden llegir artefactes, canviar la configuració de seguretat i enverinar paquets ja existents.
L'ordre diu molt. Van començar pel clauer, i els paquets venien després. Un repositori d'artefactes guarda les credencials amb què parla amb els repositoris remots, amb el teu registre d'imatges, amb el teu CI i amb les altres instàncies federades; és un magatzem de secrets que a sobre serveix fitxers. Ja vam veure el mateix patró quan el servidor d'integració contínua va resultar ser el que tenia les claus de producció: el que fa valuosa una eina interna és amb qui està autoritzada a parlar.
Nosaltres despleguem amb CI/CD a GitLab i contenidors sobre Docker Swarm i Kubernetes, així que l'assumpte ens agafa a dins. La regla que apliquem és avorrida: un repositori d'artefactes és un sistema de producció, no una eina de desenvolupament. Va a l'inventari, té amo, té finestra d'actualització i rep la mateixa conversa sobre exposició i credencials que un servidor de base de dades. És la discussió d'arquitectura de dades i aplicacions de sempre, aplicada a la peça que sol quedar-se fora de l'inventari.
Què miraríem un dilluns al matí
- S'hi arriba des d'internet? Autoallotjat i publicat cap enfora és la pitjor de les combinacions per a una fallada que només demana abast de xarxa. Si la resposta és «crec que no», això és un no verificat.
- El número de compilació exacte, no la branca. I comparat amb les dues llistes, no amb una.
- Dues finestres, no una. Els indicadors del 9,8 —altes d'usuari que ningú va demanar, tokens d'administrador emesos— només tenen sentit des del 28 d'agost. Els del 5,3 comencen abans, el 12, i són uns altres: fitxers apareguts fora del directori de memòria cau, en rutes on escriu el procés d'Artifactory. Buscar els uns a la finestra dels altres és una manera còmoda de no trobar res.
- Rotar el que guarda, no només el que hi dona accés. Les credencials dels repositoris remots, les del registry, les de federació. Si et quedes a canviar la contrasenya d'administrador, has rotat el pany i no les claus de dins.
- El llistat del que s'ha desplegat des d'aquelles dates, amb la imatge concreta i el seu digest. Si la teva resposta comença per «bé, el que hi hagués al registre», aquesta és la resposta.
- Si haguessis de dubtar d'un artefacte, el pots reconstruir des de codi font i comparar-lo? Aquí és on la conversa deixa de ser de seguretat i passa a ser de recuperació: restaurar la còpia del repositori et torna l'estat que tenia, inclòs allò que t'hi haguessin ficat. Restaurar i reconstruir no són el mateix.
Pedaçar no és netejar
És la mateixa distinció que ja vam fer amb els enllaços simbòlics de FortiOS, i aquí aplica sencera. Un salt d'autenticació deixa un rastre discret: cap procés estrany, cap binari nou, només peticions ben formades amb un token que el sistema considera vàlid. Després del pedaç la instal·lació es veu exactament igual que abans, amb un usuari més o amb una credencial de menys. Aplica també al lot sencer del 2 de setembre, del qual ja vam escriure pel costat de Kestra: quatre de les set fallades eren programari intern que ningú anomena producció.
Quan entrem a mirar una d'aquestes màquines, el primer que preguntem no és la versió. És quines altres màquines es creuen el que en surt i amb quines credencials parla ella amb la resta. La versió s'arregla aquesta tarda; aquestes dues llistes, a moltes empreses, fa anys que no s'escriuen enlloc, i són les que decideixen quant fa mal el dia que la fallada apareix.
Fonts (verificades): alerta de CISA del 27 d'agost del 2026 afegint tres vulnerabilitats explotades al catàleg KEV, entre elles CVE-2026-66384 (JFrog Artifactory, CWE-22): cisa.gov. Alerta de CISA del 2 de setembre del 2026 amb les set addicions que inclouen CVE-2026-82329: cisa.gov. Descripció, CWE-22, vector CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N, nota 5,3, publicació del 12 d'agost, termini federal del 10 de setembre i versions corregides 7.146.35 / 7.161.16 del CVE-2026-66384: fitxa pública del CVE. Anàlisi de watchTowr sobre la join key «fantasma», la cadena buida acceptada com a join key vàlida, l'explotació observada l'1 de setembre contra la seva xarxa d'esquers (quatre dies després del pedaç) i l'enumeració d'usuaris, grups, credencials i accessos federats, recollit a The Hacker News i BleepingComputer (data del pedaç, 28 d'agost del 2026, compilacions corregides i capacitat d'enverinar paquets existents). L'encadenament de les dues fallades, la lectura del vector, la deducció que les branques 7.111 a 7.133 es queden sense pedaç del 5,3 i la distinció entre restaurar i reconstruir són lectura nostra, no dels avisos. Els rangs per branca del 9,8 i el límit inferior 7.111.4 els hem pres d'agregadors públics, no de l'avís original, i no coincideixen entre si en dues branques.
El repositori d'on surten els teus desplegaments també és producció
A everyWAN dissenyem i operem la infraestructura per on passa el programari dels nostres clients: CI/CD a GitLab, contenidors sobre Docker Swarm i Kubernetes, i les còpies amb què es torna enrere. No som resellers de ningú ni venem llicències; mirem què tens, què exposa i què passa el dia que falli.