人気の高いプログラミング言語であるPythonには、膨大な量のパッケージコレクションが存在している。開発者はこうしたパッケージコレクションを通じて、開発に必要な機能を取得して利用している。パッケージコレクションアップデートも簡単に行え、開発において欠かすことのできない機能となっている。

しかし最近では、この機能がサイバー犯罪者に悪用されるケースが出てきている。パッケージを通じてマルウェアへの感染を促すケースから、情報窃取を行うケースまでさまざまだ。開発者はパッケージコレクションに登録されているパッケージは安全なものと認識しているが、実際にはこのようにリスクの高い「偽のパッケージ」が含まれていることがしばしば指摘されるようになってきている。

SANS Internet Storm Centerが5月24日(米国時間)、「ctx Python Library Updated with "Extra" Features - SANS Internet Storm Center」において、Pythonのパッケージコレクションに関する分析結果を報告した。報告には、Pythonのパッケージインデックス(pypi.org)に登録されている「ctx」Pythonパッケージが、乗っ取りを受けて悪意あるコードへアップデートされていたという内容が示されており注意が必要だ。

  • ctx Python Library Updated with "Extra" Features - SANS Internet Storm Center

    ctx Python Library Updated with "Extra" Features - SANS Internet Storm Center

ctxパッケージは2014年12月19日にアップロードされた「ctx 0.1.2」を最後にアップロードされていない。このパッケージはPythonのdictオブジェクトのサブクラスであるCtxを提供するもので、基本的に2014年12月19日を最後に開発が終了したとみられる。

しかし、このパッケージは最近不可解な動きを見せたという。2022年5月21日に同じものに置き換えられ、その後さらにバージョンアップが行われている。ctx 0.1.2が新しいctx 0.1.2へ置き換えられ、そのあとで0.2.2と0.2.6が公開されている。そして、この動きのうち、置き換えられた0.1.2と更新された0.2.6には次のような不可解な機能が追加されていたと指摘されている。

  • 置き換えられた0.1.2:ディクショナリ作成時にAWSアクセスキー、コンピュータ名、AWSシークレットアクセスキーを取得しようとするコードを追加
  • 0.2.6 :すべての環境変数を取得してBase64でエンコードし攻撃者の影響下にあるWebサーバにデータを転送しようとするコードを追加

元々のパッケージのメンテナのドメインの有効期限がすでに切れており、サイバー犯罪者は同じドメインを2022年5月14日に登録。このドメイン名を使ってパスワードリセットのメールを送信して、アカウントの乗っ取りを完了させたものとみられている。

この分析では、具体的にどのような手順を踏んで古いパッケージの乗っ取りが行われ、具体的にどういった改ざんを行ってアカウント情報の窃取などを行うかが示されている。

プログラミングで使われるパッケージ管理システムがサイバー犯罪者にとって新しいプラットフォームとして利用されつつあることを認識するとともに、パッケージを利用する際にはこうしたリスクが存在することを認識し、安全なものであるかどうかの確認を行うことなどが望まれる。