依存関係の混乱
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
要約すると、依存関係の混乱脆弱性は、プロジェクトがスペルミスのあるライブラリ、存在しないライブラリ、またはバージョンが指定されていないライブラリを使用しており、使用される依存関係リポジトリが公開リポジトリから更新されたバージョンを取得することを許可している場合に発生します。
- スペルミス: **
reqests
**をインポートする代わりにrequests
- 存在しない:
company-logging
をインポートする、もはや存在しない内部ライブラリ - バージョンが指定されていない: 内部の存在する
company-requests
ライブラリをインポートするが、リポジトリは公開リポジトリをチェックしてより新しいバージョンがあるかどうかを確認します。
悪用
warning
すべてのケースにおいて、攻撃者は被害者企業が使用しているライブラリの名前を持つ悪意のあるパッケージを公開するだけで済みます。
スペルミスと存在しない
あなたの会社が内部でないライブラリをインポートしようとしている場合、ライブラリのリポジトリは公開リポジトリでそれを探す可能性が非常に高いです。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンは非常に高い確率で侵害されるでしょう。
バージョンが指定されていない
開発者が使用するライブラリのバージョンを指定しない、またはメジャーバージョンだけを指定することは非常に一般的です。その場合、インタープリターはその要件に合った最新バージョンをダウンロードしようとします。
ライブラリが既知の外部ライブラリ(例えば、pythonのrequests
)である場合、攻撃者はあまりできることがありません。なぜなら、彼はrequests
という名前のライブラリを作成できないからです(彼が元の著者でない限り)。
しかし、ライブラリが内部のもので、例えばこの例のrequests-company
のように、ライブラリリポジトリが新しいバージョンを外部でもチェックすることを許可している場合、公開されている新しいバージョンを探します。
したがって、攻撃者が会社がrequests-company
ライブラリのバージョン1.0.1(マイナーアップデートを許可)を使用していることを知っている場合、彼はバージョン1.0.2のライブラリrequests-company
を公開し、会社は内部のものの代わりにそのライブラリを使用することになります。
AWSの修正
この脆弱性はAWSのCodeArtifactで発見されました(このブログ記事の詳細を読む)。
AWSは、ライブラリが内部か外部かを指定できるようにすることで、外部リポジトリから内部依存関係をダウンロードするのを避けるように修正しました。
脆弱なライブラリの発見
依存関係の混乱に関する元の投稿で、著者はJavaScriptプロジェクトの依存関係を含む何千もの公開されたpackage.jsonファイルを検索しました。
参考文献
- https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610
- https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。