Skip to main content

Snyk CodeのAI生成セキュリティ修正機能が利用可能に

feature snyk code orange

2023年5月9日

0 分で読めます

コード内のセキュリティ問題を見つけて修正するのは簡単ではありません。なかでも重要なのが、問題を解決するために実際にコードを変更する作業です。セキュリティチケットを確認し、検出された問題の意味やソースコード内の発生箇所を特定したうえで、開発に戻れるよう修正方法を判断する必要があります。「心配はいりません。AIがすべて対応してくれますよね?」と思うかもしれません。そうなるのは、AIがデフォルトでセキュアなコードを生成し、他者の知的財産をコピーしたり、自社の知的財産を世界中に共有したりしなくなってからの話です。

4月のSnykLaunchイベントでは、AIを活用してIDE内で修正案を提示し、開発者が提案をクリックするだけでコードに自動適用できる新機能を発表しました。そして本日、このAIを活用した修正機能がオープンベータで利用可能になったことをお知らせします。Snyk AIの修正機能は、セキュリティ問題の修正に特化して構築されているため、権利侵害や独自のコードが他者に渡る心配はありません。

IDEで利用できるSnyk AIの修正提案:2つの例

Snyk CodeのAI修正提案によるSQLインジェクションの問題の修正
Snyk CodeのAI修正提案を使ってSQLインジェクションの問題を修正

上の例では、Snyk CodeがSQLインジェクションの問題を検出しています。これはリスクの高い問題で、修正が特に難しい場合があります。データベース呼び出しを行うコードと、データベースクエリや変数を組み立てるコードが、完全に別の場所にあることもあるためです。問題の発生源をたどるだけでも大変ですが、修正のためにコードをどう変更するかを決めるには、さらに手間がかかります。ここでは、SnykのAI修正提案が問題の発生源をたどり、IDE内で修正案を提示しています。

Snyk CodeのAI修正提案でハードコードされた認証情報の問題を修正する
Snyk CodeのAI修正提案で、ハードコードされた認証情報の問題を修正

2つ目の例では、ソースコード内にハードコードされた認証情報が検出されています。Snyk AIはハードコードされた認証情報を削除し、代わりにセッション変数を使用する修正案を提示します。

信頼できるセキュリティ修正のために構築されたAI

さまざまなAIツールが興味深いコードを生成するデモは数多くあります。しかし、エンジニアやセキュリティ専門家が詳細を検討し、その影響を考えるなかで、いくつもの疑問が寄せられています。

  • AIが生成したコードによって、セキュリティ上の問題がさらに増えることはないと信頼できるでしょうか?

  • また、AIが公開リポジトリ内の既存コードから学習している場合、他者の著作物や、制限の厳しいライセンスが適用されたオープンソースプロジェクトのコードを取り込んでしまう危険はないでしょうか?

どちらももっともな懸念です。しかし、こうしたデモでコードを生成するAIツールは、コードの出所や安全性、生成コードに引き継がれる可能性のあるライセンス上の制限について、明確に説明していません。

Snyk AIの修正提案はセキュリティ問題の解決を目的としているため、こうした懸念に配慮して機能を構築しました。具体的には、AIモデルのトレーニングには、明示的に寛容なオープンソースライセンスの下で公開されているコードを含むプロジェクトのみを使用しています。また、Snyk AIの修正提案は、長いコードを生成するのではなく、小規模で独立した変更を提示します。上記のデモでは、Snyk AIが提示する修正案の例をご覧いただけます。

Snyk AIの修正によって新たな問題が生じないよう、開発者に修正案を提示する前に、AIエンジンはその修正案をSnyk Codeセキュリティエンジンで検証します。これにより、(1)修正が対象の問題を解決すること、(2)新たな問題を引き起こさないことを確認します。AIが結果に確信を持ち、Snyk Codeのテストフィードバックループを経てから、修正案が開発者に提示されます。また、修正を適用して受け入れるかどうかは、常に開発者が決定できます。

最後に、AIの利用における安全性と、自分のコードの安全な取り扱いについても疑問が寄せられています。モデルはコードから学習し、その結果、知的財産や機密情報を含むコードが他者に共有されることはないでしょうか?SnykのAIは、セキュリティ分析の実行に必要な短期的なキャッシュを除き、お客様のコードを保存しません。ポリシーの詳細は、記事「Snykによるデータの取り扱い」で明確に説明しています。AIのトレーニングに関するポリシーは次のとおりです。「Snyk Codeは、お客様のコードを(1)エンジンのトレーニング、または(2)修正候補を示す例の抽出に使用しません。」

Snyk AIの修正提案を有効にする方法

今回のオープンベータでは、Visual Studio CodeとEclipse用のSnyk IDEプラグインを通じて、JavaScript向けにこの新機能を提供します。今後、対応するプログラミング言語を段階的に増やし、機能をさらに改善していきます。修正提案を受け取るには、Snyk Previewタブで機能を有効にしてください。

Visual Studio Code用Snyk拡張機能またはSnyk Eclipseプラグインをインストールするか、最新版に更新してください。最新版を使用するため、IDEを再起動することをおすすめします。