Som følge af kompromittering af release-processen baseret på GitHub Actions i Red Hat-ejede RedHatInsights-repositorierne formåede angriberne at offentliggøre 64 ondsindede versioner i NPM-kataloget, der dækkede 32 NPM-pakker til Red Hat Cloud Services-platformen. For hver af de berørte NPM-pakker blev der udgivet to ondsindede versioner, hvor der blev integreret kode til at aktivere en ny variant af ormen mini-shai-hulud, der udfører søgninger efter tokens og legitimationsoplysninger i det nuværende miljø.
Ormen blev placeret i filen index.js og blev aktiveret gennem en preinstall-handler, der blev kaldt under installationen af den berørte pakke. Efter aktivering søgte ormen i systemet efter tokens til NPM (~/.npmrc), PyPI, CircleCI, AWS, GCP, Docker, Azure, HashiCorp og KubernetesK8s samt private SSH-nøgler. De fundne data blev sendt til angriberne. Hvis et token til forbindelse til NPM-kataloget blev opdaget, offentliggjorde ormen automatisk nye ondsindede udgivelser for pakker, der blev udviklet i det nuværende miljø, og angreb afhængighedstræet.
Adgang til GitHub Actions blev opnået som følge af kompromittering af en af Red Hat-medarbejdernes konto, hvilket gjorde det muligt for angriberne at sende commits direkte til repositorierne javascript-clients, frontend-components og platform-frontend-ai-toolkit uden at gennemgå en revisionsfase. Gennem commits til det kontinuerlige integrationssystem blev filen ci.yaml indsat, som ved kørsel af byggearbejdet kørte et script _index.js ved hjælp af bun-platformen. Scriptet brugte beføjelsen 'id-token: write' til at anmode GitHub om et OIDC-token (OpenID Connect), som derefter blev brugt til autentificering i NPM ved hjælp af mekanismen 'trusted publishing'.
NPM-pakker, der indeholder ondsindet kode:
- @redhat-cloud-services/chrome (2.3.1, 2.3.2)
- @redhat-cloud-services/compliance-client (4.0.3, 4.0.4)
- @redhat-cloud-services/config-manager-client (5.0.4, 5.0.5)
- @redhat-cloud-services/entitlements-client (4.0.11, 4.0.12)
- @redhat-cloud-services/eslint-config-redhat-cloud-services (3.2.1, 3.2.2)
- @redhat-cloud-services/frontend-components (7.7.2, 7.7.3)
- @redhat-cloud-services/frontend-components-advisor-components (3.8.2)
- @redhat-cloud-services/frontend-components-config (6.11.3, 6.11.4)
- @redhat-cloud-services/frontend-components-config-utilities (4.11.2, 4.11.3)
- @redhat-cloud-services/frontend-components-notifications (6.9.2, 6.9.3)
- @redhat-cloud-services/frontend-components-remediations (4.9.2, 4.9.3)
- @redhat-cloud-services/frontend-components-testing (1.2.1, 1.2.2)
- @redhat-cloud-services/frontend-components-translations (4.4.1, 4.4.2)
- @redhat-cloud-services/frontend-components-utilities (7.4.1, 7.4.2)
- @redhat-cloud-services/hcc-feo-mcp (0.3.1, 0.3.2)
- @redhat-cloud-services/hcc-kessel-mcp (0.3.1, 0.3.2)
- @redhat-cloud-services/hcc-pf-mcp (0.6.1, 0.6.2)
- @redhat-cloud-services/host-inventory-client (5.0.3, 5.0.4)
- @redhat-cloud-services/insights-client (4.0.4, 4.0.5)
- @redhat-cloud-services/integrations-client (6.0.4, 6.0.5)
- @redhat-cloud-services/javascript-clients-shared (2.0.8, 2.0.9)
- @redhat-cloud-services/notifications-client (6.1.4, 6.1.5)
- @redhat-cloud-services/patch-client (4.0.4, 4.0.5)
- @redhat-cloud-services/quickstarts-client (4.0.11, 4.0.12)
- @redhat-cloud-services/rbac-client (9.0.3, 9.0.4)
- @redhat-cloud-services/remediations-client (4.0.4, 4.0.5)
- @redhat-cloud-services/rule-components (4.7.2, 4.7.3)
- @redhat-cloud-services/sources-client (3.0.10, 3.0.11)
- @redhat-cloud-services/topological-inventory-client (3.0.10, 3.0.11)
- @redhat-cloud-services/tsc-transform-imports (1.2.2)
- @redhat-cloud-services/types (3.6.1, 3.6.2, 3.6.4)
- @redhat-cloud-services/vulnerabilities-client (2.1.8, 2.1.9)
Kilde: opennet.ru
