Programari maliciós CanisterWorm
Un sofisticat atac a la cadena de subministrament que inicialment tenia com a objectiu l'escàner Trivy, àmpliament utilitzat, ha escalat fins a convertir-se en un compromís més ampli que afecta nombrosos paquets npm. Els actors amenaçadors que hi ha darrere de la campanya són sospitosos d'haver desplegat un cuc autopropagador indocumentat anteriorment conegut com a CanisterWorm, cosa que augmenta significativament l'escala i l'impacte de la intrusió.
El programari maliciós deriva el seu nom de l'ús d'un contenidor d'Internet Computer Protocol (ICP), contractes intel·ligents resistents a manipulacions allotjats en una cadena de blocs descentralitzada, com a part de la seva infraestructura de comandament. Això marca el primer cas documentat públicament de contenidors ICP utilitzats com a arma per recuperar punts finals de comandament i control (C2), introduint una tàctica nova i resilient que complica els esforços tradicionals de mitigació.
Taula de continguts
Paquets compromesos i vector d’accés inicial
L'atac ha afectat diversos paquets npm en diferents àmbits, demostrant un ampli radi d'explosió dins de la cadena de subministrament de programari:
- 28 paquets sota l'abast d'@EmilGroup
- 16 paquets sota l'àmbit @opengov
- Paquets addicionals que inclouen @teale.io/eslint-config, @airtm/uuid-base32 i @pypestream/floating-ui-dom
Aquesta campanya segueix de prop un compromís de credencials que va permetre als atacants publicar versions malicioses d'eines relacionades amb Trivy, concretament trivy, trivy-action i setup-trivy, que contenien una funcionalitat integrada de robatori de credencials. Es creu que l'operació està vinculada a un grup de ciberdelinqüents centrat en el núvol identificat com a TeamPCP.
Flux de treball d’infeccions i infraestructura de comandament descentralitzada
La cadena d'infecció comença durant el procés d'instal·lació del paquet npm, on un script de postinstal·lació executa un carregador. Aquest carregador desplega una porta del darrere basada en Python dissenyada per comunicar-se amb el canister ICP. El canister actua com a un resolutor de dead drop, retornant una URL que dirigeix el sistema infectat a descarregar i executar la càrrega útil de la següent etapa.
La naturalesa descentralitzada de la infraestructura ICP proporciona un avantatge significatiu als atacants. Com que el canister pot actualitzar dinàmicament l'URL de la càrrega útil, els actors d'amenaces poden distribuir nous binaris maliciosos a tots els sistemes infectats sense modificar el programari maliciós implementat. Aquesta arquitectura també fa que els esforços d'eliminació siguin considerablement més difícils.
Mecanisme de persistència i tècniques furtives
La persistència s'aconsegueix mitjançant la creació d'un servei d'usuari systemd configurat per reiniciar automàticament el procés maliciós. Les característiques clau inclouen:
- Reinici automàtic aplicat mitjançant la directiva Restart=always
- Un retard de 5 segons abans de rellançar la porta del darrere si es tanca
- Disfressant el servei com a programari de monitorització PostgreSQL legítim sota el nom 'pgmon'
Aquest enfocament garanteix un funcionament continu alhora que minimitza la probabilitat de detecció mitjançant la integració amb serveis legítims del sistema.
Lliurament de càrrega útil adaptatiu i comportament del commutador de detenció
La porta del darrere es comunica periòdicament amb el canister ICP cada 50 minuts, utilitzant un agent d'usuari del navegador falsificat per evitar sospites. L'URL retornada determina la següent acció:
- Si l'URL apunta a una càrrega útil vàlida, el programari maliciós la descarrega i l'executa.
- Si l'URL conté "youtube.com", el programari maliciós entra en un estat inactiu.
Aquest mecanisme serveix efectivament com un interruptor de detenció remot. En alternar l'URL del contenidor entre un enllaç benigne de YouTube i una càrrega útil maliciosa, l'atacant pot activar o desactivar el programari maliciós en tots els sistemes infectats. Cal destacar que les càrregues útils executades anteriorment continuen executant-se en segon pla, ja que el programari maliciós no finalitza els processos anteriors.
També s'ha observat un interruptor de desactivació similar basat en YouTube en un binari Trivy troià (versió 0.69.4), que es comunica amb la mateixa infraestructura ICP a través d'un dropper Python separat.
Capacitats dels cucs i propagació automatitzada
Inicialment, la propagació es basava en un script executat manualment anomenat deploy.js, que aprofitava els tokens d'autenticació npm robats per injectar codi maliciós als paquets accessibles. Aquest script no s'activava durant la instal·lació, sinó que servia com a eina independent per ampliar l'abast de l'atac.
Les variants posteriors de CanisterWorm han evolucionat significativament. En versions més noves, com les que es troben a @teale.io/eslint-config (versions 1.8.11 i 1.8.12), el cuc incorpora l'autopropagació directament al procés d'instal·lació del paquet. El mecanisme actualitzat inclou:
- Extracció de tokens d'autenticació npm de l'entorn infectat
- Execució immediata de la rutina de propagació com a procés en segon pla separat
- Publicació automatitzada de paquets compromesos utilitzant credencials recollides
Aquest canvi transforma l'atac d'una campanya operada manualment a un sistema de propagació totalment autònom.
Escalada a una amenaça autosuficient de la cadena de subministrament
La introducció de la recol·lecció automatitzada de tokens i l'autopropagació marca una escalada crítica. Qualsevol estació de treball de desenvolupador o pipeline de CI/CD que instal·li un paquet compromès i que contingui credencials npm accessibles es converteix en un node de propagació actiu. Això crea un efecte en cascada en què els paquets infectats provoquen més infeccions a través de les dependències posteriors.
En aquesta etapa, l'amenaça evoluciona més enllà del compromís aïllat d'un compte cap a un ecosistema autosostenible de distribució de programari maliciós. Cada entorn recentment infectat contribueix a la propagació, permetent un creixement exponencial i dificultant significativament la contenció.
Per agreujar la preocupació, les proves d'artefactes com ara una càrrega útil de marcador de posició ("hello123") indiquen que els atacants estan refinant i validant activament la cadena d'atac abans de desplegar binaris maliciosos completament operatius.