Aikido

現代のソフトウェアにおけるオープンソースライセンスのリスクを理解する

執筆者
マッケンジー・ジャクソン

オープンソースは、ソフトウェア開発において最も素晴らしいことの一つです。

しかし、意図せず法的な義務を負ってしまう最も簡単な方法の一つでもあります。

ほとんどのチームは、オープンソースの依存関係に大きく依存していることを認識しています。しかし、それらの依存関係がどのようなライセンスを使用しているか、それに伴う義務は何か、あるいはそれらのライセンスが推移的な依存関係やコンテナイメージをどのように伝播するかを正確に知っているチームは少ないです。

そのギャップを、私たちはオープンソースライセンスリスクと呼んでいます。

オープンソースライセンスリスクとは何ですか?

すべてのオープンソースパッケージにはライセンスが付帯しています。そのライセンスは、コードで許可されることと、その対価として行わなければならないことを定義しています。

ライセンスリスクは、それらの義務がソフトウェアの構築、出荷、または収益化の方法と衝突する場合に発生します。

一般的な例をいくつか示します。

  • コピーレフトライセンスは、特定の条件下でソースコードの共有を要求する場合があります。
  • 帰属表示要件は、配布物にライセンス条項や著作権表示を含める必要があることを意味します。
  • 制限付き使用ライセンスは、商用利用を禁止したり、通常とは異なる条件を課したりする場合があります。
  • ポリシー違反は、依存関係が貴社で許可されていないライセンスを使用している場合に発生します。

これらはオープンソースが危険であることを意味するものではありません。単に、ライセンスはルールであり、コードが無料であってもルールは適用されるということです。

一般的なオープンソースライセンスと、その主なリスク

ライセンス タイプ 主な使用場所 注意すべき主なリスク
MIT 許諾型 JavaScript、npm、Python 配布物には著作権表示とライセンス条項を含める必要があります。出荷される製品では見落とされがちです。
BSD (2条項 / 3条項) 許諾型 インフラストラクチャ、ネットワーキングライブラリ 帰属表示が必要です。3条項では、推奨目的での貢献者名の使用が制限されます。
Apache 2.0 許諾型 Java、クラウドネイティブ、CNCFプロジェクト 帰属表示とNOTICEファイルの添付が必要です。特許終了条項が含まれます。
ISC 許諾型 システムレベルのツール MITライセンスと非常に似ており、帰属表示は引き続き必要です。
GPL v2 強力なコピーレフト システムツール、古いライブラリ 結合された著作物の一部として配布される場合、ソースコードの公開を要求する場合があります。
GPL v3 強力なコピーレフト セキュリティ、暗号、CLIツール アンチ・ティボライゼーション条項および特許条項を追加し、企業ポリシーによってしばしばブロックされます。
LGPL v2.1 / v3 弱いコピーレフト C/C++ 共有ライブラリ 動的リンクは許可されますが、静的リンクや変更はソース開示要件を引き起こす可能性があります。
AGPL v3 ネットワークコピーレフト データベース、バックエンドサービス ソフトウェアがサービスとしてのみ提供される場合でも、ソースコードの開示を要求する可能性があります。
MPL 2.0 ファイルレベルのコピーレフト Firefox、一部のバックエンドライブラリ ライセンスされたファイルへの変更は開示が必須です。ファイルを混在させると混乱を招く可能性があります。
CDDL 弱いコピーレフト データベース、レガシーJava GPLと互換性がありません。ライセンスの競合により再配布が妨げられる可能性があります。
EPL 2.0 弱いコピーレフト Javaフレームワーク ファイルレベルのコピーレフト。GPLとの互換性問題があります。
SSPL ソースアベイラブル(OSI準拠ではない) データベース(例:MongoDBフォーク) 商用利用の制限あり。一般的にオープンソースとは見なされません。
BSL ソースアベイラブル データベース、インフラツール 時間差オープンソース。変換されるまで商用利用の制限が適用されます。
Unlicense / パブリックドメイン パブリックドメインに類似 小規模ユーティリティ 管轄区域における強制力の不明確さから、一部の法務チームはこれを却下します。
プロプライエタリ / カスタム 制限あり ベンダーSDK 利用規約により、再配布、変更、または商用利用が禁止される場合があります。

なぜチームが常に不意を突かれるのか

ほとんどのライセンス問題は、誤った判断によって引き起こされるものではありません。現代のソフトウェアが深く、階層的で、変化が速いため、これらの問題が発生します。

