
生成AIコーディングアシスタントは、開発を大きく効率化する一方で、OSS混入によるライセンス違反や既知の脆弱性取り込みによるセキュリティリスクの懸念があります。 開発者が安心してAIが生成したコードを活用するために、 FossIDによる対策方法をご紹介します。
生成AIによるソフトウェア開発の懸念
生成AIコーディングアシスタントの活用は、コーディングの時間を削減し、ソフトウェア開発を劇的に効率化してくれる可能性を秘めています。しかし、生成AIが提案するソースコードは、オープンソースソフトウェア(OSS)を学習のひな型として使うケースが多いため、OSSが混入することによる「ライセンス違反」や「脆弱性のセキュリティリスク」については注意を払う必要があります。
ライセンス違反/脆弱性のセキュリティリスク
生成AIは、さまざまなライセンスが適用されるOSSを含め、公開されているソースコードの大規模なデータセットに基づいてトレーニングされています。生成AIがOSSをベースにしたコードパターン、関数、小さなコードスニペットを再生成し、それが製品に組み込まれた場合、ライセンス義務が伴う可能性があります。寛容なライセンスであっても、ライセンス義務を果たさない利用は著作権侵害に該当し得ます。GPLなどの強いコピーレフト系のライセンスは、より大きなリスクが存在します。強いコピーレフト系のOSSの一部が製品のソースコードに組み込まれ、それが派生物と見なされれば、その製品のソースコード全体が開示対象になり得るなど、知財リスクにさらされます。
ライセンスの準拠に注意する必要があるケースは?
生成AIが出力した3つの異なるコードケースから、ライセンスの準拠に注意する必要がある番号はどれでしょうか。
- 100%生成AIコード:
(生成AIが完全に独自のコードを生成する場合)
→オープンソース ライセンスの義務はなく、企業はコードを自由に使用および配布できます。 - オープンソースと生成AIのハイブリットコード
(出力が生成AIコードとオープンソース コードの組み合わせである場合)
→それぞれのライセンスに準拠するオープン ソース コンポーネントを識別することが不可欠です。 - 100%オープンソース コード:
(生成AIがオープンソース リポジトリから完全にコピーされたスニペットを提供する場合)
→企業は特定のオープンソース ライセンスに準拠する必要があります。

注意するのは、2番と3番です。
AIが生成するソースコードには、OSSの断片が含まれる可能性があり、ライセンス違反や著作権侵害のリスクが存在します。もし、コードにOSS由来のコードが含まれている場合、企業はそれらのスニペットに関連するライセンス義務を履行する必要があります。
「コードベースの汚染」のセキュリティリスク
生成AIコーディングアシスタントの普及に伴い、汚染されたコードがソースコードに直接統合されたり、意図せずに混入するケースが増えています。
スニペット混入は、生成AIコーティングの経路だけでなく、Webからのコード流入、サードパーティー製のコード、社内の過去資産の流用コードから入るケースがあることにも注意が必要です。
<OSSスニペット混入がもたらす実害>
- ライセンス違反による損害賠償
- 差し止め・出荷停止・回収
- ソースコード開示の強制

OSSライセンス違反・脆弱性が含まれている場合、時間がたつほど対処が難しくなるため、こうしたリスクはできるだけ早く気付くことが重要です。 対策は「早期に検出できる状態をつくること」です。
FossIDによる対策方法: AI生成コードを安心して活用
FossIDは、ユーザーのソースコードに含まれているOSSをコンポーネント、ファイル、コードスニペットのレベルで検出し、そのライセンス情報と脆弱性情報を提供するSCAツール(ソフトウェア構成分析ツール)です。 AI生成コードの中にオープンソースコードが紛れ込んでいないかをスニペットレベルで検出し、開発チームが生成AIのメリットを安心して享受できる環境を提供します。 以下に、FossIDよる対策方法をご紹介します。
コードスニペット検出
OSSから部分的にコピー&ペーストしたソースのライセンス情報が確認できるコードスニペット検出にも対応しているため、より正確で広範囲な情報を可視化します。
- AI生成やコピー&ペーストされたコードスニペット
(パッケージを宣言していなくても、コードが製品に含まれている場合、FossIDはリスクを検出) - 変更またはリファクタリングされたコード
(FossID社のデジタルフィンガープリンティングの6行検出閾値は、フォーマットに関係なくコードを識別し、名前変更や構造変更にも対応)

脆弱性スニペットファインダー
FossIDのVulnerable Snippet Finderは、コード行(スニペット)単位でFossIDナレッジベースと照合し、セキュリティ脆弱性の原因になりうるコードスニペットを検出します。
脆弱なコード(パッケージ名やバージョンだけでなく、既知のCVE※1に関連付けられた具体的なコード行。)
※1:NIST(アメリカ国立標準技術研究所)で公開されるCVE(Common Vulnerabilities and Exposures:共通脆弱性識別子)情報に基づく、OSSの脆弱性情報を表示し、早期にOSSのセキュリティ対策が行えます。
SBOMの生成(SPDX/CycloneDX/Excel出力)
FossIDはSBOMを生成し、SPDX、SPDX Lite、CycloneDX、Excelレポートなど用途に合わせたレポートを出力できます。SPDX, CycloneDXをインポートすることも可能です。信頼性の高いSBOMを生成することで、顧客への情報開示、内部ガバナンス、セキュリティレビュー、および規制遵守などに役立ちます。
シフトレフト
開発者は、ワークステーション上のFossIDをCI/CDパイプラインに組み込むツールを使用して、作業中のコードをスキャンできます。これにより、SDLCの後半で行われるスキャンで何が検出されるかを事前に把握でき、作業中のコードをチェックインした後に予期せぬ問題が見つかることがないという安心感を得られます。

FossIDのシフトレフトのイメージ
FossIDのしくみ
FossIDは、Workbenchサーバーにソースコードをアップロードし、ハッシュ値を生成するしくみであるため、クラウドベースのスキャン実行時に、FossIDサーバーにソースコード(ファイル名を含む)が送信されることはありません。ナレッジベースの照会には、ソースコードから生成されたハッシュ値だけが使用されます。

FossIDのしくみのイメージ
FossID:動画
詳しくは動画をご確認ください。
補足資料:AI生成コードシリーズ
AI生成コードの活用とその課題からトピックスを読み解いて、開発チームの邪魔をすることなく法務およびコンプライアンスチームを満足させるソリューションを選択するためのガイドを提供します。
- OSSスニペット検出でAIコーディングのリスクを軽減する
- 効果的なOSSスニペット検出
- 開発者エクスペリエンスを損なわずOSSスニペット検出を統合する方法
- 成功するOSSスニペット検出の鍵は柔軟な構成と自動化
- 必要だけれど気づいていなかったAppSecのアドバンテージ- Vulnerable Snippet Detection
