Last updated on 2024年2月24日
CERTセキュアコーディング研究チームは、ChatGPT 3.5を使用して、SEI CERT Cコーディング標準に含まれる非準拠のソフトウェアコード例を検証しました。この実験は、ChatGPT 3.5がコード分析において有望であるものの、明確な限界があることを示しています。
安全なコーディングとAIの基礎
CERTコーディング標準は、C、Java、C++の各コーディング標準を含み、非準拠プログラムの例を提供しています。これらの例は、プログラムのソースコードを評価する経験から得られたもので、プログラムに弱点や脆弱性を引き起こす可能性のある一般的なプログラミングエラーを表しています。
ChatGPT 3.5を使用した非準拠ソフトウェアの実行
ChatGPT 3.5によるコードの評価を検証するために、非準拠のCプログラムを個別にChatGPT 3.5に提出しました。ChatGPTは生成AI技術を使用しており、コンパイラ技術とは異なります。したがって、コードの評価を評価し、データベースに記載されているコーディングエラーや修正から学習する能力ではなく、その評価を評価しました。
ChatGPT 3.5のレスポンス:簡単な例
ChatGPT 3.5は、一般的なコーディングエラーの例に対してうまく機能しましたが、Heartbleed脆弱性につながる非準拠コードの例では、バッファオーバーリードを特定できませんでした。代わりに、コードがHeartbleedの一部であると指摘しました。
ChatGPT 3.5のレスポンス:判断が必要なケース
一部のレスポンスでは、深い専門知識を持ってレスポンスを判断する必要がありました。例えば、ChatGPT 3.5は、データ構造の意味についてのあいまいさを表現しながら、主要な問題を特定しました。
ChatGPT 3.5が明らかなコーディングエラーを見逃したケース
ChatGPT 3.5は、非準拠コードのサンプルを提出した際に、明らかなエラーを見逃すことがありました。
ChatGPT 3.5の全体的なパフォーマンス
ChatGPT 3.5は、46.2%の時間で問題を正しく特定しました。52.1%の時間でコーディングエラーを全く特定できませんでした。1.7%の時間で、プログラムに問題があるとフラグを立てましたが、問題を美的なものと宣言しました。
ChatGPTの未来
この分析の結果は、ChatGPT 3.5には約束があるものの、明確な限界があることを示しています。LLMによって使用されるメカニズムは、トレーニングデータに基づいたパターンマッチングに大きく依存しています。LLMベースのコード分析は完全に無視されるべきではありませんが、出力を盲目的に受け入れる文化を管理することが短期的な実用的な戦術です。