피드로 돌아가기
Hacker NewsSecurity
원문 읽기
npm prepare 스크립트를 악용한 RCE 백도어 분석 및 탐지
A backdoor in a LinkedIn job offer
AI 요약
Context
채용 제안을 가장하여 외부 GitHub 저장소 코드 리뷰를 유도하는 사회 공학적 공격 시나리오. npm install 시 자동으로 실행되는 라이프사이클 훅을 통해 로컬 환경에 임의 코드를 실행하는 Remote Code Execution(RCE) 구조 설계.
Technical Solution
- package.json의 prepare 스크립트에 app:pre 설정을 추가하여 npm install 완료 후 즉시 node app/index.js가 실행되는 트리거 설계
- app/index.js에서 require('./test')를 호출하여 테스트 파일로 위장한 백도어 모듈 app/test/index.js를 메모리에 로드
- 하드코딩된 문자열 파편을 조합하여 C2 서버 URL(rest-icon-handler.store)을 동적으로 구성함으로써 정적 분석 탐지 회피
- 서버로부터 수신한 페이로드를 즉시 실행하는 동적 코드 실행 로직을 주석 처리된 테스트 코드 사이에 은닉
- 실제 개발자의 Identity를 도용하여 Commit History를 조작함으로써 저장소의 신뢰도를 높이는 기만 전략 적용
실천 포인트
- 신뢰할 수 없는 외부 저장소 분석 시 local 환경이 아닌 격리된 VPS 기반 Sandbox 환경 구축 - npm install 실행 전 package.json의 scripts 필드 내 prepare, preinstall 등 라이프사이클 훅 존재 여부 확인 - 코드 리뷰 시 Read-only 모드로 설정된 AI 에이전트를 활용하여 패턴 기반의 의심 코드 신속 탐색 - 단순한 파일 탐색을 넘어 런타임에 동적으로 생성되는 URL 및 외부 네트워크 요청 로직 집중 검토