Multiple Security Flaws Discovered in Popular Software Package Managers
2022/03/11 TheHackerNews — 一般的なパッケージ・マネージャには、複数のセキュリティ脆弱性が存在している。それらが悪用されると、侵入されたマシンでの任意のコード実行や、ソースコードやアクセストークンなどの機密情報へのアクセスを許してしまう可能性がある。つまり、この種のパッケージ・マネージャを取り扱う開発者は、いずれを使うにしても、悪意の影響を受けることに留意する必要がある。
SonarSource の研究者である Paul Gerste は、「リモートから開発者のマシンに対して、ダイレクトに攻撃を仕掛けることはできないため、開発者が不正なファイルを読み込むように騙すことが必要になる、しかし、インターネットや企業内リポジトリから使用する、すべてのパッケージの所有者を常に把握し、信頼することができるだろうか?」と述べている。
パッケージ・マネージャーとは、アプリケーションの開発に必要なインストール/アップグレード/コンフィグレーションを、自動化するためのシステムまたはツールのセットを指すが、そこにはサードパーティとの依存関係が存在する。
リポジトリをパッケージ化し、そこにセキュリティ・リスクを混入させし、不正なライブラリを構成する方法が存在する。つまり、タイポスクワッティングや依存関係の混乱による攻撃から保護するためには、依存関係を適切に精査する必要がある。依存関係を管理する行為は、通常、潜在的に危険な操作とは見なされない。
しかし、さまざまなパッケージ・マネージャの問題が発見され、攻撃者が被害者を騙して悪意のコードを実行させる武器になり得ることが、浮き彫りにされている。それらの欠陥は、以下のパッケージ・マネージャーで確認されている。
- Composer 1.x < 1.10.23 and 2.x < 2.1.9
- Bundler < 2.2.33
- Bower < 1.8.13
- Poetry < 1.1.9
- Yarn < 1.22.13
- pnpm < 6.15.1
- Pip (no fix), and
- Pipenv (no fix)
最も注意すべき欠陥は、Composer の browse コマンドにおける、コマンド・インジェクションの脆弱性である。その悪用に成功した攻撃者は、すでに公開されている悪意のパッケージへの URL を挿入することで、任意のコードを実行できる。
その悪意のパッケージが、タイポスクワッティングや依存関係の混乱を悪用している場合において、ライブラリに対して browse コマンドを実行すると、次のステージのためのペイロードが取得され、それを利用してさらなる攻撃が開始されるという、シナリオが発生する可能性がある。
また、Bundler/Poetry/Yarn/Composer/Pip/Pipenv でも、引数インジェクションと信頼できない検索パスの脆弱性が発見された。具体的には、マルウェアが混入した git 実行ファイルや Ruby プログラムの依存関係を、攻撃者が指定するための Gemfile などのファイルにより、悪意のコードを実行できるようになってしまう。
2021年9月9日に、一連の脆弱性が開示された後に、Composer/Bundler/Bower/Poetry/Yarn/Pnpm の問題に対応する修正プログラムが公開されている。しかし、信頼できない検索パスの欠陥の影響を受ける Composer/Pip/Pipenv は、このバグに対処しないことを選択した。
Paul Gerste は、「開発者たちが持つアクセス権は、企業の中核的な知的財産であるソースコードにもおよぶため、サイバー犯罪者にとって魅力的なターゲットである。攻撃者は、開発者を危険にさらすことで、諜報活動や悪意のコードの埋め込みなどを行える。それは、サプライチェーンへの攻撃にも利用できる。
言われてみればナルホドという、開発者を狙う攻撃ベクターになりますね。同じく、開発者の方々に目を通してもらいたい記事としては、2月16日の「ポイズンド・パイプライン:CI/CD 環境における攻撃メソッドについて」や、3月3日の「GitHub 調査:不適切なソースコード管理によりパスワードなどの機密情報が漏洩」などがあります。