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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-21717 — CVE-2026-21717の概念実証。Node.js V8の文字列ハッシュ衝突の脆弱性で、細工されたJSONペイロードによりサービス拒否を引き起こします。 | Kitploit
ツール/GitHubGitHub/open-flaw/cve-2026-21717
脆弱性分析エクスプロイト学習と教育
GitHubopen-flaw/cve-2026-21717

CVE-2026-21717

CVE-2026-21717の概念実証。Node.js V8の文字列ハッシュ衝突の脆弱性で、細工されたJSONペイロードによりサービス拒否を引き起こします。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-21717

Node.js V8 文字列ハッシュの予測可能な衝突によるサービス拒否(DoS)の脆弱性

概要

V8の文字列ハッシュ機構における重大な脆弱性により、攻撃者はNode.jsアプリケーションに深刻なパフォーマンス低下を引き起こすことができます。整数のような文字列は数値にハッシュされるため、ハッシュ衝突を簡単に予測できます。V8の内部文字列テーブルで多数の衝突を引き起こす悪意のある入力を細工することで、攻撃者はパフォーマンスを著しく低下させたり、サービス拒否を引き起こしたりすることができます。

脆弱性の詳細

  • CVE ID: CVE-2026-21717
  • 深刻度: 高
  • 攻撃ベクトル: ネットワーク
  • 攻撃の複雑さ: 低
  • 影響: サービス拒否(DoS)

技術的な説明

この脆弱性は、V8の文字列インターン化プロセスに起因します。JSON解析が行われると、短い文字列は自動的にハッシュテーブルにインターン化されます。整数のような文字列は数値にハッシュされるため予測可能に衝突し、攻撃者は二次プロービングチェーンを強制してパフォーマンスを著しく低下させることができます。

影響を受けるコンポーネント

最も一般的なトリガーは、攻撃者が制御する入力に対してJSON.parse()を呼び出す任意のエンドポイントです。JSON解析は短い文字列を自動的に影響を受けるハッシュテーブルにインターン化するためです。

概念実証(PoC)

このリポジトリには、この脆弱性を実証する概念実証コードが含まれています:

前提条件

root@kitploit:~
# CVE-2026-21717の影響を受けるNode.jsバージョンを使用
nvm use
npm install

PoCの実行

root@kitploit:~
node poc.js

期待される動作

PoCは以下のペイロードを作成します:

  • 約13万個の文字列からなる二次プロービングチェーン
  • チェーンを通じてルックアップを強制する繰り返しのターゲット値
  • 単一のJSON.parse()操作で44秒以上のCPU時間を消費

攻撃フロー

  1. 攻撃者は、衝突するように設計された整数のような文字列を含む敵対的なJSONペイロードを細工します
  2. クライアントは悪意のあるJSONをサーバーに送信します
  3. サーバーは信頼できない入力に対してJSON.parse()を呼び出します
  4. V8エンジンは文字列をハッシュテーブルにインターン化し、衝突を引き起こします
  5. 結果 極端なCPU消費とパフォーマンス低下が発生します

緩和策

推奨される対策

  1. Node.jsの更新: この脆弱性に対処したパッチ適用済みバージョンに更新する
  2. 入力検証: JSONペイロードのサイズと複雑さを制限する
  3. レート制限: JSON入力を受け付けるエンドポイントにレート制限を実装する
  4. タイムアウト: JSON解析操作に適切なタイムアウトを設定する
  5. リソース監視: CPU使用率の異常なスパイクを監視する

コードレベルの緩和策

root@kitploit:~
// ペイロードサイズを制限
app.use(express.json({ limit: '100kb' }));

// 解析にタイムアウトを追加
const parseWithTimeout = (str, timeout = 1000) => {
  return Promise.race([
    Promise.resolve(JSON.parse(str)),
    new Promise((_, reject) => 
      setTimeout(() => reject(new Error('Parse timeout')), timeout)
    )
  ]);
};

参考情報

  • CVE詳細
  • Node.jsセキュリティブログ

免責事項

このリポジトリは教育および研究目的のみで提供されています。悪意のある目的や、所有していない、または明示的なテスト許可を得ていないシステムに対してこのコードを使用しないでください。

ツールをダウンロード