Computer >> 컴퓨터 >  >> 문제 해결 >> 컴퓨터 유지 보수

긴급 보안 경고: 공식 SAP NPM 패키지 오염 확인 – 개발자 자격 증명 도용 공급망 공격

긴급 보안 경고: 공식 SAP NPM 패키지 오염 확인 – 개발자 자격 증명 도용 공급망 공격

여러 공식 SAP npm 패키지가 TeamPCP 위협 그룹으로 추정되는 공급망 공격(supply-chain attack)에 의해 오염되었으며, 개발자 시스템에서 자격 증명과 인증 토큰을 탈취하는 것이 목적인 것으로 밝혀졌습니다.

보안 연구진에 따르면 이번 침해 사건은 총 4개의 패키지에 영향을 미쳤으며, 해당 버전들은 현재 NPM에서 사용 중단(deprecated) 처리된 상태입니다.

  • @cap-js/sqlite – v2.2.2
  • @cap-js/postgres – v2.2.2
  • @cap-js/db-service – v2.10.1
  • mbt – v1.2.48

이 패키지들은 기업 개발 환경에서 널리 사용되는 SAP의 Cloud Application Programming Model(CAP)과 Cloud MTA를 지원하는 핵심 구성 요소입니다.

악성 'preinstall' 스크립트로 시작되는 공격

Aikido와 Socket의 최신 보고서에 따르면, 오염된 패키지에는 npm 설치 시점에 자동으로 실행되는 악성 'preinstall' 스크립트가 몰래 삽입되어 있었습니다.

이 스크립트는 setup.mjs라는 이름의 로더를 구동해 GitHub에서 Bun JavaScript 런타임을 내려받은 뒤, 이를 이용해 고도로 난독화된 execution.js 페이로드를 실행합니다.

악성코드가 노리는 정보

해당 페이로드는 정보 탈취형(information-stealer) 악성코드로서, 개발자 로컬 머신은 물론 CI/CD 환경까지 폭넓은 범위의 자격 증명을 빼내갑니다.

  • npm 및 GitHub 인증 토큰
  • SSH 키와 개발자 자격 증명
  • AWS, Azure, Google Cloud 등 클라우드 자격 증명
  • Kubernetes 설정 파일과 시크릿(secrets)
  • CI/CD 파이프라인 시크릿 및 환경 변수

CI 러너 메모리 직접 스캔

특히 이 악성코드는 과거 TeamPCP가 공급망 공격에서 자격 증명을 탈취했던 방식과 마찬가지로, CI 러너의 메모리에서 직접 시크릿을 추출하려 시도합니다.

Socket 측은 "CI 러너에서 페이로드는 내장된 파이썬 스크립트를 실행해 Runner.Worker 프로세스의 /proc/<pid>/maps와 /proc/<pid>/mem을 읽어 들인 후, CI 플랫폼이 적용한 모든 로그 마스킹을 우회하면서 러너 메모리에서 'key' :{ 'value': '...', 'isSecret':true} 패턴과 일치하는 모든 시크릿을 곧바로 추출한다"고 설명했습니다.

이어 "이 시크릿 메모리 스캐너는 Bitwarden과 Checkmarx 침해 사건에서 문서화된 것과 구조적으로 완전히 동일하다"고 덧붙였습니다.

'샤이-훌루드' 흔적 – 탈취 데이터의 행방

수집된 데이터는 암호화된 후 피해자 계정 명의의 공개 GitHub 저장소에 업로드됩니다. 이 저장소들의 설명란에는 "A Mini Shai-Hulud has Appeared(미니 샤이-훌루드가 나타났다)"라는 문자열이 담겼으며, 이는 Bitwarden 공급망 공격에서 확인된 "Shai-Hulud: The Third Coming" 문자열과 상당히 유사합니다.

긴급 보안 경고: 공식 SAP NPM 패키지 오염 확인 – 개발자 자격 증명 도용 공급망 공격
"A Mini Shai-Hulud has Appeared"라는 설명으로 생성된 GitHub 저장소
출처: Aikido

악성코드는 또한 GitHub 커밋 검색을 데드드롭(dead-drop) 메커니즘으로 활용해 토큰을 회수하고 추가 접근 권한을 확보합니다.

Aikido 측은 "악성코드는 GitHub 커밋에서 특정 문자열을 검색하고, 일치하는 커밋 메시지를 토큰 데드드롭으로 사용한다"며 "OhNoWhatsGoingOnWithGitHub:<base64> 패턴과 일치하는 커밋 메시지는 디코딩되어 GitHub 토큰으로 변환된 뒤 저장소 접근 권한이 확인된다"고 밝혔습니다.

자기 복제를 통한 확산

이전 공격들과 마찬가지로, 배포된 페이로드에는 다른 패키지로 스스로 번져 나가는(self-propagation) 코드도 포함되어 있습니다.

탈취한 npm 또는 GitHub 자격 증명을 활용해 접근 가능한 다른 패키지와 저장소를 변조하고, 동일한 악성 코드를 주입해 공격을 더 넓은 범위로 확산시킵니다.

TeamPCP와의 연관성, 침해 경위는 미궁

연구진은 중간(medium) 수준의 신뢰도로 이번 공격을 TeamPCP 위협 행위자와 연관 짓고 있습니다. 이들은 Trivy, Checkmarx, Bitwarden을 겨냥한 이전 공급망 공격에서 유사한 코드와 전술을 사용해 왔습니다.

위협 행위자들이 SAP의 npm 게시 프로세스를 어떤 방식으로 침해했는지는 아직 명확하지 않습니다. 다만 보안 엔지니어 아드난 칸(Adnan Khan)은 잘못 구성된 CircleCI 작업을 통해 NPM 토큰이 노출되었을 가능성을 제기했습니다.

BleepingComputer는 npm 패키지가 어떻게 오염되었는지 확인하기 위해 SAP에 입장을 요청했으나, 기사 발행 시점까지 답변을 받지 못했습니다.