リンクをコピーしました!

80%の問題:RunSafeが隠れたAIリスクを暴露

RunSafe Securityの新しいレポートによると、現在83.5%のクリティカルシステムがAI生成コードを実行していますが、メモリ安全保護は追いついていません。 このレポートでは、脆弱性の物理学と今後の方向性について詳しく説明します。

🌐
機械翻訳

この記事は英語の原文から自動翻訳されています。 英語の原文を読む

回路基板のマクロビュー。青色のローカライズされた安全な領域に対して、赤いデジタル破損がトレースを介して広がる様子を示しています。

組み込みシステムの静かな革命が一気に喧噪に包まれた。RunSafe Securityが発表した2025年の報告書は辛辣だ。組み込みエンジニアの**80.5%がコード作成にAIツールを使用し、驚異の83.5%**がそのAI生成コードを本番環境に直接展開しているという。

他の産業であれば、これは生産性の勝利を祝う局面だ。だが、組み込みシステムの世界(インスリンポンプ、産業用アクチュエーター、自動車のブレーキシステムを制御するコードが存在する)では、速度と安全性の危険な分離を意味している。

報告書のタイトルは「AI in Embedded Systems: AI Is Here. Security Isn’t」。業界が危険な転換点にあることを示している。エンジニアはこれまで以上に高速でコードを書き、本来安全性を念頭に設計されなかった言語を使用し、簡単にはパッチが当てられないハードウェアへデプロイしている。

技術的な深掘り:なぜ「良い」コードが破綻するのか

コード品質は主な懸念ではない。LLMは有効な構文を生成する。

問題は、CとC++が本質的に危険な言語であり、完璧な開発者の警戒性を必要とすることだ。だが、確率的なトークン予測器であるAIモデルは、これを構造的には保証できない。

メモリ安全性のギャップ

Python、Rust、Goで書かれた現代的な高レベルアプリケーションでは、言語ランタイムがメモリ割り当てを管理する。オブジェクトを作成すれば、システムが空きスペースを見つける。使用をやめれば、ガベージコレクタが解放する。

組み込みC/C++では、あなたがガベージコレクタだ。mallocでメモリを手動で割り当て、freeで手動で解放する。間違えれば、エラーが返ってくるだけでなく、脆弱性が生まれる。

RunSafe報告書は、この「マニュアルトランスミッション」のアプローチがAIの速度と衝突していることを指摘している。AIがJSONストリーム用の50行のパーサを生成する場合、標準的で効率的なCのパターンを使用することが多い。だが、メモリレイアウトの文脈を考慮することはめったにない。

  • バッファオーバーフロー: AIはデータをバッファに書き込む際、データが収まるかどうかを厳密にチェックしない。デスクトップアプリではプログラムがクラッシュするだけだ。だが、MMU(メモリ管理ユニット)を持たない組み込みコントローラでは、命令ポインタを上書きして、攻撃者にデバイスの制御を与えてしまう。
  • 解放後使用(UAF): AIはポインタを正しく解放するが、コード内の別の場所に悪魔参照を残す。その後、ロジックは解放されたメモリにアクセスしようとする。攻撃者がヒープに悪意のあるデータを灑いていれば、実行制御が奪われる。

攻撃面の乗数効果

報告書の統計が恐ろしいのは、表面積のためだ。 セキュリティを最大の懸念として挙げた回答者は**53%だが、組み込みセキュリティへの投資を増やしている回答者は91%**だ。彼らはこの波が来ることを知っている。

従来の開発は、自然なコード量の抑制力として機能する。人間のエンジニアは1日にそれなりの量のC++しか書けず、良いチームはそのコードをレビューする。AIはこの抑制力を取り除く。業界は今、膨大な量の未検証ロジックで従来のコードベースを溢れさせている。

人間が書くコード1万行当たり1行に致命的なメモリ欠陥があり、AIがエンジニアに1万行書くのに必要だった時間で10万行書かせることができるなら、業界は生産性を上げただけでなく、潜在的な脆弱性の密度を1桁増やしたのだ。

文脈的背景:過失のパターン

業界はこの映画を見たことがある。スクリーンが違うだけだ。

2000年代初期、IoT隆盛の「あらゆるものをつながせよ」段階により、Miraiボットネットが生まれた。メーカーはカメラやDVRにIPスタックを載せることを急いだが、デフォルトパスワードやオープンtelnetポートについては考えなかった。結果は、侵害されたトースターとウェブカメラから構築された巨大なDDoSインフラだった。

2010年代には、自動車産業がインフォテインメントと接続性をクルマに追加することを急いだ。その結果がJeep Cherokeハッキングだ。研究者がエンターテインメントシステムがCANバスと通信できたため、ハイウェイ走行中に車両のトランスミッションを遠隔制御できた。

