Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
multiparty-CVE-2026-8161 — CVE-2026-8161の概念実証エクスプロイト。multiparty multipartパーサーにおけるサービス拒否(DoS)の脆弱性であり、プロトタイプ汚染が未捕捉の例外とクラッシュを引き起こすことを実証します。 | Kitploit
ツール/GitHubGitHub/ser0n-ath/multiparty-cve-2026-8161
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ
GitHubser0n-ath/multiparty-cve-2026-8161

multiparty-CVE-2026-8161

CVE-2026-8161の概念実証エクスプロイト。multiparty multipartパーサーにおけるサービス拒否(DoS)の脆弱性であり、プロトタイプ汚染が未捕捉の例外とクラッシュを引き起こすことを実証します。

リポジトリを見る
3ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-8161

CVE-2026-8161(Multiparty)の概念実証

説明

[email protected] 以前のバージョンは、捕捉されない例外によるサービス拒否(DoS)に対して脆弱です。

パーサーはアップロードされたフィールドとファイルをプレーンな JavaScript オブジェクトに格納し、パーサーが所有するキーと継承されたオブジェクトプロパティを安全に区別しません。巧妙に細工された multipart フィールド名により、パーサーが予期しないプロトタイプチェーン値を読み取り、アップロード処理中にクラッシュする可能性があります。

脆弱なバージョンの multiparty を通じて multipart アップロードを受け入れるサービスは、影響を受ける可能性があります。

仕組み

この問題は、fields と files がプレーンな JavaScript オブジェクトである一方、ユーザーが制御する名前のための安全なキーと値のマップとして使用されているために発生します。

root@kitploit:~
var fieldsArray = fields[name] || (fields[name] = [])
fieldsArray.push(value)

var filesArray = files[name] || (files[name] = [])
filesArray.push(file)

問題は、fields[name] と files[name] が通常の JavaScript プロパティルックアップを使用していることです。プレーンなオブジェクトの場合、このルックアップはオブジェクト自体に格納された値のみではなく、プロトタイプチェーンから継承されたプロパティを返す可能性があります。

name が __proto__ の場合、JavaScript はプロトタイプチェーンを通じてそれを解決し、undefined の代わりに継承されたプロトタイプオブジェクトを返すことができます。その値は truthy であるため、フォールバックの代入はスキップされ、パーサーはそのフィールドに対して実際の配列を作成しません。

このパッチは、オブジェクトに直接属するキーのみを信頼することでこの問題を修正します:

root@kitploit:~
var filesArray = Object.prototype.hasOwnProperty.call(files, name)
  ? files[name]
  : undefined

その後、パーサーは格納された値が実際に配列である場合にのみ追加し、それ以外の場合は新しい配列を初期化します:

root@kitploit:~
if (Array.isArray(filesArray)) {
  filesArray.push(file)
} else {
  files[name] = [file]
}

配列ではない値に対して .push() が呼び出されると、TypeError がスローされます。これは Multiparty の非同期解析フロー内で発生するため、通常の呼び出し側のエラーハンドリングでは捕捉されず、例外がプロセスをクラッシュさせる可能性があります。

タイムライン

  • 2026-01-12: multiparty のメンテナーに脆弱性を報告。
  • 2026-01-17: 報告が受理され、修正作業を開始。
  • 2026-02-14: @pillarjs/security-triage と協調レビューを開始。
  • 2026-02-16: パッチの議論 -> Object.prototype.hasOwnProperty.call(...)。
  • 2026-03-29: アドバイザリのタイトルとメタデータをサービス拒否の影響を反映するよう更新。
  • 2026-04: 修正アプローチをレビューし承認。
  • 2026-05-08: アドバイザリを確定し、CVE-2026-8161 を予約。
  • 2026-05-11: 修正を pillarjs:master にマージ。

デモの使用方法

mocklab 環境を起動し、テストペイロードを両方のターゲットに送信します:

root@kitploit:~
docker compose up -d
python3 secdos.py -u http://localhost:8080/api/submit
python3 secdos.py -u http://localhost:8081/api/submit

脆弱なターゲットはクラッシュし、[PASS] を返します。パッチ適用済みのターゲットはリクエストを安全に処理し、[FAIL] を返します。

脆弱なサーバーに対して再実行する場合は、最初に再起動してください

セットアップ概要

脆弱なサーバー

  • localhost:8080 でアクセス
  • リバースプロキシとして機能する Nginx サーバー。障害時にはステータス 502 のエラーページを表示
  • Nginx はサービス名で脆弱なサーバーのアドレスを解決
  • multiparty 4.2.3(脆弱)を使用

パッチ適用済みサーバー

  • localhost:8081 で実行・アクセス
  • Nginx は不要
  • multiparty 4.3.0(パッチ適用済み)を使用

dockerfile からパッチ適用済みイメージをビルドするには、ビルド引数 PATCHED=1 が必要です

参照

https://github.com/pillarjs/multiparty/security/advisories/GHSA-qxch-whhj-8956 https://github.com/pillarjs/multiparty/commit/8ee6aca09aca29e923da48da8260c87aa964b282

ツールをダウンロード