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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-38297-Go-wasm-Replication | Kitploit
ツール/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティCTF論文と研究学習と教育バイナリエクスプロイトラボと実践

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

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

🚨 CVE-2021-38297 の悪用: GO Wasm バッファオーバーフローへの道のり 🚨

🌐 脆弱性の概要 🌐

WebAssembly (WASM) 🌍 は、C、C++、Rust、GO などの高級言語を最新の Web ブラウザーでシームレスに実行できるようにする、最先端のバイナリ命令形式です。しかし、CVE-2021-38297 🚩 の発見により、GO でコンパイルされた WASM バイナリに対する GO のコンパイルおよびロード処理に重大な欠陥があることが明らかになりました。GO が提供する JavaScript WASM ローダー (wasm_exec.js) で見つかったこの脆弱性は、argv 引数にデータを無制限に含めることを許容していました。argv は WASM のリニアメモリに保存されるため、悪意のある攻撃者は、過大なサイズの argv 入力を使用して GO コンパイル済み WASM プログラムのリニアメモリを上書きし、予測不能で潜在的に危険な結果を引き起こす可能性がありました。この脆弱性は、GO 1.17.2 より前のバージョンでは重大な問題でした。

要約:

  1. フロントエンドは各投稿とそのコメントをレンダリングします。
  2. レンダリング中に GO WASM モジュールが読み込まれ、argv 変数とメモリアドレス 0x5000 にある投稿を介してコメントを処理します。
  3. toLeetSpeak や processSharedVar などの関数は、それぞれコメントと投稿のコンテンツに使用されます。

💻 脆弱なアプリケーション: Vuln-Twitter 💻

私たちの概念実証では、投稿とコメントを通じてユーザー生成コンテンツを許可する模擬ソーシャルメディアプラットフォーム「Vuln-Twitter」を紹介します。Node.js Web サーバーとデータ保存用の SQLite を利用し、Vuln-Twitter のフロントエンドは、動的コンテンツレンダリングのために、プレーンな JavaScript と wordprocessor.wasm という GO WASM モジュールを組み合わせて使用します。このモジュールには特に toLeetSpeak などのメソッドが含まれており、ユーザー入力を魅力的なユーザーエクスペリエンスのためのスタイル化された「LeetSpeak」に変換します。

Vuln twitter UI

バッファオーバーフローの悪用

私たちの調査により、各コメントが GO WASM モジュールによって変換されるコンテンツレンダリングフェーズに、重要な悪用ポイントがあることが明らかになりました。特別に細工された過大なコメントはこの脆弱性を引き起こし、元の投稿コンテンツを操作するバッファオーバーフローを引き起こして、古典的な Stored XSS 攻撃ベクトルを示します。この脆弱性は、悪意のあるデータ操作の可能性を浮き彫りにするだけでなく、Web 開発と WASM アプリケーションの文脈における安全なプログラミング慣行の広範な影響も強調します。

同じ処理を行うコードセクションを参照してください:

レンダリングロジック

コメントレンダリング時の WASM リニアメモリ図:

レンダリングロジックのメモリ 悪用フロー

エクスプロイトの再現

この脆弱性をさらに調査したい愛好家や研究者のために、特定の脆弱なバージョンの GO を使用してエクスプロイト環境を再現する詳細な手順を提供します。この実践的なアプローチにより、脆弱性の仕組みと潜在的な緩和戦略についてより深く理解できます。

注: これを再現するには、このシナリオで使用されている脆弱なバージョンである go バージョン go1.17.1 をローカルにインストールする必要があります。特定の Go バージョンのインストール方法については、公式の Go ドキュメントを参照してください。

それでは、上記のシナリオを再現してみましょう:

  1. アプリケーション全体をセットアップするには、まずプロジェクトをクローンします: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. npm install を実行して、すべての依存関係をインストールします
  3. npm run resetDB を実行すると、いくつかの投稿とコメントを含むデータベースが初期化されます。
  4. npm run dev を実行するとローカルサーバーが起動し、ブラウザで localhost:3000 を開くとログインページが表示されます。

次に、悪意のあるアカウントでログインしましょう。認証情報はユーザー名: I_CANT_HACK、パスワード: hacker です。ログインすると、いくつかの投稿を含むフィードが表示されるはずです。

この投稿はかなり興味深いようです:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

上記のテクニックを使用して、Amazon.com の投稿を上書きし、悪意のあるリンクを指すようにできたらどうでしょうか?

exploit.txt ファイルを参照してください。このファイルには、「A」のパディングで埋められたコメントが含まれており、アドレス 0x5000 まですべてを上書きします。最後に ready for black friday? https://evil.com/blackfriday というテキストが表示されます。このテキストをコピーして上記の投稿にコメントすると、元の投稿を上記のテキストで上書きできるはずです。

ぜひご自身で試してみてください :)

エクスプロイト

🛠️ パッチ適用と緩和策 🛠️

この脆弱性の深刻さを認識し、リスクを軽減するために更新された安全なバージョンの GO を使用する、包括的なパッチ適用戦略も概説します。このセクションは、開発者とシステム管理者がこのような脆弱性に対してアプリケーションを強化するためのガイドとして機能し、定期的なソフトウェア更新と警戒心の高いセキュリティ慣行の重要性を強調します。

