Andrej Karpathyは、元研究者であり、OpenAIの創設メンバーでもある。また、TeslaではAI部門のシニアディレクターを務めた。
最近、GPT-3を利用してコードを生成するCopilotを使っている。彼はこれについてツイートした内容は次のとおりだ:
「GitHub Copilotのリバースエンジニアリングに関する興味深い記事。Copilotのおかげでコーディングが劇的に高速化し、以前の『手作業のコーディング』に戻ることは想像しにくい。まだ使い方を学んでいる途中だが、すでにコードの約80%を、約80%の精度で書いてくれる。実際にはコーディングすらしていない。プロンプトを入力して、編集しているだけだ。」
最近、ChatGPTが世界中の注目を集めている。しかし実際には、生成AIはここ数年で大きく浸透してきた。その重要な用途の1つが、コード開発の支援だ。
しかし、こうしたシステムにはセキュリティ脆弱性などの問題もある。これは、スタンフォード大学の研究者らによる論文が導き出した結論だ。彼らは指摘している:
「AIアシスタントを利用できた参加者は、利用できなかった参加者よりも多くのセキュリティ脆弱性を生み出すことが多かった。特に、文字列の暗号化とSQLインジェクションでその傾向が顕著だった。さらに意外なことに、AIアシスタントを利用できた参加者は、利用できなかった参加者よりも、自分が安全なコードを書いたと考える可能性が高いことも分かった。」
関連記事:ChatGPTを使うサイバーセキュリティアナリスト、悪意あるコードの分析や脅威予測に活用
AI自動コーディングシステムを理解する
IDE(統合開発環境)には以前から、コーディングを改善するためのスマートなシステムが搭載されてきた。その機能には、オートコンプリート、コード候補の提示、高度なデバッグなどがある。
しかし、GPT-3、Codex、Copilot、ChatGPTのような大規模言語モデルの登場は、状況を一変させた。これらは、トランスフォーマー、教師なし学習、強化学習といった生成AI技術を活用する。LLMは膨大な量のコンテンツを処理することで、高度なコードを理解し、生成できる。
例えば、「XYZデータベースの数値を平均するPython関数を書いて」というプロンプトを入力できる。AIシステムはこれを実行する。含めるべき関連する変数宣言など、文脈まで理解することさえある。
AIベースのコーディングシステムは、プログラミング中に候補を提示することもできる。例えば、関数のヘッダーを書き始めると、システムがコードブロックを完成させてくれる。Tabキーを押せば、その候補を採用できる。
「コード生成は、生成AIにおける初期のキラーアプリの1つだ」と、生成AIスタートアップAiseraの創業者兼CEO、Muddu Sudhakarは語る。「こうしたシステムはプログラマーに取って代わるものではない。しかし、プログラマーの生産性を大幅に高めることは間違いない」
AIコーディングの問題点
AIコード生成システムには、さまざまな問題がある。コードが堅牢に見えても、実際には欠陥があるという「幻覚」を起こすことがある。また、関数が複雑なために、コードの生成が途中で止まる場合もある。
しかし、こうした問題は驚くべきものではない。AIコード生成システムは、GitHubなどにある膨大な量の公開リポジトリを使って学習している。その中には、十分に適切に書かれていなかったり、一般的な標準に準拠していなかったりするプログラムもある。
その結果、セキュリティ脆弱性につながる可能性もある。
「AIがリクエストの仕様どおりにコードを生成すると信頼しても、そのコードが最適なライブラリを組み込んでいる、ソフトウェアサプライチェーンのリスクを考慮している、あるいは脆弱性スキャンに使われるクローズドソースのツールをすべて利用できることを意味するわけではない」と、アイデンティティ管理企業Oktaのプロダクトマーケティング担当シニアディレクター、Matt Duenchは語る。「そのコードが企業の内部環境やソースコード内でどのように機能するかという、サイバーセキュリティ上の文脈が欠けていることも多い」
もう1つの問題は、開発者がセキュリティ上の問題を特定するスキルを持っていない可能性があることだ。その一因は、コードがいかにも整然と構成されているように見えることにある。
「自分でプログラムを開発する場合、1行ごとに何をしているのかをかなり深く理解している」と、サイバーセキュリティ企業Praetorianの最高技術責任者、Richard Fordは語る。「StackOverflowのようなインターネットサイトは、開発者が完全に理解しないまま自分のプログラムにコピー&ペーストでき、実際にそうしているコードの集積をすでに提供している。ChatGPTのようなモデルは、はるかに少ない労力で、はるかに多くのコードを提供するため、この『理解のギャップ』をさらに広げる可能性がある」
関連記事:
AIコーディングのセキュリティ問題への対処
AIコード生成システムのセキュリティリスクに対処するには、まずツールを徹底的に評価する必要がある。利用規約はどうなっているか。データはどのように使われるのか。安全策は講じられているか。
例えば、知的財産権の侵害につながる可能性が懸念される。学習に使われたコードに、コード生成への利用を認めないライセンスが付与されている可能性があるためだ。
これに対処するため、ServiceNowはHugging Faceと協力してBigCodeを立ち上げた。目標は、「オープンで責任ある」AIの理念に沿ったコーディングツールを作ることだ。
ツールが自社に適していたとしても、効果的なコードレビューも必要になる。「サイバーセキュリティに関しては、出力を安全なコードレビューのできるセキュリティ専門家が慎重に確認すべきだ」とDuenchは語る。「さらに、潜在的なリスク領域を特定するため、既知の脆弱性をまとめたデータベースと照合して出力を再確認すべきだ」
いずれにせよ、AIコード生成システムは今後も使われ続け、ITに大きな影響を与えるようだ。この技術は生産性を高め、開発を民主化し、開発者不足の緩和にも役立つだろう。
「企業は、この種の支援を禁止することで対応すべきではないと思う」とFordは語る。「もう後戻りはできない。このすばらしき新世界で成功する企業は、進歩を万能薬のように無謀に導入する企業でも、全面的に拒絶する企業でもない。慎重かつ思慮深く進歩を受け入れる企業だ」
詳しくは主要なコードセキュリティおよびデバッグツールをご覧ください。





