hacktricks/pentesting-web/dependency-confusion.md

6.6 KiB
Raw Blame History

依存関係混乱

htARTEHackTricks AWS Red Team Expert を通じてゼロからヒーローまでAWSハッキングを学ぶ

基本情報

要約すると、依存関係混乱の脆弱性は、プロジェクトがスペルミス存在しないライブラリ、または指定されていないバージョンを使用しており、使用されている依存関係リポジトリが公開リポジトリから更新されたバージョンを収集できる場合に発生します。

  • スペルミス: requestsの代わりに**reqests**をインポート
  • 存在しない: 存在しない内部ライブラリであるcompany-loggingをインポート
  • 指定されていないバージョン: 内部存在するcompany-requestsライブラリをインポートしますが、リポジトリは公開リポジトリをチェックしてより大きなバージョンがあるかどうかを確認します。

悪用

{% hint style="warning" %} すべての場合、攻撃者は単に被害企業が使用しているライブラリの名前を持つ悪意のあるパッケージを公開する必要があります。 {% endhint %}

スペルミス&存在しない

企業が内部ではないライブラリをインポートしようとしている場合、ライブラリのリポジトリはおそらく公開リポジトリでそれを検索しようとします。攻撃者がそれを作成している場合、あなたのコードと実行中のマシンはおそらく侵害されるでしょう。

指定されていないバージョン

開発者がライブラリのバージョンを指定しないか、メジャーバージョンのみを指定することは非常に一般的です。その後、インタプリタはこれらの要件に一致する最新バージョンをダウンロードしようとします。
ライブラリが既知の外部ライブラリpythonのrequests)である場合、攻撃者はあまりできません。なぜなら、requestsというライブラリを作成することはできないからです(元の著者でない限り)。
ただし、この例のようにrequests-companyのような内部のライブラリの場合、ライブラリリポジトリ外部からも新しいバージョンを確認できる場合、公開で利用可能な新しいバージョンを検索します。
したがって、攻撃者が企業がrequests-companyライブラリバージョン1.0.1を使用していることを知っている場合(マイナーアップデートを許可)、ライブラリrequests-company バージョン1.0.2公開すると、企業は内部のものの代わりにそのライブラリを使用します。

AWSの修正

この脆弱性はAWSのCodeArtifactで見つかりました(このブログポストの詳細を読む)。
AWSは、内部依存関係を外部リポジトリからダウンロードするのを避けるために、ライブラリが内部か外部かを指定できるように修正しました。

脆弱なライブラリの検出

依存関係混乱に関する元の投稿では、著者が、JavaScriptプロジェクトの依存関係を含む数千の公開されたpackage.jsonファイルを検索しました。

参考文献

htARTEHackTricks AWS Red Team Expert を通じてゼロからヒーローまでAWSハッキングを学ぶ