マサチューセッツ工科大学(MIT)のチームは、「ドナー(「臓器提供者」の意)」プログラムを使ってオープンソースプログラムの機能性を向上させ、システムエラーと脆弱性を減らす方法を考案した。
「Automatic error elimination by horizontal code transfer across multiple applications」(複数のアプリケーションをまたいだ水平コード転送による自動エラー除去)と題された論文の中で、MITの研究チームは「Code Phage」システムについて説明した。同システムは、ドナーとなるプログラムから、バグのあるコードやエラーを含むほかのアプリケーションに自動的にコードを転送する。
テスト中、MITのチーム(Stelios Sidiroglou-Douskos氏、Eric Lahtinen氏、Fan Long氏、Martin Rinard氏)は7つのドナーアプリケーションを使って、受け取り側の複数のオープンソースプログラムに存在していた計10個のエラーを解消した。
「(Code Phageは)ソースコードも記号情報も不要でバイナリドナーと連携するので、幅広いユースケースに対応できる。われわれの知る限り、Code Phageは複数のアプリケーションをまたいで自動的にコードを転送できる初めてのシステムだ」(同チーム)
Code Phageが分析を開始するためには、2つのサンプル入力が必要となる。エラーを引き起こす入力と、エラーを引き起こさないシード入力だ。その後、Code Phageはアプリケーションデータベースを利用して、両方の入力を適切に処理できるドナープログラムを特定する。
「ドナーには判断基準となる部分があり、受け取り側にはそれがない。これにより、エラーを引き起こす入力を適切に処理することが可能になるというのがわれわれの仮説だ。目標は、その部分をドナーから受け取り側に転送する(そして受け取り側のエラーを取り除く)ことだ」(同論文)
この判断基準が特定されたら、Code Phageはドナーの条件分岐を調べて、シード入力とエラーを引き起こす入力に関して、異なる方向に進む分岐を見つける。その後、Code Phageはエラーを修正する正しい分岐を検出し、そのバグを修復するパッチを自動的に作成する。そして、このパッチが適用され、テストされる。
MIT研究チームによると、Code Phageは整数オーバーフローや境界を越えたアクセス、ゼロ除算エラーなどのエラー修正に使用できるという。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。