番号
最初に説明したように、攻撃は決して脅威ではありませんでした。コンパイラは理論的にはこれを行うことができますが、実際に攻撃を実行するには、コンパイラをプログラミングする必要があります
- コンパイルされているソースコードがコンパイラのものである場合を認識し、
- ハックを挿入するために任意のソースコードを変更する方法を見つけます。
これには、コンパイラが破損することなく変更できるように、ソースコードからコンパイラがどのように機能するかを把握する必要があります。
たとえば、リンク形式が、コンパイルされたマシンコードのデータ長またはオフセットを実行可能ファイルのどこかに保存するとします。コンパイラは、これらのうちどれを更新する必要があるのか、エクスプロイトペイロードを挿入する場合はどこでそれを把握する必要があります。コンパイラの後続バージョン(無害バージョン)はこの形式を任意に変更できるため、エクスプロイトコードはこれらの概念を効果的に理解する必要があります。
これは、高度な自己指向プログラミングであり、ハードAIの問題です(最後に確認したように、最先端技術は、そのタイプによって実際に決定されるコードを生成していました)。見てください:これを行うことができる人間はほとんどいません。プログラミング言語を学び、最初にコードベースを理解する必要があります。
AIの問題が解決したとしても、小さなコンパイラーをコンパイルすると、巨大なAIライブラリーがリンクされたバイナリーが生成されることに気付くでしょう。
類似攻撃:ブートストラップ信頼
ただし、攻撃の一般化は重要です。基本的な問題は、信頼の連鎖がどこかで始まる必要があり、多くのドメインでは、その起源が検出しにくい方法で連鎖全体を破壊する可能性があるということです。
実生活で簡単に脱落できる例
Ubuntu Linuxなどのオペレーティングシステムは、ダウンロードされた更新パッケージをリポジトリの署名キーと照合して(公開キー暗号化を使用)、更新のセキュリティ(整合性)を確保します。ただし、これは、署名キーが正当なソースによって所有されていることを証明できる場合にのみ、更新の信頼性を保証します。
署名キーはどこで入手しましたか?オペレーティングシステムのディストリビューションを初めてダウンロードしたとき。
信頼の連鎖のソースであるこの署名キーが悪ではないことを信頼する必要があります。
あなたとUbuntuダウンロードサーバー間のインターネット接続をMITMできる人なら誰でも、これはあなたのISP、インターネットアクセスを管理する政府(中国など)、またはUbuntuのホスティングプロバイダーかもしれませんが、このプロセスをハイジャックしたでしょう。
- Ubuntu CDイメージをダウンロードしていることを検出します。これは簡単です。要求が(公開されている)Ubuntuミラーのいずれかに送られ、ISOイメージのファイル名を要求することを確認してください。
- 独自のサーバーからリクエストを処理し、Ubuntuの代わりに攻撃者の公開キーとリポジトリの場所を含むCDイメージを提供します。
その後、攻撃者のサーバーから更新を安全に取得します。更新はルートとして実行されるため、攻撃者は完全に制御できます。
オリジナルが本物であることを確認することにより、攻撃を防ぐことができます。ただし、これには、ダウンロードしたCDイメージをハッシュを使用して検証する必要があります(実際にこれを行う人はほとんどいません)。ハッシュ自体は、たとえばHTTPS経由で安全にダウンロードする必要があります。また、攻撃者がコンピュータに証明書を追加できる場合(企業環境で一般的)、または認証局(中国など)を制御する場合、HTTPSでも保護されません。