脆弱性をどのように結び付けることができますか?
この記事 を読んでください。読み取り/書き込み専用のハードウェア上で実行されている脆弱なソフトウェアはありますか?
チップは基本的に次のように機能します。入力(コマンドとデータ)を取得し、計算を実行し、出力を生成します。内部メモリがある場合があります。
[〜#〜] fpga [〜#〜] (フィールドプログラマブルゲートアレイ)は、ゲートレベル(ハードウェアに非常に近い)で顧客によって「プログラム」されるブランクの標準チップです。
例としてスマートカードを取り上げましょう。チップは、秘密鍵を生成または内部メモリに保存するコマンドを提供します。ただし、仕様に従って秘密鍵を出力するコマンドはありません。
したがって、秘密鍵は保護されており、秘密鍵を含むすべての計算はカードで実行する必要があります。
しかし、内部メモリの保護された領域から秘密鍵を読み取るための隠しコマンドがあった場合、攻撃者はカードをコピーする可能性があります。
多くのチップは完全にハードワイヤードではありませんが、 マイクロコード を実行します。このマイクロコードはチップ内で実行され、外部からチップにアクセスするために使用されるプログラミングインターフェイス(マシンコード)を提供します。通常、マイクロコードはチップにのみ書き込むことができ、チップから読み取ることはできません。これは、知的財産または機密性の高いアルゴリズムとキーを保護するために使用される可能性があります。
アップロード時にフラグが設定されていない限り、コードの読み取りを可能にするデバッグインターフェイスが存在する場合があります。しかし、バックドアはとにかくアクセスを提供するかもしれません。
このトピックは新しいものではありません。たとえば、2009年に、ゲートレベルの特性評価を使用したハードウェアトロイの木馬の検出に関する論文が公開されました。 (StackExchangeのバグのためコメントセクションのリンク)。
それらが文書化されており、本番環境で使用するためにオフにできる限り、デバッグ用のそのような機能を持っていてもまったく問題ありません。最近の報道によると、同社はチップを「ミリタリーグレード」として販売し、保存されている情報を読み取れないことを宣伝した。したがって、このデバッグ機能はバックドアになります。
それは、実装者がバックドアとして機能するために、または非潜行的な機能を果たすためにそれを作成したかどうかに要約される傾向があります。
一般に、メモリなどへの直接アクセスを可能にするのは、ハードウェア/チップなどの一連の接続です。
ほとんどの場合、デバッグとテストの目的でインストールされます。例えば診断タスク。リモートアクセスを可能にするネットワークに接続されている場合、飛行機の腹のように、プローブをハードウェアに直接接続しなくても、問題を特定するのに非常に役立ちます。反対に、セキュリティが不十分な場合、簡単な攻撃ベクトルになります。
Robert Grahamは、ハードウェア内の最新のバックドアストーリーの1つについて素晴らしい記事を書いています: http://erratasec.blogspot.ca/2012/05/bogus-story-no-chinese-backdoor-in.html