ニュース
» 2021年04月26日 17時00分 公開

MITとIBMの研究者、自動プログラミングツールの弱点を発見し修正する方法を提案セキュリティリスク低減に役立つ

MITとIBMの研究者はディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を発表した。

[@IT]

 マサチューセッツ工科大学(MIT)は2021年4月15日(米国時間)、自動プログラミングツールに関する研究成果を発表した。

 MIT電気工学・コンピュータサイエンス学部の大学院生シャシャンク・スリカント氏と、MIT-IBM Watson AI Labによる最新の論文では、ディープラーニングに基づくコード処理モデルの弱点を発見し、モデルを再トレーニングして、攻撃に対する回復力を高める自動的な方法を扱っている。

MITとIBMの研究者が開発したフレームワークは、自動プログラミングツールを攻撃の危険にさらす弱点を発見し、修正する。画像のツールは、開発者が記述するコードをリアルタイムで読み取り、コードを提案する。写真は、PythonのNumPyライブラリにある数千の選択肢から、タスクに最適な関数を選んでいるところ(出典:MIT、撮影:Shashank Srikant氏

 現在、コンピューティング能力の飛躍的向上や自然言語処理の発展、インターネットで無償公開されている膨大なソースコードのおかげで、コード処理モデルを用いたソフトウェア設計の一部を自動化することが可能になった。

 GitHubのようなソースコード共有サイトで公開されているコードでコード処理モデルをトレーニングすることで、プログラムの生成を学習させる。学習後はスマートアシスタントとして機能し、開発者が次にすることを予測して、支援を行う。

 コード処理モデルはタスクに適したプログラムを提案したり、プログラムの要約を生成したり、ソフトウェアの仕組みを文書化したりできる。さらにバグを発見、修正するようにトレーニングすることもできる。

セキュリティリスクが紛れ込む

 コード処理モデルには開発生産性やソフトウェア品質を高める可能性があるものの、セキュリティリスクも伴う。ここが研究チームの注目した課題だ。

 スリカント氏などが参加する研究チームは、まず、コード処理モデルを簡単にだませることを発見した。コード処理モデルが処理しようとするプログラムのコードで変数名を変更したり、偽の出力ステートメントを挿入したりといったごく小規模な操作を行うだけでよい。このようにわずかに改変されたプログラムは、正常に機能するものの、同時にコード処理モデルをだまして処理を誤らせ、間違った判断に導いてしまう。

 こうしたミスは、さまざまなコード処理モデルで深刻な結果につながる恐れがある。例えば、「マルウェア検知モデルが悪意あるプログラムを見落とす」「コード入力補完モデルが間違った、または悪意ある候補を提案する」といった具合だ。

 ディープラーニングに基づく言語モデルの常として、コード処理モデルには、一つの決定的な欠陥がある。それは、コード処理モデルが単語とフレーズの間の統計的関係に関するエキスパートではあるものの、それらの本当の意味については、ごく漠然としか「理解」していないことだ。

 スリカント氏はこう指摘する。「コード処理モデルがプログラムの本質的な特性を本当に学習していれば、だますことは難しいだろう。だが、今は比較的簡単にだませる」

コード処理モデルの弱点を指摘する

 今回、研究チームは、自動的にプログラムを改変して、プログラムを処理するモデルの弱点を明らかにするフレームワークを提案した。このフレームワークが使用するアルゴリズムは、テキストの追加または置き換えによって、モデルに最大のミスを起こさせるプログラム中の位置を特定する。さらに、どんな編集を行うと、最大のミスが起こるのかも特定する。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

6月16日にフォーマット統一のため利用規約を変更します

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。