コンパイルされた言語で書かれたソフトウェアには、関連する根本的な脆弱性があります。
ブラックスワンの理論
理論の著者はナッシム・ニコラス・タレブであり、彼の著書「The Black Swan」で説明しています。 予測不能の兆候の下で。」 理論は、予測が困難で、重大な結果をもたらすまれなイベントを考慮します。 現実世界のプロセスを数学だけの観点から説明することはできません。その証拠として、1つの簡単な例を考えてみましょう。
生きている七面鳥は養鶏場で購入され、より良い条件になります。
彼女は激しく肥育し、世話をし、世話をし、大事にします。 毎日、彼女の餌箱は食べ物で満たされ、彼女の囲いは暖かく快適です。 毎日、長い時間。
七面鳥が予測能力を備えていれば、翌日には温かいパドックで飼料が十分になるとほぼ100%の確率で予測できます。 サプライズ 七面鳥は知ることができず、全体像が根本的に変わりました。 起こったのは、まれな予測不可能なイベントであるブラックスワンです。 予想外の側面からの一撃。 そして、そのような出来事は私たちの生活の中で起こります。
あなたが一生白の白鳥を見ただけでも、黒が存在しないという意味ではありません。
この理論を検討した結果、自動化されたシステムの潜在的な根本的な脆弱性の関連性を理解できました。 問題は十分に古く、Cと同じくらい多くあります。
信頼に頼ることができるかどうかを考える
1975年、ケントンプソン(Cプログラミング言語およびUNIXオペレーティングシステムの作成者)は、信頼できるコンパイラの問題を提起した最初の人物です。 1984年にチューリングの講義「信頼性が信頼できるかどうかを考える」で公開されました。
講義で、ケントンプソンは、ソースコードを変更することなく、Cコンパイラのバイナリバージョンを介した攻撃を実演しました。 コンパイラにブックマークが表示され、このコンパイラによってコンパイルされたプログラムにウイルスコードが追加されます。 また、コンパイラ自体にも構成されています。
ウイルスコードは、ソースコードを介した従来の方法では追跡できません。
ただし、コンパイラはコンパイラによってもコンパイルされます。 コンパイラの信頼できる検証済みソースコードは、信頼できるコンパイラ自体によってコンパイルされるまで信頼できません。 コンパイラウイルスコードの新しいバージョンを収集すると、コンパイラの新しいバージョンで増加します。 「鶏と卵」の問題の顕在化の顕著な例。
約20年間、問題は解決不可能と考えられていました。
ダブルスプリットクロスコンパイルメソッド
2005年、David Wheelerはこの問題の解決策を導入し、コンパイラに対する攻撃の成功を正確に認識できるようにしました。
理論の主な難点は、信頼できるコンパイラが必要なことです。
簡単に言うと、テクニックは次のとおりです。
1)Sコンパイラのチェックされたソースコードが取得されます(たとえば、gcc-4.7)。
2)コンパイラSは検証済みのコンパイラC1によってコンパイルされ、コンパイラC1(S)が取得されます。
3)コンパイラSは、信頼できるコンパイラC2によってコンパイルされ、コンパイラC2(S)が取得されます。
4)プログラムPはコンパイラC1(S)およびC2(S)でコンパイルされ、プログラムC1(S(P))およびC2(S(P))のバイナリコードを取得します。
5)C1(S(P))とC2(S(P))を比較します。
結果のバイナリファイルは同一である必要があります。そうでない場合、コンパイラは信用を失い、ウイルスコード(プログラムブックマーク)を持ちます。
おわりに
コンパイラのバイナリバージョンの配布は制御されておらず、説明された脆弱性を持つコンパイラがどの段階でもレイアウトされていなかったと言うことは不可能です。 現時点では、信頼できるコンパイラを見つけることはほとんど不可能です。 これは、自動システムに潜在的な根本的な脆弱性があることを示唆しています。 バイナリウイルスの存在は容易に監査可能なソースコードのすべての利点を無効にするため、実績のあるソースコードの存在は万能薬ではありません。
記事の冒頭にある七面鳥の例は、この脆弱性の関連性を証明する試みであり、長年にわたって十分な注目を集めていません。
誰がコンパイラのプログラムブックマークを作成できるのか、なぜ作成できるのか、そして「感謝祭」が私たち全員に来るかどうかは不明です。
文学
1)ナッシム・ニコラス・タレブ、ブラック・スワン:非常にありそうもない影響、
http://www.nytimes.com/2007/04/22/books/chapters/0422-1st-tale.html?_r=02)トンプソン、ケン、リフレクションズ・オン・トラスト・トラスト、
https://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf3)Wheeler、David A.、Diverse Double-Compiling(DDC)による信頼関係への対抗、
http://www.dwheeler.com/trusting-trust/wheelerd-trust.pdf