Skip to main content

Python Package Indexでタイポスクワッティングを行う悪意あるパッケージが発見される

著者
Headshot of Hayley Denbraver

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の課題の解き方を学びましょう。