ライセンスリスクが見過ごされやすいいくつかの理由:

1. 推移的な依存関係は急速に増加します。

1つのパッケージを追加すると、そのパッケージがさらに10個追加し、それらがさらに50個追加します。

依存関係のツリーのどこかで、チームが直接選択することのないライセンスが導入されることがあります。それでも、その製品は出荷されます。

2. ライセンスメタデータは煩雑です

パッケージレジストリは完璧ではありません。ライセンスが欠落していたり、誤ってラベル付けされていたり、広範すぎたりする場合があります。複数のライセンスをリストするパッケージや、バージョン間でライセンスを変更するものもあります。

単一のメタデータフィールドに依存するだけでは、しばしば不十分です。

3. コンテナは独自の予期せぬ問題をもたらします

ソースリポジトリがクリーンであっても、コンテナイメージにはシステムパッケージ、言語ランタイム、ビルドツールが含まれています。

それらにもライセンスが付随します。

4. 監査は意図を考慮しません

顧客、パートナー、調達チームは、SBOMとライセンス開示をますます要求しています。「そこにあるとは気づきませんでした」という回答は、監査中に満足のいくものではありません。

適切なライセンス管理の実態

ライセンスリスクを管理するために、法学の学位や半年かかるプロセスは必要ありません。これをうまく行っているチームは、通常いくつかのシンプルな原則に従っています。

明確なライセンスポリシーを定義する

許可されるライセンス、レビューが必要なライセンス、ブロックされるライセンスを決定します。 

年に一度ではなく、継続的にスキャンします

ライセンスチェックは、通常のワークフローの一部として自動的に実行される場合に最も効果的です。プルリクエスト、CI、リリースパイプラインは、問題を早期に発見するための理想的な場所です。

依存関係が出荷される前にライセンス問題を修正することは、顧客が関与した後に修正するよりも劇的に簡単です。

真のリスクを優先します

すべてのライセンス検出が同じレベルの注意を払うに値するわけではありません。すべてをクリティカルとして扱うスキャナーは、すぐにバックグラウンドノイズと化します。

最もリスクの高いライセンスが目立つようにし、チームが迅速かつ自信を持って対応できるようにします。

監査対応可能な出力を生成します

いずれ、誰かがSBOMまたはライセンスレポートを要求するでしょう。そのような場合、スプレッドシートでの作業を開始するのではなく、「エクスポート」をクリックしたいはずです。

実際のライセンス適用 

ライセンス適用は、開発者がすでに作業している場所で実行される場合に最も効果的です。

実際には、ライセンスチェックは、個別の監査プロセスとしてではなく、プルリクエストやCI実行中に自動的に行われます。依存関係がポリシーに違反するライセンスを導入した場合、チームは変更をブロックするか、レビューのためにフラグを立てるか、単に監視するかを選択できます。

コードがマージされる前にライセンスの問題を表面化させることで、強制措置の予測可能性を保ち、リリースや監査時の直前の予期せぬ事態を防ぎます。

Aikidoがライセンスリスクをどのように判断するか(そしてその信頼性)

Aikidoは、精度、低ノイズ、監査対応を優先する階層的なライセンス検出アプローチを採用しています。


多くのライセンススキャナーは、静的パターンマッチングや不完全なメタデータに依存することで、多数の誤検知を生成します。時間が経つにつれて、これは結果への信頼を損ない、チームがライセンスの検出結果を完全に無視する原因となります。

Aikidoは、パッケージレジストリの単一の「ライセンス」フィールドに依存しません。実際の依存関係ツリーでは、そのメタデータはしばしば欠落していたり、一貫性がなかったり、誤解を招くものであったりします。

代わりに、正確かつ監査に適した多層的なプロセスを採用しています。

1) 完全な依存関係とライセンスのグラフを構築

複数のエコシステムにわたるマニフェストとロックファイルをインジェストし、依存関係グラフに正規化します。各依存関係はレジストリとリポジトリのメタデータで強化され、推移的な依存関係やコンテナイメージ内のOSパッケージを含め、実際に提供しているものの信頼性の高いインベントリを取得できます。

2) 一般的なケースにはまずルールを適用

標準ライセンス(MIT、Apache-2.0、BSDなど)を持つパッケージの「退屈な80%」については、Aikidoは決定論的な検出ルールを使用します。これにより、高速かつ一貫性があり、不要なノイズを回避できます。

