
node2shell(CVE-2026-111497)에 대한 고충실도 탐지 메커니즘
Node.js HTTP 애플리케이션에서 CVE-2026-111497을 탐지하기 위한 명령줄 도구입니다.
스캐너는 4개의 1바이트 제어 요청을 전송하여 엔드포인트가 유효한 Brotli JSON, 잘못된 형식의 Brotli, JSON 콘텐츠 타입이 없는 요청, 그리고 지원되지 않는 인코딩을 어떻게 처리하는지 파악합니다. 그런 다음 23,068,764바이트의 Brotli 프로브를 스트리밍하고 유효한 제어 요청을 반복합니다.
대상은 전체 프로브가 유효한 경로-응답 클래스에 도달하고, 잘못된 형식 응답 클래스가 별개이며, 최종 제어 요청이 엔드포인트가 안정적으로 유지되었음을 확인할 때만 취약한 것으로 보고됩니다. 이는 Assetnote의 내부 포스트모듈 탐지 로직과 일치하며 명령을 실행하지 않습니다.
URL 경로는 보존되며 기본값은 /입니다. 리다이렉트는 따라가지 않습니다.
테스트되는 각 엔드포인트는 5개의 1바이트 요청과 1개의 23,068,764바이트 프로브를 수신합니다. 프로브는 Expect: 100-continue를 사용하므로, 프록시가 본문이 업로드되기 전에 광고된 크기를 거부할 수 있습니다.
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url 확인할 단일 URL
-l, --list 호스트 목록이 포함된 파일 (한 줄에 하나씩)
-t, --threads 동시 스레드 수 (기본값: 10)
--timeout 요청당 타임아웃(초) (기본값: 60)
-o, --output 결과 출력 파일 (JSON)
--all-results 취약한 호스트뿐만 아니라 모든 결과 저장
-k, --insecure TLS 인증서 검증 비활성화
-H, --header 사용자 지정 헤더 (여러 번 사용 가능)
-v, --verbose 판정 사유 및 응답 스니펫 표시
-q, --quiet 취약한 호스트만 출력
--no-color 컬러 출력 비활성화
--path 테스트할 사용자 지정 경로 (여러 번 사용 가능)
--path-file 테스트할 경로 목록이 포함된 파일 (한 줄에 하나씩)
결과는 터미널에 출력됩니다. -o를 사용하면 취약한 호스트가 비교 모드 및 마스킹된 요청/응답 증거와 함께 JSON으로 저장됩니다. 모든 판정을 저장하려면 --all-results를 사용하십시오.
Searchlight의 Exposure Platform을 위해 개발된 탐지 로직을 사용하여 Assetnote 보안 연구팀이 제작했습니다.