Microsoftは米国時間2月9日、「3 Ways to Mitigate Risk When Using Private Package Feeds」(プライベートなパッケージフィードを使用する際にリスクを緩和する3つの方法)というホワイトペーパーを公開し、企業のアプリ開発環境上でビルドプロセスを汚染するために使用可能な「依存関係かく乱(dependency confusion)攻撃」、または「置換攻撃(substitution attack)」と呼ばれる新種の攻撃技法について警告した。
![コマンドプロンプト画面](/storage/2021/02/12/417df2155e1fa6f15d1c93a29985ed61/dependency-confusion_1000x500.jpg)
提供:Alex Birsan
この技術は、パッケージマネージャーや、パブリックおよびプライベートなパッケージリポジトリー、ビルドプロセスといったコンセプトに基づくものとなっている。
今日ではどのような規模の企業でも、アプリのビルド時にはパッケージマネージャーを用いて必要となるライブラリーをダウンロード/インポートしているはずだ。その後、ビルドツールを用いてそれらのパーツを組み立て、最終的なアプリを構築することになる。
完成したアプリはその企業の顧客に提供されたり、従業員向けのツールとして社内で用いられたりする。
しかしこれらアプリの一部にはその性質によって、プロプライエタリーなコードや、極めて機密性の高いコードが含まれる場合もある。企業はそういったアプリのためにしばしば、社内ネットワーク上でプライベートな(つまり内部)パッケージリポジトリーをホストし、そのリポジトリー内にプライベートなライブラリーを格納した上で、それを使用するという手段を採る。
企業の開発者はアプリをビルドする際、これらのプライベートライブラリーと、「npm」や「Python Package Index(PyPI)」「NuGet Gallery」といったパッケージ管理用のパブリックなポータルからダウンロードしたパブリックライブラリーを混在させることになる。
新たな「依存関係かく乱攻撃」
あるセキュリティ研究者のチームは、9日に公開した調査結果の中で、新たな「依存関係かく乱攻撃」というコンセプトの詳細を発表した。これは大企業でさまざまなライブラリーを混在させているアプリのビルド環境をかく乱させるという攻撃だ。
研究者らによると、社内でアプリをビルドする過程で用いられているプライベートライブラリーの名前を攻撃者に知られた場合、攻撃者はそのライブラリーと同じ名前を付けた悪意あるコードのライブラリーをパブリックなパッケージリポジトリーに登録することで攻撃できるようになるという。
「依存関係かく乱攻撃」は、開発者が自社環境でアプリをビルドする際に、パッケージマネージャーが社内リポジトリーに格納されたライブラリーではなく、パブリックリポジトリーに格納されている同名の(悪意ある)ライブラリーを使用することで成立する。
同研究チームは今回の発見をテストするために、大手IT企業が誤って公開してしまったさまざまなライブラリーの名前と同じ名前を持つライブラリーをnpmや「RubyGems」、PyPIといったパッケージリポジトリー上に登録したという。
研究者らはこの手法を用いて、AppleやMicrosoft、PayPal、Shopify、Netflix、Yelp、Uberなどを含む35の組織が使用しているアプリ内にコード(悪質なものではない)をロードさせることに成功したと述べた。
しかも研究者らによると、npmやRubyGems、PyPIのほか、「JFrog」などのパッケージマネージャーも脆弱だという。
Microsoftは企業に社内のパッケージリポジトリー確認を推奨
同研究チームは、影響を受けた企業とパッケージリポジトリーすべてに対して通知したと述べており、Microsoftはこの問題の深刻さをどこよりも理解しているようだ。
Microsoftは同研究チームの調査結果を受け、上述のホワイトペーパーを公開し、企業に対して社内のパッケージリポジトリーを確認するよう推奨している。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。