Nexus Repository Managerのデプロイメント資格情報が誤ってGitHubにリークされた。この問題は、2021年2月16日に脆弱性レポートが提出されたときに広く注目された。デプロイメント資格情報は暗号化されていたが、マスタパスワードもリークされていた。マスタパスワードはプレーンテキストでは保存されていなかったが、デコードは比較的簡単で、デプロイメント資格情報の復号化に使用できた。これらのシークレットは、2020年3月18日にGitリポジトリに保存されてから約350日間公開された。
脆弱性レポートが送信された後、シークレットは取り消され、NexusにデプロイされるすべてのJenkinsインスタンスに対して新しいシークレットが構成された。
資格情報は、Nexus Repository ManagerでホストされているMavenリポジトリを完全に制御する。このセキュリティリークはさまざまな方法で悪用することが可能だった。資格情報を使用して、すべてのアーティファクトを削除できたが、バックアップが維持されているため、影響は最小限に抑えられた。JARファイルなどのアーティファクトは、悪意のあるコードを含むように変更される可能性があった。pom.xml
などのビルドファイルを変更して、悪意のあるコードを依存関係に追加することもできた。
広範な監査の結果、Eclipse Foundationは、リリースアーティファクトが変更されていないことを確信している。ただし、すべてのスナップショットアーティファクトの監査はより困難であり、それらのアーティファクトが変更されていないことを証明することができない。
Eclipse FoundationのリリースエンジニアリングマネージャであるMikaël Barbero氏は、徹底的な監査にもかかわらず、すべてが安全であるという保証はないと述べ、次のように書いている:
私たちの知る限りでは、このリークが原因でリリースアーティファクトが汚染されていないことを検証することができました。残念ながら、スナップショットアーティファクトについてはできることがあまりありません。それらが約13kの署名されたjar (signed jars) であることを私たちは知っていますが、残りについては、何かを否定したり確認したりすることは不可能です。
資格情報は、RESTインターフェースを介してのみフルコントロールを提供した。これは、潜在的な攻撃者がファイルの最終変更時刻を変更できなかったことを意味する。資格情報は約350日間公開され、その間に約10万のファイルが作成または変更された。
約1万のファイルがMaven centralプロキシからのものであり、リークした資格情報では変更できなかった。その次にあるほとんどのファイルはJARファイルであり、そのうち21168はEclipse Foundationの証明書で署名されていて安全であることを意味した。一部のアーティファクトは、変更不可のMaven centralにも公開された。1548の署名のないリリースJARは同一であり、したがって汚染されていない。JarDiffを使用して、わずかに異なるアーティファクトのバイナリ比較を行った。
それでも、Maven centralと比較した pom.xml
ファイルのファイル比較など、さらに調査が必要な一部のJARファイルやその他のファイルが残っている。また、攻撃者が同じリリースの複数のアーティファクトを変更しないなど、いくつかの仮定を立てた。そのため、同じGroupId、ArtifactId、Versionと同じGroupId、ArtifactIdのペア、および同じバージョンを持つすべてのアーティファクトの最終変更時刻が同等であるかどうかを確認するためにチェックが行われた。
Eclipse Foundationは、リリースされたJARを安全であると見なしているが、60日間使用されていないスナップショットは削除する。また、すべてのアプリケーションの新しいスナップショットを作成するようにユーザにアドバイスしている。
今後これが発生しないようにするため、Gitフォルダにシークレットが生成されなくなった。次に、すべてのCommon Build InfrastructureのGitリポジトリにコードレビューが適用される。最後に、潜在的な将来の問題の影響範囲 (the blast radius) を減らすために、許可がよりきめ細かく与えられる。