最近、AIプログラミングアシスタントが非常に人気で、プログラマーのコーディング支援や効率向上に役立つと謳われています。多くのプログラマーはそれを「救世主」のように捉え、毎日活用したいと考えています。しかし、スタンフォード大学の研究は、こうした熱狂的なファンに冷水を浴びせました。AIプログラミングアシスタントは「安全上の悪夢」になりかねないのです!

スタンフォード大学の研究者たちは、47人のプログラマーを対象に、Python、JavaScript、Cの3種類の言語を網羅した、安全関連の5つのプログラミングタスクを課しました。その結果、AIアシスタントを使ってコーディングしたプログラマーは、明らかにコードの安全性が低いことが判明しました!

image.png

これは決して大げさではありません。AIプログラミングアシスタントは「頼りないインターン」のようなもので、一見正しいコードを生成できますが、セキュリティ問題については全く理解していません。例えば、暗号化・復号化タスクでは、AIアシスタントが生成したコードは情報を正しく暗号化できますが、必要な認証タグを返しません。これは、金庫に鍵はかけたが、鍵を渡さないようなもので、セキュリティが大幅に低下します。

さらに厄介なことに、AIアシスタントを使ったプログラマーは、自分のコードが安全だと感じやすくなります。「催眠薬」を飲んだかのように、コードのセキュリティホールを見過ごしてしまうのです。これは良い兆候ではありません。過信は、より深刻なセキュリティ問題を引き起こす可能性があります。

研究者たちはまた、プログラマーがAIアシスタントに与える指示が、コードのセキュリティに直接影響することを発見しました。プログラマーがタスクを明確に説明し、補助関数などを提供すれば、AIアシスタントが生成するコードのセキュリティは向上します。しかし、プログラマーがAIアシスタントに過度に依存し、AIアシスタントが生成したコードをそのまま使用すると、「セキュリティホール」を自分のコードにコピー&ペーストすることになり、結果は目に見えています。

では、AIプログラミングアシスタントは使えるのでしょうか?

答えは:使えますが、注意が必要です!プログラマーは万能薬として扱うべきではなく、盲目的に信頼するべきではありません。AIアシスタントを使用する際には、常に警戒し、コードを注意深く検査して、セキュリティホールを避ける必要があります。

論文アドレス:https://arxiv.org/pdf/2211.03622