古い Xilinx FPGA で新たに公開された脆弱性を悪用すると、チップの構成に使用される暗号化されたビットストリームを抽出して復号化するプロセスが簡素化される可能性があります。
つまり、これらの脆弱なXilinxコンポーネントを使用した製品のクローン製品を容易に製造できるようになったということです。これは恐ろしいセキュリティ上の欠陥というよりは、むしろ、あり得ないはずの興味深いハッキングと言えるでしょう。
初心者のために説明すると、FPGA (フィールド プログラマブル ゲート アレイ) には、必要に応じて配置および構成できる内部回路が満載されています。作成中の製品に FPGA を配置し、センサーの読み取り値をマイクロプロセッサに送信したり、ロボットのモーターを制御したり、ネットワーク パケットをフィルタリングしたり、無線信号を処理したり、システム内の他の電子機器を制御したり、本当に何でもできるように構成できます。
FPGA内部のロジック構成要素は、Verilogなどのハードウェア設計言語でコードを記述し、ビットストリームにコンパイルすることで構成されます。このビットストリームは通常、フラッシュメモリに保存され、FPGAの電源投入時に読み出されます。FPGAは、このビットシーケンスを用いて内部回路を構成・接続し、意図した動作を実行します。
ただし、ビットストリームが簡単にコピーされるのは避けたいはずです。そうしないと、誰かがFPGA搭載製品を購入し、フラッシュメモリからゲートアレイのビットストリームを抽出し、それを使って自社製品に互換性のあるFPGAを構成し、あなたのガジェットのクローンを作成できてしまうからです。(必要であれば、ビットストリームからFPGA設計をリバースエンジニアリングすることも可能ですが、このデータのフォーマットは通常、ベンダーによって公開されていないため、それほど簡単ではありません。)
暗号技術が救世主
解決策があります。AES-CBCと暗号鍵を使ってビットストリームを暗号化し、購入したFPGAを工場で製品に組み込む際に、その秘密鍵をFPGAに焼き込むのです。暗号化されたビットストリームをフラッシュメモリに保存すると、デバイス内のFPGAがそれを読み取り、与えられた秘密鍵を使ってストリームを復号化し、自身を設定します。競合他社が同じサプライヤーから購入した互換性のあるFPGAで暗号化されたビットストリームを使用しようとしても、それらのFPGAには秘密鍵がないため、動作しません。
しかし残念なことに、ゲートアレイにロードされた暗号化ビットストリームの復号版を完全に抽出するのは容易です。これは、旧世代のXilinx Virtex-6および7シリーズFPGAに存在する「Starbleed」と呼ばれる脆弱性を悪用することで可能になります。
ドイツのボーフム大学ホルスト・ゲルツITセキュリティ研究所のマイク・エンダー氏とアミール・モラディ氏は、同じくドイツのマックス・プランクサイバーセキュリティ・プライバシー研究所のクリストフ・パー氏とともにこの脆弱性を発見し、今月発表された論文[PDF]で解説しました。最新のチップを購入する以外に、既知の緩和策や回避策はありません。
この3人は、FPGA内部のレジスタに狙いを定めましたWBSTAR
。このレジスタは、ウォームブート後にFPGAがビットストリームの読み取りを開始するメモリアドレスを定義し、メモリから以前にロードされたビットストリームによって設定されます。つまり、FPGAにROMなどのメモリ内のデフォルトの位置からビットストリームをロードさせ、このビットストリームがWBSTAR
フラッシュメモリ内の更新されたビットストリームを指すように設定することで、FPGAが再起動したときにフラッシュメモリから更新されたビットストリームを取得し、システムをブロックすることなく、チップが更新された構成を安全にロードできるようにするという考え方です。WBSTAR
リセット後も変更されません。
ここに天才的な工夫があります。暗号化されたビットストリームを操作し、復号後の状態の32ビットワードを に書き込むようにしますWBSTAR
。この操作されたビットストリームは暗号整合性チェックに失敗するため、FPGAをリセットします。FPGAが の値を出力する2つ目の暗号化されていないビットストリームをロードし、WBSTAR
それを読み出して記録できるようにします。そして、このプロセスを何度も繰り返します。
すると、 への書き込みWBSTAR
、リセット、 の読み取りを繰り返しWBSTAR
、ビットストリームの平文を再構築することで、暗号化されたビットストリームの復号された内容を徐々に漏洩させることができます。重要なのは、WBSTAR
が操作された暗号化ビットストリームによって整合性チェックが実行される前に更新されるため、リセットがトリガーされる前にデータが漏洩してしまう可能性があることです。
XilinxのハイエンドVersal FPGAは、まるでデザイナーハンドバッグのようだ。価格を聞く必要があるなら、おそらく買えないだろう。
続きを読む
これらすべての作業に必要な時間はビットストリームのサイズによって異なりますが、チームは完全な抽出には約4時間から10時間かかると見積もっています。抽出が完了すると、そのチップのビットストリームの暗号化されていないコピーが得られます。
この技術は、誰かのハードウェアを乗っ取るために利用される可能性、つまり復号されたビットストリームを抽出し、それを改変してデバイスに送り返し、動作を改変するといった可能性はありますが、そのようなシナリオは考えにくいでしょう。現場で実行するには膨大な時間がかかります。正直なところ、もし悪者がそのレベルで長期間デバイスにアクセスできたとしたら、FPGAに手を出すことなく、もっとひどいことを100通りもできるでしょう。
その意味では、Starbleed は実験室環境以外ではセキュリティリスクとしてはあまり意味がありません。もし誰かがこれを利用して FPGA 対応機器を改ざんするのではないかと心配しているのであれば、心配しないでください。
むしろ、このバグの主な悪用は知的財産の盗難になると思われます。
良識に欠けるデバイスメーカーが、ライバルのハードウェアを模倣した自社製品を開発しようとしたと想像してみてください。彼らは、模倣したい機器を調達し、それを1日かけて研究室に持ち込み、Starbleed法を用いて暗号化されていないビットストリームを抽出し、それを使って自社製品のFPGAをコンフィギュレーションするのです。(もちろん、これは完全に違法行為であり、粗悪な模造品になってしまいます。想像してみてください。)
FPGAチップからビットストリームを取り出す方法が研究者によって発見されたのは今回が初めてではないが、Starbleedは断然最も容易な方法のようだ。これまでの研究では、チップに近赤外線やレーザーを照射して内部構成を判別するといった手法が用いられてきた。
Starbleed 自体はそれほど単純ではありませんが、必要なのはケーブルとデバッグ インターフェイスだけなので、比較的簡単に実行できます。
「一般的に、攻撃者はJTAGまたはSelectMAP構成インターフェースにリモートアクセス可能で、攻撃対象デバイスの暗号化されたビットストリームにもアクセスできる人なら誰でも攻撃対象になり得ます」と研究者3人は説明した。「ビットストリーム暗号化に対するサイドチャネル攻撃やプロービング攻撃とは異なり、適切な機器や電子測定の専門知識は必要ありません。」
ご想像のとおり、ザイリンクスは、科学者らが自社の機器をハッキングする新しい手法を公開したことをあまり喜んではいない。ただし、このチップ設計者は、現実世界のハッキングリスクについて言えば、それほど恐れる必要はないと指摘した。
FPGA スリンガーは論文が公開される前に学者と協力しましたが、最新の Xilinx 7nm FPGA モデル (および以前の 16nm および 20nm 世代) はこの脆弱性の影響を受けないことに留意する必要があります。®