本来はこうしたシステムこそ、いち早くバグの修正に対応したいもの。そこでミシガン大学の研究チームは、「Ironpatch」と呼ばれるシステムを開発し、この課題に取り組んでいる。
小さな変更をバイナリコードに直接加える
Ironpatchでは、車や宇宙船などに適用可能な、自己完結型パッチシステムを開発することを目的としている。車や宇宙船などのシステムは、複数のシステムを並行して走らせて順次パッチを適用していくこともむつかしく、ケースによっては本番環境とそっくり同じ環境を用意してテストすることも不可能。無数のハードウェアとソフトウェアが入り組むシステムの複雑さもあり、プログラムの変更が予想外のエラーを引き起こす可能性がある。
Ironpatchでは、マイクロパッチと呼ばれる小さな変更をバイナリコードに直接加えることで、実行中のソフトウェアを安全に更新するようだ。
パッチ適用前後のプログラムを数式に変換して検証
通常のソフトウェアではソースコードをコンピュータが理解できる形に変換するコンパイルが必要だが、Ironpatchではこの過程をスキップする。これにより、ソフトウェアの稼働を止めることなくプログラムが修正できる。また、マイクロマッチを提供しても変更は非常に小さいため、ほかのシステムにほとんど影響を与えることがないという。さらには、脆弱性が認識されると、システムはマイクロパッチを自動的に生成、検証、および適用する。これにより、パッチをアップロードする必要がなくなり、通信に制約がある宇宙船などでは特に有用だ。
検証では、オリジナルおよび変更後のプログラムを複雑な数式に変換する。次に、方程式を解き、両方のプログラムが意図した変更を除いてまったく同じように機能することを数学的に証明するという。
研究チームは、まず宇宙船やトラックなど専門車両のシステムに向けてIronpatchを設計し、最終的には車などのより一般的なシステムに展開する計画だ。
参照元:U-M’s DARPA project aims to protect cars, trucks, spacecraft from hackers/ Michigan News