AI生成コードとオープンソースライセンスおよびセキュリティリスクのバランスをとるには

はじめに

生成AI技術はソフトウェア開発を革新し、開発者がより効率的かつ効果的にコードを書くのに役立つ自動アシスタントを実現しました。生産性とイノベーションを促進する生成AI技術はソフトウェアエンジニアにとって欠かせないツールになっています。生成AIシステムは既存のコードリポジトリを分析することによって、欲しい機能に合ったコードスニペットを生成します。これらのツールは反復的タスクを自動化し、開発サイクルを加速し、今までにない、もっと革新的なコーディングに対するアプローチを探る試みを促進します。生成AIは膨大なオープンソースコードを利用して役に立つ洞察を提供し、開発者が高品質のソフトウェアを効率的に開発できるよう支援します。

そのいっぽうで、生成AIシステムは公開されているオープンソースコードを基にトレーニングされているため、オープンソースライセンスのコンプライアンスや、コードがそのままコピーされることによるセキュリティの問題に対する懸念が生じます。この記事では、オープンソースライセンスのコンプライアンスを確保し、AIシステムによってオープンソースコードからコピーされる可能性がある脆弱なソースコードを識別するうえで、スニペット検出がいかに重要であるかを説明します。

オープンソースのトレーニングデータ

通常、生成AIモデルは公開されているオープンソースコードを基にトレーニングされています。このトレーニングデータによって、AIシステムはコーディングのパターン、構造、スタイルを学習できます。しかし、生成されたコードには、オープンソースリポジトリからコピーされたコードがそのままの形で含まれる可能性があることに注意が必要です。そのため、オープンソースのライセンスコンプライアンスや、AI生成出力に脆弱性のあるコードが入り込むことによるセキュリティの問題に関して懸念が生じます。この記事で取り上げるユースケースは以下の3つです。

ユースケース1: 100%AI生成コード

AIが生成したコードに既存のオープンソースコードとの一致がない場合、果たすべきオープンソースライセンス義務はありません。コードは完全にAIシステムによって作成されたオリジナルであるため、オープンソースライセンスが課す制約を受けることなく利用および配布が可能です。このシナリオでは、大がかりなライセンスコンプライアンスや、場合によってはセキュリティ脆弱性の解析さえなくても、さまざまな目的にAI生成コードを利用できる柔軟性と自由があります。

ユースケース2: オープンソースとAI生成コードの混在

AI生成コードの出力にオープンソースのスニペットが含まれている場合、関連するオープンソースライセンスへのコンプライアンスを確保する必要があります。ところが、重大な疑問点があります。AIシステムが出力の一部としてオープンソースコードをコピーしたかどうかをどうやって知るか?という点です。このシナリオでは、生成されたコード内のオープンソースコードスニペットを識別し、関連するライセンスの条件を把握し、適切に義務を果たす必要があります。適切なライセンス表示、ライセンス互換性などの要因を考慮し、該当するオープンソースコードおよびそれを改変したものを利用できるかどうかを確認します。さらに、オープンソースからコピーされたコードに脆弱なコードが含まれていないかどうかも確認する必要があります。そのため、出所やライセンスも含めて、ソースコードスニペットを識別するためにSCAツールが必要です。

ユースケース3: 100%オープンソースコード

このシナリオでは、AIシステムは単にオープンソースリポジトリから100%コピーしたコードスニペットを提示します。このケースは、なぜSCAツールがオープンソースコードとその派生元および適用されるライセンスを識別するスニペット検出機能をサポートする必要があるかを明白に表しています。

オープンソースライセンスのコンプライアンス

AI生成コードにオープンソースのスニペットが含まれている場合、スニペットに関連するライセンス義務を果たす必要があります。それには、使用されているオープンソースコードを特定し、ライセンス条件を把握し、ライセンス表示やソースコード配布などの義務を果たし、他のソースコードとのライセンス互換性の問題がないことを確認するといった作業が含まれます。コンプライアンスによって、オープンソースのコントリビューターの権利が尊重されるよう保証し、健全で協働的なソフトウェアのエコシステム形成に貢献できます。しかし、そこで問題となるのが、AIシステムは、提示するソースコードが既存のオープンソースプロジェクトに由来するものかどうかを区別しないことです。この場合、AIシステムからコードを受け取るユーザーのほうがオープンソースコードを識別することになります。

セキュリティの問題とスニペット検出

ライセンスコンプライアンスに加えて、セキュリティの観点からもスニペット検出は非常に重要です。AIシステムによって、オープンソースプロジェクトから脆弱性のあるコードがそのままコピーされた場合、生成されたコードにセキュリティリスクが入り込みます。スニペット検出はそのような脆弱性を識別するのに役立ち、開発者が脆弱性を修正または軽減するために適切な対策を取ることを可能にします。スニペット検出時にソフトウェアセキュリティ解析ツールを使用すると、セキュリティの弱点を早期に検出して対処し、最終的なソフトウェア製品への潜在的な影響を最小限にすることができます。

ソフトウェア構成解析ツールの役割

ソフトウェア構成解析(SCA)ツールは、ライセンスコンプライアンスおよびセキュリティを目的としたスニペット検出に欠かせません。SCAツールはAI生成コードを解析し、既知のオープンソースリポジトリおよび脆弱性データベースと比較します。コードの一致を検出し、脆弱性データと照合することで、SCAツールはコピーされたコードに由来する潜在的なセキュリティ脆弱性を識別することを可能にします。これは開発者が脆弱性に対処してソフトウェアの全体的なセキュリティを確保するのに役立ちます。

結論

生成AI技術がコード生成によって開発者を支援するようになると、ライセンスコンプライアンスおよびセキュリティの観点から、スニペット検出が大きな重要性を持ちます。企業はオープンソースライセンスコンプライアンスの課題に対処し、脆弱性のあるコードがコピーされることによるセキュリティリスクを軽減する必要があります。スニペット検出および識別機能を持つSCAツールを利用すると、AI生成コードに含まれるオープンソースコードスニペットを正確に検出し、ライセンス義務を果たしたり、セキュリティ脆弱性をいちはやく識別して対処したりできます。このアプローチは、責任あるオープンソース利用の文化を醸成し、ソフトウェア製品がライセンスに準拠し安全であることを保証するのに役立ちます。

FossIDは、発足当初から、ソースコード内のオープンソーススニペットを検出し、出所のコンポーネントやライセンスを識別し、既知のセキュリティ脆弱性をレポートする機能をお客様に提供してきました。FossIDは、FossIDツールを試用し、必要に応じて他のツールと比較できるよう、期間限定ライセンスを提供しています。必ずお客様にご満足いただけると確信しています。

この記事は、FOSSID Blog 「How to Balance AI-Generated Code and Open Source License and Security Risks」投稿記事をFOSSID社の許可を得て翻訳したものです。)

 

SBOMソリューションのご案内

「テクマトリックスSBOMソリューション」は、SBOMの作成や管理、SBOM導入に向けた体制づくりなど、お客様の状況や要望に応じてツールやサービスを組み合わせて提供します。

テクマトリックスSBOMソリューション