Python Package Indexでタイポスクワッティングを行う悪意あるパッケージが発見される
Hayley Denbraver
2019年12月5日
0 分で読めます今週、悪意ある2つのパッケージがPython Package Index(PyPI)から削除されました。これらのパッケージ、jeIlyfish(特定のフォントで表示した場合にのみ違いに気づく、jellyfishのスペルミス)とpython3-dateutil(人気のdateutilパッケージを装ったもの)は、「タイポスクワッティング」と呼ばれる手法を悪用していました。タイポスクワッティングとは、ユーザーに悪意あるバージョンをダウンロードさせる目的で、一般的なパッケージに似た名前の悪意あるパッケージをアップロードすることです。
この記事では、これらのパッケージについて判明していることをまとめ、今回の事態の良い面と悪い面を詳しく説明し、関連する教訓を紹介します。また、脆弱性データベースのこちらとこちらから、詳細をご確認いただけます。
判明していること
エクスプロイトはjeilyfishパッケージに含まれています。python3-dateutilパッケージは、サブ依存関係としてjeilyfishライブラリを含んでいます。エクスプロイトの全容はまだ明らかになっていませんが、感染したマシンからSSHキーとGPGキーを盗み、リモートサーバーに送信するようです。両パッケージはPyPIから削除されました。
悪いニュース
jeilyfishライブラリは、ほぼ1年間PyPIに登録されていましたエクスプロイトの全容が明らかになっていないため、ダウンロードしたユーザーへの影響を推定するのは困難です
どちらの悪意あるパッケージにも、装っていたパッケージの機能がすべて含まれていたため、悪意あるパッケージを正規のものと誤認しやすい状況でした
タイポスクワッティングはPyPIに限らず、多くのパッケージマネージャーで問題となっており、今後も続く可能性があります
良いニュース
これらのライブラリのダウンロード数は比較的少なく、侵害された人は数百人程度と考えられます
python3-dateutilパッケージがPyPIに登録されていたのは、わずか数日間です両方の悪意あるライブラリは削除されました
どちらの脆弱性についても、プロジェクトを簡単に確認できます。Snykは無料で利用でき、プロジェクトが侵害されているかどうかを判定できます
今後に向けた教訓
パッケージをダウンロードする際は常に注意し、スペルを正確に確認してください。パッケージ名を推測して入力しないでください
タイポスクワッティングは間接依存関係を通じて悪意あるパッケージを混入させることがあり、発見が難しい場合があります
依存関係ツリーを常に把握しておきましょう。使用しているものを理解していれば、問題が発生したときに気づくことができます
人気のオープンソースリポジトリで悪意あるパッケージが見つかるケースが増えています。悪意ある可能性のあるパッケージを見つけたと思われる場合は、Snykのオープンソースパッケージに関する開示ポリシーに従って報告できます。
Snykでオープンソースパッケージのセキュリティ対策を始めましょう!
CTFを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、CTFの課題の解き方を学びましょう。