Trellixのセキュリティ研究者は明らかにしたPythonのtarfileライブラリに存在し、ソフトウェアサプライチェーン攻撃に悪用される可能性がある重大な脆弱性を。研究者らは、この脆弱性が大規模に組織を攻撃するために使われる可能性があり、SolarWindsを2年前に襲った攻撃と同程度に深刻なものとなる可能性がある。
さらに懸念されるのは、この脆弱性が15年前に初めて公表されたにもかかわらず、いまだ未修正であることだ。ソフトウェアサプライチェーンは非常に複雑で、多くの相互依存関係があるため、プロジェクトがこのモジュールを直接必要としていなくても、別のパッケージによってインストールされる可能性がある。
実際、このPythonモジュールは機械学習向けの人気フレームワークやアプリケーションで頻繁に使われており、リスクを大幅に高めている。
詳しくは「主要なコードデバッグ/コードセキュリティツール」
パストラバーサルの脆弱性がリポジトリを露出
Trellixによると、数十万件のリポジトリがパストラバーサル攻撃に対して脆弱であり、攻撃者はTARアーカイブ内のファイル名に「../」(ドット2つの並び)を追加するだけで、任意のファイルを上書きできる可能性がある。研究者らは、「ほとんどの場合、攻撃者はファイルへの書き込みによってコード実行に至る可能性がある」と結論付けた。
このエクスプロイトは「わずか6行のコード」で実行できるようだ。
tarfileモジュールは、ファイルシステムへのファイルの展開や書き込みを行う関数を提供している。コードが入力を過度に信頼し、展開関数に渡されたパスを結合するため、悪用される可能性がある。
研究者らはいくつかの動画を作成してエクスプロイトを実演しており、その中には、この脆弱性を悪用して管理者権限を取得する動画もある。Spyder IDEを悪用したもので、Pythonで作られた無料で人気のオープンソース環境だ。
このような手法はかなり一般的であり、脆弱性が懸念される理由となっている。また、「車輪の再発明を避ける」ためにパッケージが同じ依存関係を使うことも珍しくない。これは状況によっては妥当な議論だが、別のケースでは攻撃対象領域を広げる可能性がある。
Pythonのドキュメントが問題を警告
なお、Python公式ドキュメントは、この問題について明確に警告している。
研究者らは、小さなPythonスクリプト「creosote」を公開した。このスクリプトはディレクトリを再帰的に調べて.pyファイルを検索し、脆弱なファイルを表示する。管理者やユーザーはこれを使って、自分のコードに脆弱性がないか確認できる。
研究者らによると、このエクスプロイトには「複雑なセキュリティ分野について、ほとんど、あるいはまったく知識が必要ない」。また、この脆弱性は実環境で広く存在しているため、ソースコードやその他のPythonベースのツールをスキャンすることが推奨される。
「eSecurity Planet」への声明で、Trellixの研究者らは次のように述べた。「Python開発者が取っている姿勢の結果、現在の解決策は、開発者が脆弱な関数呼び出しの周囲に緩和コードを追加し、その新しいバージョンを顧客に提供することになっている。だからこそ、チームが脆弱性調査を行うことが不可欠なのだ。一般に、大規模な脆弱性は発見されれば修正できるか、簡単な回避策を取れるからである」





