セキュリティ

Pythonの15年間見過ごされてきた脆弱性が30万件以上のオープンソースリポジトリに影響を与える可能性


プログラミング言語のPythonで、2007年に存在が公開されたものの修正されなかったバグが再発見されました。任意コード実行可能な脆弱性にもつながるこのバグの影響は、コーディング自動化ツールを介してさまざまなプロジェクトに広まっており、修正するべきオープンソースリポジトリが35万件以上にも及ぶと指摘されています。

Tarfile: Exploiting the World With a 15-Year-Old Vulnerability
https://www.trellix.com/en-us/about/newsroom/stories/threat-labs/tarfile-exploiting-the-world.html

Tarfile: Exploiting the World With a 15-Year-Old Vulnerability
https://www.trellix.com/en-us/about/newsroom/stories/threat-labs/tarfile-exploiting-the-world.html

問題となっているバグはCVE-2007-4559としてタグ付けされており、Pythonのtarfileモジュールに存在する脆弱性とされています。

tarfileモジュールは、複数の異なるファイルとメタデータを収納するtar形式アーカイブの読み書きをするためのモジュールです。tar形式のアーカイブに含まれるメタデータには、ファイル名やファイルサイズ、チェックサム、ファイルの所有者情報など、さまざまな情報が含まれ、Tarinfoクラスによって表わされます。


そして、tarfile.extract()関数とtarfile.extractall()関数で、Tarinfoオブジェクト内の情報を明示的に信頼し、関数に渡されるパスとTarinfoオブジェクト内のファイル名を結合するという仕様になっていることが、攻撃者にディレクトリトラバーサルを許す脆弱(ぜいじゃく)性になっているとのこと。つまり、悪意のある人物がファイルシステムにアクセスできるようになり、任意コード実行が可能になってしまうというわけです

このCVE-2007-4559は2007年8月にPython開発のメーリングリストで報告されています。しかし、この脆弱性についてはこれまで修正されることがなく、そのリスクについて公式ドキュメントで警告されるのみでした。

2022年にセキュリティ企業のMcAfeeFireEyeの統合企業であるTrellixのAdvanced Research Centerは、関係のない脆弱性についての調査の中で、このCVE-2007-4559を再発見したとのこと。Trellixは実際にCVE-2007-4559をWindows環境で悪用するデモンストレーションをYouTubeで公開しています。

Spyder IDE Demo Video - YouTube


また、Linux環境で実行するところが以下のムービー。

Polemarch Demo Video - YouTube


Trellixの研究者はCVE-2007-4559の影響を受けている可能性の高い257件のリポジトリをスクレイピングし、そのうちの175件を手動でチェックして確認したところ、61%がtarfile.extract()あるいはtarfile.extractall()による脆弱なコードを含んでいると判明。さらに残りのリポジトリもすべてチェックしたところ、全体の65%が脆弱なコードを含むことがわかりました。


Trellixによると、35万件を超えるリポジトリがこの脆弱性に脅かされていると見られ、その多くでGitHub Copilotなどの自動ツールが使われているとのこと。自動ツールはすべてを自動で行うため、さまざまなリポジトリのコードから学習しています。学習元となっているリポジトリに脆弱なコードが含まれている場合、開発者が知らないうちにプロジェクトのセキュリティリスクが高まってしまう可能性があります。

すでにTrellixは1万1000件以上のプロジェクトで修正パッチを作成し、プルリクエストの作成準備を整えているとのこと。研究者は今後数週間で7万件以上のプロジェクトが修正されると予想していますが、マージリクエストがメンテナーに受け入れられなければ修正されないため、すべてのプロジェクトが完全に修正されるのは難しいだろうとみています。

この記事のタイトルとURLをコピーする

・関連記事
プログラム言語のPythonとPHPのライブラリが乗っ取られて悪意のあるバージョンが公開、開発者の情報が収集される - GIGAZINE

JavaのLog4jライブラリで発見された脆弱性「Log4Shell(CVE-2021-44228)」はなぜ世界中に大きな影響を与えるのか? - GIGAZINE

Googleがオープンソース脆弱性のデータベースをPythonやGoにまで拡大 - GIGAZINE

ソフトウェアの「パッケージ」を利用してAppleやPayPalなどの大企業をハッキングする方法とは? - GIGAZINE

Python製のマルウェアが台頭してきているという指摘 - GIGAZINE

in ネットサービス,   動画,   セキュリティ, Posted by log1i_yk

You can read the machine translated English article here.