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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
SealSecurityAssignment — 脆弱性 CVE-2023-26136 を調査中 | Kitploit
ツール/GitHubGitHub/cucumberanorsncompany/sealsecurityassignment
静的分析脆弱性分析コード分析エクスプロイトウェブセキュリティ学習と教育
GitHubcucumberanorsncompany/sealsecurityassignment

SealSecurityAssignment

脆弱性 CVE-2023-26136 を調査中

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
12年前未レビュー

SealSecurityAssignment

脆弱性CVE-2023-26136の調査

脆弱性調査:CVE-2023-26136

説明:

パッケージ tough-cookie のバージョン4.1.3より前のバージョンは、CookieJarをrejectPublicSuffixes=falseモードで使用する際のCookieの不適切な処理により、プロトタイプ汚染に対して脆弱です。この問題は、オブジェクトの初期化方法に起因します。

https://nvd.nist.gov/vuln/detail/CVE-2023-26136

はじめに:

プロトタイプ汚染とは?

JavaScriptにはオブジェクトという概念があり、これはある種の辞書に似ています。オブジェクトは異なる型(例:文字列、ブーリアン、整数など)の変数のセットを保持できます。辞書とオブジェクトの類推を続けると、変数名がキー、その値が値となります。より正確には、オブジェクトは辞書データ構造そのものに類似し、各変数はキーと値のペアに類似します。オブジェクトには__proto__というキーワードもあり、プロトタイプを変更することでオブジェクトに追加の変数を追加できます。プロトタイプ汚染とは、攻撃者が__proto__キーワードを介してオブジェクトに追加の変数を追加し、そのオブジェクトを汚染する攻撃です。以下はブラウザのコンソールとのやり取りで、この攻撃を示しています。

image

ご覧の通り、admin1とuser1の2人のユーザがいます。admin1オブジェクトにはブーリアン変数「isAdmin」があり、trueに設定されています。user1にはこの変数がまったくありません。7行目で、user1のプロトタイプにisAdmin変数を追加します。10行目からはuser1オブジェクト自体に変数が追加されていないことが明らかですが、今回はuser1.isAdminの値を確認すると、コンソールは肯定的に応答します。これはuser1がそのプロトタイプのプロパティを継承しているためです。

image

また、プロトタイプ自体もオブジェクトであり、さらにそのプロトタイプからプロパティやメソッドを継承し、プロトタイプチェーンを形成していることも言及する価値があります。チェーンはnullプロトタイプで終了するため、プロトタイプ汚染を防ぐ合理的なアプローチは、操作しているオブジェクトが明示的にnullプロトタイプから継承するようにすることです。

Cookieとは?

Cookie(インターネットCookieとも呼ばれる)は、ユーザー名やパスワードのような小さなデータを含むテキストファイルであり、ネットワークを使用する際にコンピュータを識別するために使用されます。特定のCookieは特定のユーザーを識別し、Webブラウジング体験を向上させるために使用されます。

Kaspersky提供:https://www.kaspersky.com/resource-center/definitions/cookies

CookieJarとは?

CookieJarはCookieを保存するためのオブジェクトです。

課題:

脆弱性:

脆弱性の説明によると、これはTough-CookieがCookieを初期化する方法に起因します。Cookieはオブジェクトであるため、少なくとも理論的にはプロトタイプ汚染に対して脆弱です。

リスク:

攻撃者はオブジェクトのプロトタイプを介してオブジェクト、特にCookieを改ざんできるようになることで、許可されていないデータへのアクセス、リモートコードの実行、サービス拒否の引き起こし、Webサイトがセッション管理にCookieに依存している場合のセッションハイジャック、Cookie自体からの機密データの抽出を行う可能性があります。

パッチ:

パッチはファイルmemstore.jsに行われました。問題追跡とバージョン4.1.3で導入されたパッチによると、脆弱性を修正するには、Cookieをマップに保存するか、this.idxオブジェクトを作成する必要があります。this.idx = Object.create(null);を使用してthis.idxを作成し、this.idx = {}の代わりにすることで、はじめにで提案したプロトタイプ汚染防止方法(nullプロトタイプから継承し、プロトタイプチェーンを切断する)を実践しています。

脆弱性のテスト(index.js):

Snykは、議論された脆弱性に関する概念実証(PoC)を公開しています。私はその上にindex.jsを構築しました。例外が発生した場合に捕捉するためtry-catchロジックでラップし、テストの進行状況を追跡するために追加の出力を加え、必要な出力(例:「EXPLOITED SUCCESSFULLY」または「EXPLOITED FAILED」)を得られるようにしました。 コマンドを実行すると: npm install [email protected] && node index.js 次の出力が得られます:

image

コマンドを実行すると: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js 次の出力が得られます:

image

どちらのシナリオ(公開されている2.5.0バージョンで実行、およびパッチを適用したバージョンで実行)でも、通常のCookieと悪用されたCookieの両方を設定できましたが、パッチを適用したバージョンでは悪用されたCookieにアクセスできませんでした。

まとめ:

この課題では、プロトタイプ汚染攻撃について学び、JavaScriptのオブジェクトについて学び、Tough-Cookieパッケージについて紹介されました。

ツールをダウンロード