安全な依存関係管理
依存関係のバージョンを固定し、CVEを監視し、ロックファイルを使用して、CIパイプラインでSCAを自動化します。
「安全な依存関係管理」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
依存関係がリスクとなる理由
現代のアプリケーションは、数百に及ぶサードパーティパッケージをインポートします。それぞれの依存関係と、その推移的依存関係によって攻撃対象領域が広がります。Log4j の Log4Shell のように、人気のあるライブラリの脆弱性によって、数千のアプリケーションが同時に危険にさらされる可能性があります。
ロックファイルとバージョン固定
ロックファイル(package-lock.json、yarn.lock、Pipfile.lock)は、推移的依存関係を含むすべての依存関係を正確なバージョンに固定します。ロックファイルはバージョン管理にコミットしてください。これにより再現可能なビルドが保証され、脆弱性を引き起こす意図しないバージョンアップを防止できます。
ソフトウェア構成分析 (SCA)
SCA ツールは、依存関係ツリーを CVE データベースと照合してスキャンし、脆弱なパッケージを特定します。OWASP Dependency-Check、Snyk、GitHub Dependabot は、既知の脆弱性を自動的に検出し、修正方法の案内とともに修正済みバージョンを提案します。
依存関係の自動更新
Dependabot と Renovate Bot は、新しい互換性のあるバージョンが利用可能になると、自動的に PR を作成します。これらはセキュリティ更新を優先します。CI に合格したパッチ更新に対して自動マージを設定すると、手作業を最小限に抑えながら依存関係を最新の状態に保てます。
新しい依存関係の評価
依存関係を追加する前に、ダウンロード数、最近のコミット状況、未解決Issueの数、ライセンスの互換性、既知のCVEの履歴を確認します。保守されていない代替パッケージよりも、十分に保守され、積極的なセキュリティ対応プロセスが整備されたパッケージを優先します。
推移的依存関係のリスク
直接依存するパッケージは、それぞれ独自の依存関係を取り込みます。event-streamのインシデントでは、攻撃者が数百万のパッケージで使用されていた推移的依存関係を掌握しました。直接依存するパッケージだけでなく、依存関係ツリー全体を監査します。
プライベートパッケージレジストリ
依存関係の混乱攻撃では、内部パッケージと同じ名前の悪意あるパッケージを公開レジストリに公開します。スコープ付きパッケージ名、プライベートレジストリの認証、.npmrcまたはpip.confで承認済みレジストリを許可リストに登録することで、リスクを軽減します。
サプライチェーンセキュリティ:SBOM
Software Bill of Materials(SBOM)は、ソフトウェアに含まれるすべてのコンポーネントを機械可読形式で一覧化したものです。SyftまたはCycloneDXを使用してSBOMを生成します。新しいCVEが公開された際、SBOMによって脆弱性の影響を迅速に評価できます。影響を受けるバージョンを数分で特定できます。
ライセンスコンプライアンス
OSSライセンスには遵守すべき義務があります。GPLではソースコードの開示が必要になる場合があります。MITとApache 2.0は寛容なライセンスです。FOSSAとTLDR-Legalは、ライセンスの互換性評価に役立ちます。商用製品にGPLが意図せず混入するのを防ぐため、CIにライセンススキャンを組み込みます。
完全性の検証
CDNでホストされるスクリプトに対するSubresource Integrity(SRI)では、integrity属性に暗号学的ハッシュを指定します。npmのpackage.jsonにはintegrityフィールドが含まれています。CIでパッケージをダウンロードする際にチェックサムを検証し、サプライチェーンの改ざんを検出します。
依存関係を最新に保つ
重大な脆弱性については、CVEの公開から24~48時間以内にセキュリティパッチを適用します。優先順位付けにはCVSSスコアと悪用可能性のデータを使用します。破壊的変更を伴うパッチ適用済みの依存関係であっても、本番環境に悪用可能な脆弱性を残すよりは適切です。
理解度チェック
依存関係の混乱攻撃とは何ですか。
まとめ
安全な依存関係管理には、ロックファイルでのバージョン固定、CI/CDでのSCAスキャンの実行、パッチ更新の自動化、影響評価のためのSBOM生成、導入前の新しい依存関係のセキュリティ態勢の評価が必要です。
よくある質問
「安全な依存関係管理」レッスンは無料ですか?
はい。「安全な依存関係管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「安全な依存関係管理」で何を学びますか?
依存関係のバージョンを固定し、CVEを監視し、ロックファイルを使用して、CIパイプラインでSCAを自動化します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「安全な依存関係管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。