
CVE-2026-96889에 대한 오프라인 Sharp / librsvg 증거 검사기. Sharp 및 librsvg 버전과 빌드 증거. 독립 실행형 Python; JSON/CSV/HTML 보고서; 익스플로잇 페이로드 없음.
Sharp를 통해 사용되는 librsvg 메모리 취약점인 CVE-2026-96889 / GHSA-wq5f-xc86-pv6w에 대한 오프라인 증거 검사기입니다. 사용자가 보고한 버전, 출처 및 구성을 분류하며, 실행 중인 시스템을 검사하지는 않습니다.
이 검사기는 선택된 네이티브 라이브러리, 보고된 버전, 출처, 플랫폼, libc, SVG 입력 경로 및 하드닝을 분리하여 유지합니다. Sharp를 임포트하거나, 애플리케이션을 실행하거나, 이미지를 디코딩하거나, 프로브를 전송하거나, 도달 가능성을 테스트하거나, 침해를 탐지하지 않습니다. 모든 결과는 exploitability: not_tested를 유지합니다.
결과는 검증된 런타임 상태가 아닌 제공된 증거를 설명합니다. 평가 권한이 있는 자산에만 검사기를 사용하고, 실제 인벤토리와 보고서는 버전 관리 외부에 보관하십시오.
python3 또는 버전이 지정된 실행 파일을 사용하십시오. python --version은 3.10 이상을 보고해야 합니다.sharp_rsvg_rce_check.py. 패키지, Node.js, 동반 파일 또는 네트워크 액세스가 필요하지 않습니다.python sharp_rsvg_rce_check.py --sharp-version 0.35.4 --library-source bundled --sharp-build-source upstream
python sharp_rsvg_rce_check.py --sharp-version 0.35.5 --library-source bundled --sharp-build-source upstream
python sharp_rsvg_rce_check.py --library-source global --librsvg-version 2.63.2 --librsvg-build-source upstream
python sharp_rsvg_rce_check.py --inventory examples/inventory.json --format json
python sharp_rsvg_rce_check.py --inventory examples/inventory.json --format html --output report.html
처음 두 명령은 아래의 공식 Sharp 번들과 보고된 수정 버전을 평가하고, 세 번째 명령은 독립적으로 보고된 전역 librsvg를, 마지막 두 명령은 합성 인벤토리를 평가합니다. examples/inventory.json은 합성 데이터입니다. --output이 없으면 보고서는 stdout에 출력됩니다(기본값은 JSON).
합성 예제 보고서 열기. 예제 데이터일 뿐이며, 실제 평가가 아닙니다. 미리보기 이미지는 해당 예제의 스크린샷이며, 실제 시스템의 출력이 아닙니다.
전체 옵션 목록은 python sharp_rsvg_rce_check.py --help를 실행하여 확인하십시오. 인벤토리, 하나 이상의 보고된 버전 또는 명시적 어댑터 파일을 제공해야 합니다:
--inventory FILE, 범위가 제한된 스키마 v1 JSON 인벤토리입니다. 자산별 옵션과 함께 사용할 수 없습니다.--sharp-version, --librsvg-version, --library-source, --platform, --libc, --node-pie, --svg-decoder, --untrusted-svg와 같은 자산별 옵션과 함께 보고된 버전을 지정합니다. --sharp-version과 --librsvg-version은 반복 지정할 수 있어, 상충하는 관측값이 병합되지 않고 보존됩니다.--evidence-root도 필요합니다(로컬 메타데이터 및 소스 어댑터 참조).어떤 디렉터리도 암묵적으로 스캔되지 않습니다. 필드 값, 범위 및 인벤토리 형식은 참조 문서와 인벤토리 스키마에 있습니다.
--library-source bundled는 배포된 프로세스가 공식 Sharp 번들을 사용하는 것으로 보고되었음을 의미합니다.--sharp-build-source upstream은 운영자의 주장이며, 검증된 출처가 아닙니다.--librsvg-version, --librsvg-build-source)와 함께 --library-source global을 사용하십시오.| 상태 | 의미 |
|---|---|
unknown | 선택, 정확한 버전, 출처 또는 지원되는 규칙 범위로는 선택된 구성 요소의 패치 상태를 확립할 수 없습니다. |
potentially_affected | 보고된 공식 Sharp 번들이 수정 버전 미만입니다. 런타임 조건은 별개이며, 이는 익스플로잇 가능성을 확인하는 것이 아닙니다. |
precondition_present | 해당 영향받는 번들과 운영자가 보고한 조건이 문서화된 가능한 RCE 조건과 일치합니다. 실시간 검증은 수행되지 않았습니다. |
mitigated_configuration | 영향받는 번들이 기록된 상태에서 운영자가 효과적인 SVG 차단 또는 Node PIE를 보고합니다. 이는 패치되었거나 안전한 결과가 아닙니다. |
fixed_version_reported | 선택된 구성 요소가 검토된 교정 임계값을 충족합니다. 이는 배포된 바이너리나 패치 세트를 입증하지 않습니다. |
선택된 구성 요소의 버전 평가는 플랫폼, 사전 조건 및 완화 차원과 별개입니다. fixed_version_reported는 보고된 버전에 대한 결과로, 검증된 배포 패치도 안전 보장도 아니며, potentially_affected는 확인된 익스플로잇 가능성이 아닙니다. 전역 결과는 설치된 Sharp 패키지가 아니라 독립적으로 제공된 네이티브 라이브러리를 분류합니다.
libc 또는 PIE가 누락된 경우 사전 조건 차원에서 unknown으로 남습니다. 비-glibc 플랫폼이거나 신뢰할 수 없는 입력 경로가 없다고 보고된 경우에도 근본적인 메모리 버그가 해소되지는 않습니다. PIE는 문서화된 RCE 조건을 다루며, 다른 메모리 손상 영향은 남을 수 있습니다.
운영상 실패(종료 코드 2)는 평가 결과와 구별됩니다.
| 종료 코드 | 의미 |
|---|---|
0 | 완료되었으며 활성화된 게이트와 일치하는 항목이 없음. 알 수 없는 증거는 기본적으로 실패 처리되지 않음. |
1 | --fail-on-finding이 영향을 받는 버전과 일치함, 포함 mitigated_configuration, 패치 검토가 여전히 필요하기 때문; 또는 --fail-on-unknown이 알 수 없는 버전 평가 또는 영향을 받는 버전의 미해결 조건과 일치함. 두 게이트는 독립적임. |
2 | 인수, 입력 또는 출력 오류, 하드 제한 또는 스키마 검증 실패. |
130 | 중단됨. 보고서를 작성할 수 있는 경우 완료된 자산은 complete=false로 보존됨. |
완전한 보고서가 게시된 후의 중단은 해당 보고서를 보존하고 130으로 종료됨. 중단으로 인해 파일 게시 여부가 불확실해지면 검사기는 재시도 없이 130으로 종료됨; 진단 정보가 게시 성공 여부를 확립하지 못하므로 재시도 전에 출력을 검사해야 함. stdout 게시가 시작되면 중단으로 인해 부분 문서가 남을 수 있으며, 두 번째 보고서는 추가되지 않음.
유지관리자 권고 및 GitHub 권고 기록은 2026-10-24에 검토되었음.
| 증거 | 구현된 비교 |
|---|---|
| 공식 Sharp 번들 | 0.35.5 미만의 안정적인 0.x는 잠재적으로 영향받음; 0.35.x 내의 0.35.5+는 보고된 수정 버전임. 향후 릴리스 라인은 이 스냅샷에서 알 수 없는 상태로 유지됨. |
| 글로벌 librsvg | 2.63.x 내의 독립적인 업스트림 2.63.2+가 보고된 해결책임. 이전 버전은 벤더 검토가 필요한 알 수 없는 상태로 유지됨: 권고는 별도의 네이티브 라이브러리 영향 범위 하한 없이 수정 버전을 명시함. |
| 벤더/커스텀/알 수 없는 빌드 출처 | 알 수 없음; 업스트림 패키지 번호는 백포트 또는 커스텀 패치 세트를 확립하지 못함. |
유효한 VipsForeignLoadSvg 차단 | 별도의 디코더 완화 주장. |
| PIE로 컴파일된 Node 실행 파일 | 별도의 RCE 완화 주장; 라이브러리 패치가 아님. |
잘못된 형식, 상충, 한정, 프리릴리스 및 범위 밖의 향후 버전은 알 수 없는 상태로 유지됨. 상충하는 Sharp/네이티브 라이브러리 관찰도 알 수 없는 상태로 유지됨. 내장된 스냅샷에는 업데이터가 없으며 런타임 평가는 규칙 업데이트를 가져오지 않음; 해결책은 현재 벤더 지침을 참조할 것. 규칙 출처는 방법론을 참조.
python sharp_rsvg_rce_check.py --npm-lock examples/package-lock.example.json --evidence-root examples
python sharp_rsvg_rce_check.py --source examples/source.example.js --evidence-root examples --format html
python sharp_rsvg_rce_check.py --node-elf path/to/node --evidence-root path/to
python sharp_rsvg_rce_check.py --sbom path/to/bom.json --evidence-root path/to
반복 가능한 --npm-lock, --sbom, --node-elf 및 --source 옵션은 --evidence-root를 필요로 합니다. 선택된 파일은 해당 디렉터리 내에서 확인되어야 하며, 보고서의 경로는 상대 경로입니다. 이들은 기존 인벤토리 또는 버전 입력과 함께 사용될 수 있지만, 별도의 생성된 adapter-* 자산 레코드를 생성합니다. 생성된 식별자는 제공된 인벤토리 ID와 충돌해서는 안 됩니다. 디렉터리 검색, 패키지 관리자 작업, 애플리케이션 가져오기, 네이티브 실행 또는 이미지 디코딩은 발생하지 않습니다.
모든 어댑터 결과는 not_tested 악용 가능성과 함께 unknown으로 유지됩니다. 메타데이터는 배포된 네이티브 라이브러리 선택이나 게시자 패치 출처를 식별할 수 없습니다. 메타데이터는 운영자 사전 조건을 채우거나, 별도의 버전 평가를 변경하거나, 효과적인 완화를 입증하지 않습니다. 기존 스키마 1.0 증거 계약은 이러한 관찰을 인벤토리/소스 증거 및 위치로 전달하며, JSON, CSV 및 HTML은 동일한 검증된 레코드를 사용합니다.