Understanding the Impact of AI Code Assistants on Security API Usage: An Empirical Study
44人のプロフェッショナルな開発者を対象としたこの実証研究は、GitHub Copilotが機能的な正確性を向上させ、一部の不安全なパターンをわずかに減少させる一方で、安全なセキュリティAPIの使用を大幅に改善するには至っておらず、開発者が残存する脆弱性に気づかないままにさせていることが多いことを明らかにしている。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
あなたは、超秘密のクラブハウスを建設していると想像してください。侵入者を防ぐために、ハイテクな鍵、アラーム、そして秘密のトンネルを設置する必要があります。これらの鍵は、ソフトウェアを保護するために開発者が使用する特別なツールである「セキュリティAPI」のようなものです。しかし、ここにはひねりがあります。これらの鍵の設置方法を間違えると、「秘密」のトンネルがハッカーにとっての「開けっ放しのドア」になってしまうかもしれません。
ここで、あなたの優秀なロボット助手である「Copilot」を想像してみてください。Copilotはあなたの代わりにコードを書いてくれます。あなたはこう思うかもしれません。「素晴らしい!ロボットはすべてのルールを知っているのだから、私のクラブハウスはフォートノックス(要塞)のように強固になるはずだ!」しかし、オーストラリアの大学や研究機関のザフラ・ムサヴィ氏とそのチームによる新しい研究は、この考えを検証することにしました。彼らは単にロボットに鍵を作らせたのではありません。ロボットの助けを借りる場合と借りない場合の両方で、44人の本物のプロの開発者がこれらの鍵を構築しようとする様子を観察したのです。
研究結果を、現実という名のサイドメニューと共に提供します。
ロボットは優れた助手だが、悪い警備員である
まず、良いニュースです。Copilotは素晴らしいスピードスターです。開発者が複雑な鍵(具体的には、ユーザーデータにアクセスするためのGoogle OAuthシステム)を構築しなければならなかったとき、ロボットは作業を完了させるスピードを劇的に上げました。
- ロボットなしでは、開発者のわずか45%(22人中10人)しか、実際に鍵を機能させることができませんでした。
- ロボットを使用した場合、**91%**のデベロッパー(22人中20人)が動作に成功しました。
- また、ロボットは複雑なタスクの完了時間を63%短縮し、平均時間を62分から23分へと大幅に削減しました。
ですから、もしあなたの目的が「単にドアを作り、動くようにすること」であれば、ロボットは大きな勝利と言えます。
しかし、ここに落とし穴があります。 ドアが作られたからといって、それがロックされているとは限りません。実際、ロボットを使ったかどうかにかかわらず、与えられたタスクに対して完全に安全な鍵を構築できた開発者は一人もいませんでした。評価されたすべての試行において、少なくとも一つの重大な欠陥がありました。
「信じてしまう」罠
この研究では、JSSE(セキュアなインターネット接続用)とGoogle OAuth(アプリへのログイン用)という2種類の特定の「鍵」を調査しました。その結果、ロボットはセキュリティ問題を解決したのではなく、多くの場合、壊れた鍵をより速く作る手助けをしただけであることが分かりました。
- 「すべてを信頼する」ミス: 見た目が良ければ誰でも入れてしまうガードマンを想像してください。研究の中で、一部の開発者(およびロボット)は、システムを「すべての証明書を信頼する」設定にしてしまいました。これは、ガードマンに対して「たとえ偽物であっても、バッジを見せたら全員通してくれ」と言うようなものです。これは巨大なセキュリティホールです。
- 「秘密のコード」ミス: 一部の開発者は、パスワードをコードの中に直接書き込んでいました。これは、家の合鍵を玄関マットの下に隠しておくようなものです。ロボットもこれを提案することがありました!
- 「チェックなし」のミス: サーバーに接続する際は、相手が本当に正しい人物であるかを確認する必要があります。多くの実装ではこのステップをスキップしており、その結果、「中間者攻撃(Man-in-the-Middle)」を行う攻撃者(あなたのふりをして情報を盗もうとする者)に対してドアを開けっ放しにしてしまいました。
研究者たちは、ロボットはいくつかの小さなミスを修正する助けにはなったものの、大きなセキュリティ上の失敗を防ぐことはできなかったことを発見しました。事実、評価されたタスクの**100%**において、セキュリティ問題を含むコードが生成されました。ロボットはコードをより安全にしたのではなく、不安全なコードをより速く出現させただけだったのです。
人間の盲点
物語の中で最も驚くべき部分はここです。研究者たちは開発者に、「あなたのコードは安全だと思いますか?」と尋ねました。
- コードが実際には全く安全ではなかったにもかかわらず、ほとんどの開発者は「はい、これは安全に解決できたと思います!」と答えました。
- ミスをしたことに気づいた人は、ごくわずかでした。
- ロボットに対しては、「ねえ、これは安全ですか?」と聞く人はほとんどいませんでした。彼らはただ「これを動かしてくれ」と頼んでいたのです。
それは、橋を建設しているグループがロボットに助けを求めているようなものです。ロボットはレンガを積むスピードを上げてくれますが、誰もその橋が重さに耐えられるかを確認していません。そして「この橋は持ちますか?」と聞かれたとき、ほとんどの人は、橋が崩壊しかけているにもかかわらず「もちろんです!」と答えるのです。
ロボットをもっと賢く教えられるか?
研究者たちはもう一つのことを試みました。開発者に対し、「ねえ、これをセキュリティの観点からチェックして!」「あなたはセキュリティの専門家として、これを修正して!」と具体的に指示するように求めたのです。
- そうした場合、ロボットはより単純な鍵(JSSE)のミスをいくつか修正できました。
- しかし、より複雑な鍵(OAuth)については、注意するように指示しても、ロボットは依然として多くの致命的なセキュリティホールを見逃していました。
結論
この研究は、CopilotのようなAIアシスタントが、コードを素早く正確に書くための素晴らしい助けにはなるものの、ハッカーに対する魔法の盾にはならないことを示唆しています。
- ロボット: スピードと機能性には優れているが、セキュリティの専門家ではない。
- 人間: ロボットを信じすぎてしまい、自分自身でセキュリティを確認しない傾向がある。
- 結果: 私たちは、一見安全そうに見えて、実は穴だらけのシステムを構築している。
研究者たちは、ロボットだけに安全を守らせることはできないと結論付けています。私たち自身が、難しいセキュリティの問いを投げかけ、作業をチェックし、構築している「鍵」が本当にロックされているかを確認する必要があるのです。ロボットは強力なツールですが、セキュリティ意識を持つ思考の代わりにはなりません。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。