説明:
コンポーネントは開発者がそのような変更に気付いたり、レビューしたり、承認することができないまま、変更される可能性があります。たとえば、ダウンロードリンクがバージョン管理されていないリソースを指している、バージョン管理されているリソースが安全でないデータ転送で改変や改竄されている、などの理由です。
異なる時点でダウンロードされた際に同一であることが保証されていないコンポーネントを使用することは、主にセキュリティ上のリスクになります。Codecov Bash Uploader などに対する攻撃は、ダウンロードされたスクリプトの完全性を事前にチェックせずに直接 bash にパイプするリスクを示しています。変異コンポーネントはソフトウェアビルドの安定性と再現性も脅かします。
事例:
CI/CD パイプラインにおけるバージョン管理されていないシェルスクリプトへの参照
Codecov bash uploaderarrow-up-right (2021)
コミット識別子のない Git リポジトリへの参照
パッケージレジストリへの安全でない HTTP リンク
CVE-2021-26291arrow-up-right in Apache Maven (2022)
対応:
常に同じ不変のアーティファクトを指すことを保証する (あるいは少なくともある程度の保証がある) リソース識別子を使用します。
コンポーネントのダウンロード後、インストールや使用する前にダイジェストや署名を検証します。
MITM 攻撃を避けるために、接続や配布には安全なプロトコルを使用します。
参照:
SLSA Immutable Referencearrow-up-right
CWE-829: Inclusion of Functionality from Untrusted Control Spherearrow-up-right
CWE-830: Inclusion of Web Functionality from an Untrusted Sourcearrow-up-right
OWASP Top 10:2021 A08:2021 - Software and Data Integrity Failuresarrow-up-right
Last updated 1 year ago