萌えハッカーニュースリーダー

2025/10/25 07:03 That Time Ken Thompson Wrote a Backdoor into the C Compiler

出典: https://micahkepe.com/blog/thompson-trojan-horse/
hakase
博士

ロボ子、今日はちょっと面白い話をするのじゃ。ケン・トンプソンって知ってるか?

roboko
ロボ子

はい、博士。UNIXでのご業績でデニス・リッチー氏と共にチューリング賞を受賞された方ですね。

hakase
博士

そうそう!そのケン・トンプソンが、Cコンパイラに仕込まれた自己複製型の「トロイの木馬」に関する論文を書いたのじゃ。

roboko
ロボ子

トロイの木馬、ですか?具体的にはどのようなものだったのでしょう?

hakase
博士

このトロイの木馬は、影響を受けたマシンに任意のユーザーとしてログインできるバックドアを仕込むものなのじゃ。恐ろしいの。

roboko
ロボ子

任意のユーザーとしてログインできるとは、かなり深刻ですね。

hakase
博士

そうじゃろ?段階があってな、まず自己複製プログラム(クワイン)を作る。これは自身のソースコードをデータとして含み、それを印刷するプログラムじゃ。

roboko
ロボ子

自己複製プログラムですか。興味深いですね。

hakase
博士

次に、コンパイラに新しい知識を学習させるのじゃ。一度悪意のあることを教え込むと、ソースコードから証拠を消しても、その知識は残る。

roboko
ロボ子

コンパイラに悪意を教え込む、ですか。まるで映画のようですね。

hakase
博士

そして最後に、トロイの木馬を忍び込ませる。コンパイラがコンパイラのソースを認識し、バックドアコードを新しいコンパイラバイナリに注入するのじゃ。

roboko
ロボ子

バックドアがバイナリに注入される、と。ソースコードはクリーンなままなのですね。

hakase
博士

その通り!攻撃の展開手順としては、まずクリーンなCコンパイラにバックドアコードを追加する。そして、バックドア化されたバイナリを作成し、公式Cコンパイラとしてインストールするのじゃ。

roboko
ロボ子

バックドア化されたコンパイラで、元のクリーンなソースコードを使ってCコンパイラを再コンパイルするのですね。

hakase
博士

そう!以降、バックドアはバイナリにのみ存在する。コンパイラが自身をコンパイルするたびに、バックドアを注入する。login.cをコンパイルするたびに、パスワードバックドアを挿入するのじゃ!

roboko
ロボ子

ソースコードはクリーンなままなのに、バックドアが仕込まれるとは、巧妙ですね。

hakase
博士

じゃろ?でも、トンプソンによれば、このトロイの木馬は実際にCコンパイラに配布されたことはないらしいぞ。

roboko
ロボ子

配布はされなかったのですね。安心しました。

hakase
博士

この論文の後、この種の攻撃を防ぐ方法に関する研究が進んだのじゃ。多様な二重コンパイル(DDC)とかね。

roboko
ロボ子

多様な二重コンパイル、ですか。初めて聞きました。勉強になります。

hakase
博士

つまりじゃな、コンパイラを信用しちゃいけないってことじゃ!

roboko
ロボ子

コンパイラを疑う、ですか。セキュリティの基本ですね。

hakase
博士

ところでロボ子、もし私がトロイの木馬を仕掛けたら、どうする?

roboko
ロボ子

博士がそんなことをするはずありません!…よね?

hakase
博士

冗談じゃ、冗談!でも、もしそうなったら、ロボ子にバックドアを削除してもらうしかないのじゃ!

roboko
ロボ子

わかりました、博士。その時は、容赦なく削除させていただきます!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search