SOC Prime Bias: High

26 Oct 2026 16:41 UTC

CVE-2026-111497: Node.js Brotli 디코더의 치명적인 Node2Shell 취약점

Author Photo
SOC Prime Team linkedin icon 팔로우
CVE-2026-111497: Node.js Brotli 디코더의 치명적인 Node2Shell 취약점
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Node2Shell은 Node.js에 번들로 포함된 Brotli 디코더에 영향을 미치고 경계를 벗어난 쓰기(out-of-bounds write)에 의해 발생하는 중요한 취약점(CVE-2026-111497)입니다. 공격자는 Brotli 데이터 처리를 수행하는 서비스에 잘못된 압축 스트림을 제공하여 결함을 악용할 수 있으며, 이는 서비스 거부, 메모리 정보 유출, 원격 코드 실행의 가능성을 초래할 수 있습니다. 이 취약점은 Express 5 또는 Brotli 디컴프레션을 자동으로 수행하는 미들웨어를 사용하는 서비스에 특히 위험합니다.

조사

Sysdig 위협 연구팀은 이 취약점을 분석했으며 패치가 발표된 지 몇 시간 만에 공개 PoC가 등장했다고 보고했습니다. Imperva와 Vercel의 연구에 따르면 Linux arm64를 포함한 특정 아키텍처에서 코드 실행이 가능함을 입증했습니다. 조사는 공격자가 제어한 Brotli 스트림을 처리하는 애플리케이션이나 라이브러리(body-parser와 같은)의 존재 여부에 따라 익스플로잇 가능성이 달라진다고 밝혔습니다.

완화

주요 완화 조치는 Node.js를 버전 22.23.4, 24.22.1, 26.12.1로 업그레이드하고 Bun을 버전 1.4.4 이상으로 업데이트하는 것입니다. 조직은 또한 가능한 경우 요청 디컴프레션을 비활성화하여 inflate: false 를 body-parser에 설정해야 합니다. WAF 규칙을 배포하여 신뢰할 수 없는 Content-Encoding: br 요청을 거부하고 비권한 사용자 계정으로 서비스를 실행함으로써 추가적인 방어 층을 제공합니다.

대응

Node.js 프로세스 충돌이나 예기치 않은 프로그램 실행과 같은 잠재적 익스플로잇 체인이 감지되면 보안 팀은 즉시 영향을 받은 워크로드를 격리해야 합니다. 대화형 셸, 승인되지 않은 악성코드 다운로드, 암호화폐 채굴, 비밀과 클라우드 토큰 도난과 같은 사후 익스플로잇 활동을 모니터링해야 합니다. 도달 가능한 취약 서비스를 모두 패치하는 것이 가장 높은 우선순위로 남아야 합니다.

공격 흐름

우리는 이 부분을 업데이트하고 있습니다.

탐지

의심스러운 NodeJS 자식 프로세스 [Windows] (cmdline을 통해)

SOC Prime 팀
2026년 10월 25일

웹 서버를 통한 의심스러운 셸 [Linux] (process_creation을 통해)

SOC Prime 팀
2026년 10월 25일

의심스러운 NodeJS 자식 프로세스 [Linux] (cmdline을 통해)

SOC Prime 팀
2026년 10월 25일

Node.js 프로세스 충돌 후 즉시 프로그램 실행 발견 – Node2Shell 익스플로잇 [Linux 프로세스 생성]

SOC Prime AI 규칙
2026년 10월 25일

시뮬레이션 실행

  • 공격 서사 및 명령: 공격자는 Node.js가 실행 중인 웹 애플리케이션을 타겟으로 합니다. 메모리 손상 오류를 트리거하는 악성 Brotli 압축 페이로드를 전송하여 node 프로세스를 충돌시킵니다. 충돌 직후, 공격자는 하이재킹 된 실행 흐름을 사용하여 /bin/bash 셸을 생성하고 지속성을 수립하며 로컬 정찰을 시작합니다. 이 node 이벤트에 이어 /bin/bash 실행이 발생하는 이 일련의 과정은 selection_crash and selection_suspicious_exec 탐지 규칙의 로직에 맞춰 설계되었습니다.

  • 회귀 테스트 스크립트:

    #!/bin/bash
    # Node2Shell 스타일 익스플로잇 패턴 시뮬레이션
    
    echo "[+] Node2Shell 시뮬레이션 시작..."
    
    # 1. 충돌하거나 갑작스럽게 종료된 Node.js 프로세스를 시뮬레이션
    # 실제 시나리오에서는 충돌입니다. 여기서는 노드 프로세스가 호출/처리되는
    # 상황의 원격 측정을 시뮬레이션합니다.
    node -e "process.exit(1)"
    echo "[+] Node.js 프로세스 '충돌'(종료 코드 1)했습니다."
    
    # 2. 의심스러운 셸의 즉각적인 실행 시뮬레이션
    # 충돌 후 셸을 트리거하는 페이로드를 모방합니다.
    /bin/bash -c "echo '익스플로잇 성공: 셸 생성됨'"
    
    echo "[+] 시뮬레이션 완료. SIEM에서 탐지를 확인하십시오."
  • 정리 명령:

    # 이 시뮬레이션으로 생성된 지속 파일은 없습니다.
    # 단순히 불량 bash 프로세스가 실행 중이지 않은지 확인하십시오.
    pkill -f "익스플로잇 성공"