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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Open-Source-Seal-Security — tough-cookie 2.5.0を使用しているオープンソースパッケージの修正 - CVE-2023-26136, | Kitploit
ツール/GitHubGitHub/ronmadar/open-source-seal-security
静的分析脆弱性分析コード分析サプライチェーンセキュリティ学習と教育
GitHubronmadar/open-source-seal-security

Open-Source-Seal-Security

tough-cookie 2.5.0を使用しているオープンソースパッケージの修正 - CVE-2023-26136,

リポジトリを見る
2年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

SEAL SECURITY PROJECT : オープンソースエンジニアタスク

クリティカルな脆弱性CVE-2023-26136を修正するため、tough-cookie V2.5.0の新しいバージョンを作成(Node.js V20で記述)

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

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

プロトタイプ汚染はJavaScriptに影響を与える脆弱性です。プロトタイプ汚染とは、既存のJavaScript言語コンストラクトのプロトタイプ(オブジェクトなど)にプロパティを注入する能力を指します。JavaScriptではすべてのObject属性を変更でき、proto、constructor、prototypeといった特別な属性も含まれます。攻撃者はこれらの属性を操作して、ベースオブジェクトのJavaScriptアプリケーションオブジェクトプロトタイプを上書き(汚染)し、他の値を注入します。Object.prototypeのプロパティは、プロトタイプチェーンを通じてすべてのJavaScriptオブジェクトに継承されます。これが発生すると、JavaScript例外を引き起こすことによるサービス拒否、あるいはアプリケーションのソースコードを改ざんして攻撃者が注入したコードパスを強制し、リモートコード実行につながります。

プロトタイプの汚染が発生する主な方法は2つあります:

  • 安全でないObjectの再帰的マージ
  • パスによるプロパティ定義

重要メモ: https://github.com/salesforce/tough-cookie/issues/282 https://security.snyk.io/package/npm/tough-cookie/2.5.0

=> MemoryCookieStoreクラスの脆弱性を修正するには、cookie.domainが proto に設定された場合にプロトタイプ汚染を防ぐために、putCookieメソッドを変更する必要があります。

https://github.com/salesforce/tough-cookie/pull/283

a. tough_cookie_2.5.0\node_modules\tough-cookie\lib\memstore.js を変更します。

memstore.js 内の新しいオブジェクト作成のすべての箇所が、{} または Object.create(Object.prototype) から Object.create(null) に変更されました。 これにより、汚染可能なプロトタイププロパティを持たないオブジェクトインスタンスを使用します。

  • 例: console.log(a = Object.create(null)); オブジェクト a にはプロパティ(または proto)がありません。

b. 新しいファイル /node_modules/tough-cookie/lib/test-unit.js を作成しました。 テストフォルダ内のファイル cookie_jar_test.js "Issue #282 - Prototype pollution" に基づいて、バニラJSで使用します。

コマンド: node test-unit.js

c. 新しいファイル /node_modules/tough-cookie/lib/testVerifyVulnerable.js を作成しました。 脆弱な動作が修正されたことを検証します。

コマンド: node testVerifyVulnerable.js

  1. change.diff : https://github.com/ronmadar/Open-Source-Seal-Security/blob/cf768f1932f087c30ebec7fe60c3fca323b4e54b/change.diff

a. 通常のパッケージ tough-cookie V 2.5.0

コマンド: npm install [email protected] && node index.js

b. 変更を加えた圧縮パッケージ tough-cookie V 2.5.0 tgz 形式

コマンド: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js

c.

  • 脆弱性: 脆弱性は、Object.prototype を直接変更して新しいプロパティ newProperty を追加することから生じます。 これは、JavaScript環境内のすべてのオブジェクトがこのプロパティを継承し、意図せず動作が変更される可能性があることを意味します。

潜在的な被害 -

  • プロトタイプ汚染: プロパティを直接 Object.prototype に追加すると、プロトタイプチェーン全体が汚染されるリスクがあります。 これにより、アプリケーション全体で予期しない動作が発生し、プロトタイプチェーンをたどる任意のオブジェクトが影響を受ける可能性があります。

  • セキュリティリスク: Webアプリケーションのコンテキストでは、攻撃者がプロトタイプ汚染を悪用してオブジェクトやプロパティを操作し、 権限昇格や情報漏洩などのセキュリティ脆弱性につながる可能性があります。

  • 互換性の問題: Object.prototypeのようなコアプロトタイプを変更すると、標準的な動作に依存する他のライブラリやフレームワークとの互換性の問題が発生する可能性があります。 これにより、依存関係の統合や更新時にエラーや予期しない動作が発生する可能性があります。 d. 上記の通り記述しました。

  1. tough-cookie 2.5.0 のフォークしたGitHubリポジトリへのリンク https://github.com/ronmadar/tough-cookie

このプロジェクトのインストール方法

  1. このプロジェクトをクローンします
ツールをダウンロード