コード内で行う文字列操作の誤り(バグ)を修正、開発コスト削減にも寄与
インジェクション攻撃撲滅へ NTTと早稲田大がプログラム修正技術を共同開発
2024年10月29日 07時00分更新
NTTと早稲田大学は、2024年10月28日、「インジェクション攻撃」の主要な原因である、プログラム中の文字列操作の誤り(バグ)を修正する技術を世界に先駆けて開発したことを発表した。
インジェクション攻撃は、ソフトウェアの脆弱性を悪用するサイバー攻撃手法のひとつ。Webアプリケーションのデータベースなどに不正な入力データを送信することで、データベース内の個人情報を抜き取るなど、サーバー上で予期しない動作を引き起こす攻撃だ。
こうした攻撃を防ぐために、通常はプログラム中で文字列関数を使い、予期しない(不正な)入力データのチェックや排除、無害化が行われる。ただし、文字列関数を利用して文字列操作を行うためには専門的な知識が要求され、その文字列操作に誤りがあれば脆弱性となってしまう。
発表によると、今回開発された技術によって、専門知識を持たないソフトウェア開発者でも、文字列操作の誤りを修正できるようになるという。さらに、サービスの開発段階からその誤りを修正できるため、コスト削減と安全なサービス提供にもつながる。
NTTと早稲田大学が共同開発したのは、プログラム中の文字列操作の誤りを、ソフトウェア開発者が与える入出力例を基に修正して、修正結果に誤りがないことを保証する技術だ。文字列関数に対する処理の流れは、以下の通りになる。
まず、文字列関数に期待する入出力の例を、入力と出力に加えて“入力のどの部分をどのように変換したいのか”を含めて表記する手法を用いて、適切な修正結果が出力できるようにする。
さらに、“文字列関数の振る舞い”を理論モデルとして厳密に定義することで、修正対象の文字列関数に与える情報であるパラメータが、すべての入出力例を満たすための条件を導き出せるようにする。
最後に、修正結果のパラメータとなり得る候補を、明らかに入出力例を満たさないものを除外しつつ、網羅的に探索する手法を用いて、現実的な時間内に修正処理を終えられるようにする。また、修正結果は、修正前のパラメータに対して最小限の変更に抑えられるため、ソフトウェア開発者の目視での確認を可能にする。
今回の技術は、生成AIでプログラムを自動生成した場合でも、そのメリットを損なうことなくプログラムの安全性向上に寄与する。今後は、文字列操作に伴う脆弱性そのものを修正する技術の研究が進められる予定だ。
NTTと早稲田大学では、10月30日に米国で開催されるソフトウェア工学分野の国際会議「IEEE/ACM ASE 2024」で本技術の詳細を発表する。