このアプリケーションには、パッチスクリプトも用意しました。これは新しいバージョンの go を使用します:

  1. ターゲット npm run patchServer を実行します

これにより、新しいバージョンで go ファイルが再コンパイルされ、パッチ適用バージョンでサーバーが起動します。

投稿が上書きされなくなっていることに気付くはずです。コンソールを確認すると、代わりに Argument length too long というエラーが表示されます。

パッチ

💡 結論と考察 💡

CVE-2021-38297 の悪用と緩和に至るまでの道のりは、WASM を通じて Web 環境に高級プログラミング言語を統合することによってもたらされる課題と機会について、貴重な洞察を提供します。これは、ソフトウェア開発におけるセキュリティ慣行の批判的検討を促し、脆弱性管理への積極的なアプローチと安全なコーディング標準の採用を促します。

私たちの理解に基づくと、GO のリニアメモリレイアウトは以下のように示されます:

GO メモリレイアウト

🎓 プレゼンテーションと学術的貢献 🎓

カーネギーメロン大学の学生として、CVE-2021-38297 に関する私たちの調査は、サイバーセキュリティに関するより広範な学術的および専門的議論に貢献し、新興技術がソフトウェアセキュリティに与える影響に関する実践的なケーススタディを提供します。レビュー可能なプレゼンテーション資料は、私たちの調査結果と方法論をさらに詳しく説明し、サイバーセキュリティコミュニティ内の対話とコラボレーションを促します。

🌟 クレジットと貢献 🌟

このプロジェクトは、献身的な学生と研究者のチームが中心となって進めた、共同研究と学術的探究の証です:

  • Paras Saxena (@paras98)
  • Gopala Krishnan (@gkrishnan724)
  • Zhejia Yang (@zildjianpoi)
  • Shubham Kulkarni (@shubhamkulkarni97)
  • Anisha Nilakantan

技術的説明

脆弱なアプリケーション: Vuln-Twitter

この概念実証は、複数のユーザーがコンテンツやコメントを投稿できるソーシャルメディアアプリケーション Vuln-Twitter を示しています。Node.js で構築された Web サーバーは、SQLite を使用して投稿データとコメントデータを保存します。

フロントエンドは、wordprocessor.wasm という GO WASM モジュールとともにプレーンな JS を採用しています。このモジュールは toLeetSpeak などのメソッドを公開しており、入力文字列を「LeetSpeak」に変換します(例: "Hello!" は "h3ll0!" になります)。

GO WASM モジュールは、投稿とコメントを LeetSpeak でレンダリングするのに役立ちます。

バッファオーバーフローの悪用

フロントエンドのレンダリングプロセスでは、サーバーから投稿とコメントを受け取ると、各コメントは GO WASM モジュールを使用して「LeetSpeak」にレンダリングされます。各投稿のコメントは、GO WASM モジュールのロード後に argv 変数の一部として渡されます。

さらに、GO モジュールには processSharedVar() というメソッドがあり、アドレス 0x5000 にある文字列を読み取り、簡略化した発話に変換するように設計されています(例: "How are you?" は "How r u?" になります)。元の投稿は、このメソッドがアクセスできるようにリニアメモリ内の 0x5000 に明示的に追加され、投稿コンテンツを変更します。

🔗 ソースと関連資料 🔗

CVE-2021-38297 とその広範な影響をさらに深く調査したい方のために、公式のセキュリティ速報から技術ブログや学術論文まで、厳選したリソースと関連資料のリストを提供します。これらの資料は、脆弱性、ソフトウェアセキュリティへの影響、および Web アプリケーションの安全性と完全性を確保するための継続的な取り組みについて、包括的な洞察を提供します。

  • https://www.ibm.com/support/pages/security-bulletin-ibm-event-streams-affected-potential-buffer-overflow-golang-cve-2021-38297-0
  • https://vulmon.com/vulnerabilitydetails?qid=CVE-2021-38297&scoretype=cvssv3
  • https://pedromarquez.dev/blog/2023/2/node_golang_wasm
  • https://nvd.nist.gov/vuln/detail/CVE-2021-38297
  • https://github.com/golang/go/issues/48797
  • https://github.com/golang/go/commit/f63250238be548b7c6c24ae840541102a5cfef99
  • https://jfrog.com/blog/cve-2021-38297-analysis-of-a-go-web-assembly-vulnerability/
  • https://stackoverflow.com/questions/64763007/why-is-webassembly-safe-and-what-is-linear-memory-model
  • https://webassembly.org/
  • https://hacks.mozilla.org/2019/08/webassembly-interface-types/
  • https://blog.protekkt.com/blog/basic-webassembly-buffer-overflow-exploitation-example
  • https://www.usenix.org/system/files/sec20_slides_lehmann.pdf
  • https://xeiaso.net/talks/wasm-abi/

オリジナル開発リポジトリ : https://github.com/gkrishnan724/CVE-2021-38297

ツールをダウンロード