2025年、これがコード生成で再び起きている。RunSafe報告書は、エンジニアの**73%**がAIコードのリスクを「中程度以上」と評価していることを指摘している。だが、展開数(83.5%)は、彼らがそれでも進めていることを示している。

「スマート」機能(予測保全、エッジAI処理、音声インターフェース)を搭載する経済的プレッシャーが、それらを保護するために必要なエンジニアリング規律を上回っている。

対抗手段:ロードタイム関数ランダム化(LFR)

コードの信頼性が不可能な場合(量が多すぎるため)、そして30年分のC++をRustに一晩で書き換えることが実行不可能な場合、防御策は何か?

報告書はランタイム回復力を指摘している。バグが存在することを前提とするなら、それを悪用不可能にする必要がある。

組み込みスペースではこの目的のための最も効果的な技術の1つが**ロードタイム関数ランダム化(LFR)**だ。

仕組み

標準的なファームウェアコンパイルでは、すべての関数は静的で既知のアドレスに存在する。calculate_voltage()は常に0x08001234にあるかもしれない。

攻撃者はこれを好む。エクスプロイト(Return-Oriented Programming、ROP など)を構築するには、実行したいコードにどこにジャンプするかを正確に知る必要がある。彼らは既存コードの小さなスニペット(ガジェット)をチェーンして悪意のあるプログラムを構築する。

LFRはこのチェーンを壊す。

  1. コンパイル時: コンパイラは絶対アドレスにジャンプしないコードを出力する。代わりに「スタブ」またはルックアップテーブルにジャンプする。
  2. ロード時: デバイスが起動すると、セキュアローダーはシャッフルする。すべての関数にランダムに実際のメモリアドレスを割り当てる。
  3. パッチ処理: ローダーはルックアップテーブルを更新するか、メモリ内でバイナリにパッチを当てるので、呼び出しが機能し続ける。

結果は何か?デバイスが再起動するたび(または実装によってはファームウェアが更新されるたび)、メモリマップが変わる。デバイスAで機能するエクスプロイトはデバイスBをクラッシュさせる。昨日機能したエクスプロイトは再起動後は機能しない。

RunSafeのこの技術専有実装は、ソースコードを書き直す必要がないため注目を集めている。バイナリレベルで適用できる。これは、すでにランタイム保護を使用しようとしている回答者の**60%**にとって重要だ。

前向き分析:5年間の見通し

2025年報告書はトランジション期間のスナップショットだ。セクターはAIコード生成の「ワイルドウェスト」段階にある。

今後5年間、3つの大きなシフトが予想される:

  1. シリコンベースセキュリティの台頭: LFRなどのソフトウェア軽減策は事実上必須になる。規制(EU サイバーレジリエンス法に類似)は、重要インフラデバイスがバイナリランダム化機能を備えることを要求する可能性が高い。
  2. Rustへの移行: AIはC++を容易に書くが、Rustも容易に書く。AIがボイラープレートを処理するにつれ、メモリ安全言語への切り替えの摩擦は低下する。だが、これは新しいコードのみを保護する。何十億行のレガシーC/C++は残る。
  3. 責任シフト: AI生成コードが物理的障害を引き起こす場合(例えば、ロボットアームが速すぎたり、バッテリ管理システムが故障したり)、法的な会話は「ソフトウェアバグ」から「製品責任」へシフトする。メーカーが人間のレビューやランタイム保護なしでAIを使用して安全性の重要なコードを生成した場合、それは過失だ。

ボトムライン

RunSafe Security 2025報告書は、単なる調査の集約ではない。それは警告信号だ。業界はAI生産性のボトルを開けたが、それを戻す方法はない。

生成されるコードの量があまりに多いため、手動レビューは規模で数学的に不可能だ。すべてのバグをキャッチできると装うことはもはや不可能だ。前に進む唯一の実行可能な道は、コードが壊れていることを前提とし、そのCが誰も傷つけないようにする含有フィールドを構築することだ。

2025年の組み込みエンジニアにとって、仕事はもはやCを書くだけではない。それはそのCが誰かを傷つけるのを防ぐ含有フィールドを設計することだ。

数学的付録:エクスプロイトの確率

LFRの価値をモデル化するには、成功するROP チェーン エクスプロイトの確率 P を計算する必要がある。標準チェーンは k ガジェットが必要だ。静的メモリマップでは、ガジェット i が既知の位置にある確率は1だ。

静的エクスプロイトの確率は事実上100%だ。

LFRでは、関数に対して N つの可能な位置(スロット)がある場合、攻撃者が各独立したガジェットの正しいオフセットを推測する確率は1分のNだ(単純化されたモデル)。確率は大ざっぱに1を、Nのk乗で割った値に低下する。

確率は事実上ゼロだ。

わずかなエントロピー(N=256)と短いチェーン(k=3)でも、難易度は確実性から1600万分の1にまで跳ね上がる。

出典 (6)

Advertisement

🦋 Bluesky での議論

Bluesky で議論する

投稿を検索中...