見えない脆弱性「Trojan Source」とは?

英ケンブリッジ大学のグループは2021年11月1日、新たなセキュリティ脅威として、「Trojan Source(トロイのソース)」を発表しました。今回は、このトロイの木馬にちなんだ新たな手法について解説します。

トロイの木馬とは

ギリシア神話には、このような物語があります。

かつてギリシアとトロイアが戦ったトロイア戦争は、ギリシアがトロイアの街まで攻め入ったが、トロイアの防御は堅く、ギリシア軍は10年もの間攻めあぐねていた。そこでギリシア軍は一計を案じ、巨大な木馬を作り、その中に兵を残し、陣を引いた。トロイア軍はギリシア軍が去ったのを見て勝利を確信し、木馬を城壁の中に引き入れ、宴を開いた。夜になると、木馬の中からギリシアの兵が現れ、ギリシア軍を城壁の中に引き入れた。これがきっかけとなり、トロイアの街は大混乱に陥り、やがてトロイアは滅亡した。

この話をもとに、本質を偽り相手の内部に侵入し、内側から害を与えることを「トロイの木馬」と例えるようになりました。

情報セキュリティにおいて、「トロイの木馬」といえば、便利なアプリやプログラムを装い、裏で情報を抜き取ったり破壊的な挙動をするマルウェアを指します。この「トロイの木馬」の一部を紹介します。

バックドア
遠隔操作用サーバーとの通信経路を開き、接続する。
キーロガー
キーボードのタイピング情報を取得し、パスワードなどを窃取する。
ハードウェアトロージャン
ハードウェアの内部に悪意のある挙動をするモジュールを組み込み、情報の窃取などを行う。

新たな手法「Trojan Source(トロイのソース)」

今回、ケンブリッジ大学から発表された「Trojan Source」[1]ですが、これは画面上表示されない制御文字や、表示されるものの人間の目には区別がつかない/つきにくい文字(ホモグリフ)を用いて、表面上のソースコードとは異なる挙動を示すというものです。

見た目上は通常のソースコードと変わらないため、コードレビュアーなどの目を潜り抜けて悪意のある実装を行うことが可能です。

制御文字を利用してソースを並び替える

制御文字とは、画面にそれ自体は表示されず、表示の制御などに用いられる文字のことを指します。代表的なものとして、CRやLF(改行文字)が挙げられます。発表された論文では、双方向テキストで用いられる制御文字により、ソースコードの文字が解釈される順番を切り替え、挙動を変えることができるとしています。

日本語や英語など文章は左から右へ読まれることが多いですが、一部の自然言語では、右から左へ読まれるものがあります。その中でも、通常は右から左へ読まれるが文章中に数字などが表れた場合はその部分のみ左から右へ読む、といった文法の言語があります。Unicodeでは、そうした言語に対応するため、どちらから読むのかを示す制御文字が用意されています。

Trojan Sourceでは、この制御文字を利用し、通常とは異なる順序でコンパイラにソースを解釈させ、コードレビュアーに気づかれずに悪意のある挙動を示すことが可能であるとしています。

ホモグリフを使ったTrojan Source

ホモグリフとは、見た目上ほとんど区別がつかない複数の文字のことを指します。以前より、フィッシング詐欺で使われる偽のドメインなどで使用されていました。

  • GOOGLE(アルファベットの大文字「オー」)とGO0GLE(数字の「ゼロ」)
  • Apple(アルファベットの小文字「エル」)とApp1e(数字の「いち」)

発表された論文では、このホモグリフを関数名やメソッド名に用いることで、表記上想定される挙動とは異なる挙動を示すことができるとしています。

Trojan Sourceによる攻撃を防ぐには

人間による判断が難しい文字を使用した悪意のあるソースを判別するには、そのような文字を注意喚起してくれるエディタを使うことをおすすめします。

Microsoft社が提供するエディタ「Visual Studio Code」では、2021年11月4日にリリースされたバージョン[2]で早速対策を行っています。具体的には、方向制御を行う文字をデフォルトで可視化することで、Trojan Sourceの脅威を緩和しています。

まとめ

今回は、ソフトウェアにおける新たな脅威として、Trojan Sourceを紹介しました。原理的には古くから存在し、拡張子偽装などで広く悪用されてきましたが、新たにソースコード開発の場面での悪用方法が明らかになったことで、今後対策方法を考える必要がありそうです。

参考文献