hacktricks/pentesting-web/dependency-confusion.md

7 KiB
Raw Blame History

依存関係の混乱

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

{% embed url="https://websec.nl/" %}

基本情報

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

  • スペルミス: 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ファイルを検索しました。

参考文献

{% embed url="https://websec.nl/" %}

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