SAP npm 패키지, CI/CD 파이프라인 공격에 노출!
SAP의 npm 패키지 4종(cap-js/sqlite, cap-js/postgres, cap-js/db-service, mbt)이 악성코드에 감염되어 공급망 공격(Supply Chain Attack)에 활용됨
공격자는 CI/CD 파이프라인(CI/CD Pipeline)을 악용하여 GitHub, npm, AWS/Azure/GCP 토큰 탈취 시도
탈취된 토큰으로 피해자 레포지토리에 악성 코드를 커밋하고, VS Code 설정 파일 변조를 통해 지속적인 공격(Persistent Attack)을 시도
SLSA 증명(SLSA Attestations) 부재를 통해 악성 패키지 식별 가능하며, 즉각적인 토큰 로테이션(Token Rotation) 권고
CI/CD 파이프라인을 이용한 공격 방식
공격자는 SAP의 npm 패키지에 악성 preinstall hook을 삽입하여, 패키지 설치 시 GitHub, npm, 클라우드(AWS/Azure/GCP) 자격 증명을 탈취했다. 특히, CI/CD 파이프라인을 우회하여 OIDC 토큰을 획득하고 npm에 직접 게시하는 방식을 사용했다. 이는 일반적인 릴리스 파이프라인을 무력화하고, 지속적인 악성코드 배포(Malicious Code Distribution)를 가능하게 했다.
탈취된 토큰을 활용한 추가 공격
탈취된 GitHub 토큰을 사용하여 피해자의 레포지토리에 악성 코드를 커밋하고, VS Code의 tasks.json 파일을 변조하여 프로젝트를 열 때마다 공격을 재실행하도록 했다. 이러한 방식은 지속적인 공격(Persistent Attack)을 가능하게 하며, 개발 환경을 장악하여 추가적인 피해를 유발할 수 있다. 특히, 데이터 미저장 정책(Zero-Retention Policy)을 사용하지 않는 경우, 공격 흔적을 찾기 어려울 수 있다.
SLSA 증명 부재를 통한 악성 패키지 식별
악성 패키지는 SLSA(Supply chain Levels for Software Artifacts) 증명이 없다는 점을 통해 식별할 수 있다. SLSA는 소프트웨어 공급망의 무결성을 보장하기 위한 프레임워크로, 증명 부재는 패키지의 신뢰성을 의심할 수 있는 중요한 지표가 된다. 따라서, 패키지 사용 시 SLSA 증명 여부를 확인하고, 의심스러운 경우 즉시 토큰을 로테이션(Token Rotation)하는 것이 중요하다.
공급망 공격의 광범위한 영향
이번 공격은 npm 생태계뿐만 아니라, GitHub Actions, 클라우드 환경까지 광범위한 영향을 미칠 수 있다. 특히, 데이터 격리 아키텍처(Data Isolation Architecture)가 제대로 구축되지 않은 경우, 공격자는 탈취한 자격 증명을 통해 시스템 전체에 접근할 수 있다. 따라서, 공급망 공격에 대한 대비는 개별 패키지뿐만 아니라, 전체 시스템의 보안 설계를 강화하는 방향으로 이루어져야 한다.