3) 曖昧または複雑なケースにはAI分析

ライセンスが不明確な場合(カスタム条項、異常なフォーマット、メタデータの欠落、または複数のライセンスファイル)、AikidoはAIベースの分析を適用し、パッケージ内に存在するものを解釈し、静的ツールでは見落とされがちな義務を特定します。

大規模または非標準のライセンステキストを処理するために、ライセンスファイルを関連するセクションに分割し、モデルが重要な部分(コピーレフト条項、再配布要件、制限付き使用条件など)に集中できるようにします。

4) 影響の大きいエッジケースには人間の法的検証

Aikidoには検証ステップが含まれており、曖昧な、または影響の大きい検出結果は法務専門家によってレビューされます。これにより、最終的な分類が単なる最善の自動化ではなく、実際のライセンス義務を反映していることが保証されます。

5) バージョン固有の結果とポリシー適用

ライセンス義務はバージョン間で変更される可能性があります。Aikidoは、提供する正確な依存関係のバージョンに対してライセンスを解決し、そのデータをポリシー制御に接続することで、チームはCI/CDで「許可/レビュー/ブロック」ルールを直接適用できます。

Aikidoが他のツールとどう比較されるか

機能 Aikido ソケット JFrog Curation
ライセンス検出アプローチ ハイブリッド(ルール + AI + 法的レビュー) 静的パターンマッチング メタデータ + ルール
誤検知
カスタム / プロプライエタリライセンス 強力 制限あり 制限あり
バージョン固有の解決 はい しばしば脆弱 部分的
PR時の適用 はい はい はい
マルウェア検出 はい いいえ 制限あり
Pre-CVE / CVEにないリスク はい いいえ 制限あり
エコシステムカバレッジ 非常に広範囲 JSに特化 広範
コンテナ内のOSパッケージ はい 部分的 はい

Aikidoは、ルール、AIベースの分析、および法的検証を組み合わせたハイブリッドアプローチを採用しています。これにより、静的パターンマッチングに主に依存するツールよりも、誤検知が少なく、カスタムまたはプロプライエタリなライセンスの処理が向上します。

ライセンステキストのみに焦点を当てるツールとは異なり、AikidoはマルウェアやCVE公開前のリスクも検出し、ソフトウェアサプライチェーンリスクのより完全なビューを提供します。エコシステムのカバレッジはアプリケーションの依存関係を超えて、コンテナイメージ内のオペレーティングシステムパッケージを含みます。

Socketは主にJavaScriptエコシステムと静的ライセンス検出に焦点を当てており、しばしば高い誤検知率や脆弱なバージョン処理につながります。JFrog Curationはより広範なエコシステムをサポートしますが、カスタムライセンスやCVE以外のリスクへの対応は限定的です。

ライセンスの強制は単独で存在するものではありません。現実世界のサプライチェーンリスクには、マルウェア、侵害されたパッケージ、およびまだCVEが割り当てられていない新たな脅威が含まれます。Aikidoは、そのより広範な全体像の一部としてライセンスリスクに対処するように設計されました。

最後に

オープンソースライセンスは恐れるべきものではありませんが、尊重すべきものです。

現代の依存関係ツリーの規模では、手動での追跡は機能しません。ライセンスリスクに先行して対応するチームは、可視性の自動化、実際の問題の優先順位付け、開発の早期段階でのチェックの統合という3つのことをうまく行っています。

それこそが、私たちがAikidoを構築した目的です。

ライセンススキャンが既存のワークフローにどのように適合するかを確認したい場合は、数分で試すか、最初のSBOMを生成できます。将来の自分、そしておそらく法務チームが感謝するでしょう。

共有:

https://www.aikido.dev/blog/open-source-license-risk

脅威ニュースをサブスクライブ

今日から無料で始めましょう。

無料で始める
CC不要
4.7/5
誤検知にうんざりしていませんか?

試してみてください Aikido 10万人以上が実践中
今すぐ始める
パーソナライズされたウォークスルーを入手する

10万以上のチームに信頼されています

今すぐ予約
アプリをスキャンして、IDOR(内部データ操作脆弱性)と実際の攻撃経路を検出する

10万以上のチームに信頼されています

スキャンを開始
AIがアプリをペネトレーションテストする様子をご覧ください

10万以上のチームに信頼されています

テストを開始

今すぐ、安全な環境へ。

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要です | スキャン結果は32秒で表示されます。