Trellixは9月21日(米国時間)、「Tarfile: Exploiting the World With a 15-Year-Old Vulnerability」において、Pythonのtarfileモジュールにある既知の脆弱性が世界中で悪用されていると伝えた。セキュリティベンダーであるTrellixのセキュリティチームが、無関係な脆弱性の調査を行っていたところ、偶然発見したと報告している。

  • Tarfile: Exploiting the World With a 15-Year-Old Vulnerability

    Tarfile: Exploiting the World With a 15-Year-Old Vulnerability

悪用されている脆弱性は発見された当初、新たなゼロディ脆弱性であると見られていた。しかしながら、15年前にCVE-2007-4559として特定されている、既知の脆弱性であることが明らかとなった。深刻度がCVSSv2スコア値6.8でMedium(警告)と位置づけられているこの脆弱性は、tarfileモジュールのextractおよびextractall関数におけるパストラバーサル攻撃であり、攻撃者はtarファイル名に「...」シーケンスを追加することで、任意のファイルを上書きすることができるとされている。

調査していく中で、何十万ものリポジトリがこの脆弱性の影響を受けることが判明している。CVSSv2のスコア値は高くないものの攻撃者がファイルの書き込みからコードを実行できることが確認されているとのことだ。攻撃者がこの脆弱性を悪用するには、ファイル名にオペレーティングシステムのセパレータ("/"または" \")と共に"... "を追加し、ファイルが展開されるはずのディレクトリをエスケープする必要がある。Pythonのtarfileモジュールを利用すれば、tarアーカイブに追加される前にファイルのメタデータを解析して変更するフィルタを追加することができ、わずか6行のコードでエクスプロイトを作成することが可能と説明されている。

攻撃されたユーザーにソーシャルエンジニアリングを試みてコードを追加して攻撃者に管理者権限でコードを実行させる方法や、Windows以外のオペレーティングシステムでもこの脆弱性を悪用した攻撃が行えることを示すLinuxとDocker上で動作するITインフラ管理サービスへの悪用方法を紹介したデモビデオがYouTubeで公開されている。

この脆弱性は驚くほど簡単に悪用することができ、複雑なセキュリティに関する知識はほとんど必要ないとのことだ。この脆弱性が広く出回っていることから、Pythonのtarfileモジュールが世界中のインフラを脅かす大規模なサプライチェーンの問題になっているとし、可能な限り多くのオープンソースリポジトリにパッチを適用などの緩和策を実施することが望まれている。