La filtració de secrets no sempre té a veure amb codi incorrecte o biblioteques vulnerables. De vegades, tot es redueix a com gestionem els secrets durant les execucions de CI, i la CVE-2025-30066 és un exemple de llibre de text de com això pot anar malament. L'acció de GitHub tj-actions/changed-files, àmpliament utilitzada per detectar fitxers modificats en pull requests, es va convertir en un canal silenciós per a filtracions secretes. Això és el que va passar i com podeu bloquejar el vostre CI/CD secrets pipeline.
Què va passar a la CVE-2025-30066?
A mitjans de març de 2025, tj-actions/changed-files va quedar compromès. L'atacant va reescriure les etiquetes de versió existents (fins a la v45.0.7) per apuntar a un fitxer maliciós. commitAixò va alterar el comportament de l'acció sense que els desenvolupadors se n'adonessin; no es va publicar cap versió nova, només manipulació d'etiquetes invisibles.
La càrrega útil era senzilla però perillosa: extreia un script Python remot codificat en Base64 que escanejava la memòria de l'executor per obtenir credencials, abocant-les als registres o exfiltrant-les. No es tractava d'un defecte de codi lògic a les accions/fitxers modificats (tj-actions/changed-files); era un abús de com es pot produir una filtració de secrets dins dels fluxos de treball de CI mitjançant aquesta acció reutilitzable. El CVE-2025-30066 no tractava de desbordaments de memòria intermèdia; es tractava d'un error de disseny de CI que permetia la filtració de secrets.
Impacte: Qualsevol repositori que utilitzés les versions afectades de tj-actions/changed-files corria el risc de filtracions secretes, sobretot si els tokens o fitxers sensibles es gestionaven de manera insegura en patrons de fitxers o sortides de CI.
Per què això afecta els fluxos de treball que depenen d'accions reutilitzables
Fluxos de treball de DevSecOps depenen en gran mesura de les accions tj/fitxers modificats per:
- Automatitzar pull request Xecs
- Identifica els fitxers modificats en rutes específiques
- Eviteu tasques de CI redundants
Però aquests fluxos de treball sovint passen per alt una cosa: com els patrons globals poden incloure dades sensibles. Els desenvolupadors assumeixen que les accions tj/fitxers modificats es comporten de manera segura per defecte. Tanmateix, si feu servir els patrons globals configuracions/** i els secrets s'emmagatzemen a configs/secrets.env, acabes d'afegir un fitxer secret a les sortides o registres de CI. Això no és un error a l'acció; és un CI/CD fallada de disseny que condueix a filtracions secretes. La CVE-2025-30066 n'és un clar exemple.
Com va passar la filtració secreta (anàlisi de vulnerabilitats)
Desxifrem l'error central que hi ha darrere de la CVE-2025-30066:
- Patrons globulosos com ara **/*.env fitxers secrets coincidents sense voler
- tj-actions/changed-files tractava aquests secrets com a fitxers modificats
- Els secrets van acabar en sortides de passos, registres o treballs posteriors
Això va passar perquè els secrets s'emmagatzemaven en camins controlats per versions (mala idea) i la configuració de CI no els excloïa explícitament del globalització (també dolent). Per tant, no és un error de codi, sinó una mala higiene del disseny de CI que causa fuites de secrets amb sortides de tj-actions/changed-files.
Camí pràctic d'explotació: de la feina de CI a l'exposició de credencials
Exemple de configuració de CI que ha provocat una filtració de secrets a través de tj-actions/changed-files:
If configs/secrets.env canviat:
- Va ser marcat per tj-actions/changed-files
- Es va incloure en passos.canviats.sortides.tots_els_fitxers_canviats
- Els passos posteriors ho van registrar o ho van passar a scripts, filtrant secrets.
Aquesta filtració va passar perquè la lògica de CI tractava els secrets com a fitxers normals. Aquí és on comença la filtració de secrets, no a causa d'un desbordament de memòria intermèdia, sinó d'un mal ús de les accions tj/fitxers modificats en un disseny de CI defectuós.
La propagació es produeix amb sortides com ara:
If secrets.env és en aquesta llista, el seu nom de fitxer i possiblement el seu contingut poden aparèixer als registres de compilació. Fins i tot la lògica condicional com ara:
Pot exposar artefactes sensibles. Això és un CI/CD una fallada de disseny que permet una filtració secreta, no una falla en el codi d'acció.
Com utilitzar fluxos de treball reutilitzables de manera segura i evitar fuites
No cal abandonar les accions tj/fitxers modificats. Hauries d'utilitzar accions reutilitzables amb una mentalitat que prioritzi els secrets:
Millors pràctiques per a la gestió de secrets
- No controlis mai les versions secretes
- Evita els patrons globals que coincideixin amb camins sensibles
- Utilitza secrets basats en l'entorn (GITHUB_ENV, voltes, secrets de GitHub)
CI/CD Configuració Guardrails
- Fixeu sempre les accions a SHA immutables, no a etiquetes (no utilitzeu mai @v45)
- Tracta la sortida de tj-actions/changed-files com a contaminada, saneja-la o filtra-la
- Estableix les sortides només si estan sanejades
⚠️ Exemple no segur:
L'anterior és exactament l'ús indegut que hi ha darrere de la filtració secreta i la CVE-2025-30066.
Alternativa segura:
Fent això, evites el CI/CD Error de disseny que condueix a filtracions secretes a través d'accions tj/fitxers modificats.
Addicionalment:
- Desactiva o restringeix el registre on poden aparèixer secrets
- Utilitza les funcions d'emmascarament secret de GitHub
- Limitar l'accés als registres i artefactes de compilació
Llista de comprovació d'ús de Quick Secrets-Safe CI
| Millors pràctiques |
|---|
| No emmagatzemar secrets en fitxers controlats per versions |
| Utilitzeu voltes o secrets de GitHub per a les credencials |
| Fixa sempre les accions tj/fitxers modificats a SHA immutables |
| Filtrar o sanejar les sortides de les accions tj/fitxers modificats |
| No incloure mai camins secrets en patrons globals |
| Emmascarar o restringir els registres que poden exposar dades sensibles |
| Audita les configuracions de CI heretades sovint |
El paper de Xygeni: aplicació de secrets de CI a escala
Xígeni assegura CI/CD pipelinecentrant-se en com es gestionen, s'utilitzen i s'exposen els secrets al món real Fluxos de treball de DevOps. No es tracta només d'escanejar codi; es tracta d'aplicar les millors pràctiques de gestió de secrets a través de la implementació en directe. pipeline anàlisi.
Detecció d'ús de sortida no segura
- Escaneja les accions de GitHub per a usos de echo, run i sortides on ${{ steps.*.outputs.* }} pot incloure valors sensibles
- Identifica quan es fa referència o s'imprimeixen secrets directament, intencionadament o per error.
Monitorització de secrets filtrats
- Detecta valors d'alta entropia (claus API, tokens) dins dels registres i les sortides de passos
- Activa alertes quan apareixen secrets a pipeline registres, fins i tot si estan emmascarats aigües avall
Ús d'accions mal configurades
- Fa un seguiment de totes les accions de GitHub a pipelines per detectar l'ús de versions compromeses (per exemple, tj-actions/changed-files@v45)
- Audita els patrons de coincidència de fitxers que inclouen possibles secrets com ara **/*.env, *.key o .env.*
CI basat en polítiques Guardrails
- Força la fixació SHA per a accions de tercers
- Bloqueja l'ús de globus de fitxers no segurs que podrien incloure secrets als registres.
- Prevé pipelines d'emetre valors sensibles com a part dels resultats del flux de treball
En tractar els fluxos de treball com a part de la vostra superfície d'amenaces, Xygeni garanteix que la higiene secreta no sigui només una pràctica recomanada, sinó una defensa integrada.
Conclusió: una filtració secreta pot començar amb una simple acció i un mal ús
El CVE-2025-30066 no era un error de biblioteca; era un CI/CD error de disseny derivat de l'ús inadequat de les accions tj/fitxers modificats. Què haurien d'extreure els equips de DevSecOps:
- Tracta cada referència global/de fitxer a CI com un possible punt de fuita
- Auditar regularment els fluxos de treball per detectar la inclusió accidental de secrets
- Feu servir voltes segures o secrets d'entorn, no registreu mai secrets al control de versions.
- Sanejar o filtrar totes les sortides del flux de treball
- Registra l'activitat sensible del flux de treball per mantenir l'auditabilitat
La integració continua és codi. Els fluxos de treball són codi. Els registres i les sortides són codi. Protegiu els vostres secrets a cada pas o arrisqueu-vos a un escenari de filtració secreta que no necessita un hacker, només un mal informat. CI/CD elecció de disseny.





