ソースコードに脆弱性を潜ませられるUnicode悪用攻撃法「Trojan Source」を研究者が発表
英ケンブリッジ大学コンピュータ研究所が、「Trojan Source」と名付けた攻撃法を発表した。Unicodeの脆弱性を悪用するもので、C、C++、C#、JavaScript、Java、Rust、Go、Pythonに対して機能した。「他のほとんどの言語に対しても機能すると思われる」としている。
英ケンブリッジ大学コンピュータ研究所は11月1日(現地時間)、「Trojan Source:Invisible Vulnerabilities」(リンク先はPDF)という論文を公開した。Trojan Sourceは、「人間のコードレビュアーには見えないターゲットを絞った脆弱性を作成するためのクールな新トリック」という。
研究者のロス・アンダーソン氏は、「Unicodeの方向性オーバーライド文字を使って、コードを別のロジックのアナグラムとして表示するこの攻撃は、C、C++、C#、JavaScript、Java、Rust、Go、Pythonに対して機能することを確認しており、他のほとんどの言語に対しても機能すると思われる」と説明する。
「人間が見るのと異なるロジックをコンパイラに示せるように、ソースコードファイルのエンコーディングを操作する方法を発見した」。コメントや文字列に埋め込まれた制御文字を使うことで、攻撃者はソースコードを並べ替え、悪用可能な脆弱性を生み出す方法でロジックを変更できる。
論文では2つの方法を紹介している。1つは双方向テキストのUnicodeコントロールを使ってコンテンツが表示される方向を変え、コード作成者が意図するのとは異なるロジックを生成する方法。これについてはRustが「CVE-2021-42574」としてセキュリティアドバイザリを公開した。
もう1つはホモグリフ攻撃と呼ばれる攻撃で、数字の「0」と文字の「O」、「l」と「I」など、人間の目には区別のつきにくい文字を使うことで、コードを2つの異なる関数として扱うというもの(CVE-2021-42694)。
Trojan Sourceを防御する方法として、Unicodeをサポートするコンパイラ、インタプリタ、ビルドパイプラインで、コメントや文字列リテラル内の終了していない双方向制御文字や混合スクリプトの紛らわしい文字を含む識別子にエラーや警告を投げることと説明している。言語仕様では、コメントや文字列リテラルでの終了していない双方向制御文字を正式に禁止する必要があるという。コードエディタとリポジトリプロントエンドは、双方向の制御文字と混合スクリプトの識別の難しい文字を視覚的な記号や警告で認識できるようにする必要があるとも指摘している。
研究者らは発見したTrojan Sourceの攻撃を受ける可能性のある製品について、19社のサプライヤーに7月25日に通知し、99日間の開示猶予を設定した。開示までに9社がパッチのリリースを約束したという。
関連記事
- CISA、FBI、NSAがBlackMatterランサムウェア対策アドバイザリー公開
CISA、FBI、NSAがランサムウェア対策アドバイザリーを公開した。サンドボックス環境で分析したBlackMatterランサムウェアのデータに基づく、犯罪者の戦術、技術、攻撃手順に関する情報を提供するもの。 - Appleの対応に不満噴出、反発した研究者が相次ぎゼロデイの脆弱性を公表
Appleのセキュリティ問題への対応を巡って研究者から不満の声が続出している。同社製品にゼロデイの脆弱性を見つけて報告しても反応が鈍く、他社に比べて対応が悪すぎるというのだ。 - カスペルスキー、第三者に偽のプレスリリースを配信されたと発表 配信会社は「ノーコメント」
カスペルスキーを名乗る偽のプレスリリースが、何らかの理由で配信された。JCNが運営するリリース配信サイト「JCN Newswire」などに掲載された9月27日付の文書に対し、文中に登場する各社は関係を否定している。 - Atlassian Confluenceの脆弱性修正パッチを至急適用するよう米政府が警告
Atlassianが8月末にパッチを公開したConfluenceの脆弱性を悪用する攻撃が拡大していると、米当局が警告した。米国はLabor Dayの3連休だが「週明けまで待つことはできない」と米サイバー軍は至急パッチを適用するよう呼び掛けた。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.