Malicious PyPI package with 37,000 downloads steals AWS keys

fabrice」という悪意のあるPythonパッケージが2021年以来Python Package Index(PyPI)に存在し、無防備な開発者からAmazon Web Servicesの認証情報を盗んでいる。

アプリケーション・セキュリティ企業のSocketによると、このパッケージは3万7000回以上ダウンロードされており、WindowsとLinuxのプラットフォーム固有のスクリプトを実行する。

ダウンロード数の多さは、fabriceが正規のSSHリモートサーバー管理パッケージ「fabric」のタイポスクワットをしていることに起因している。

ある専門家は、fabriceがこれほど長い間検出されなかったのは、高度なスキャンツールがPyPIに最初に投稿された後に導入され、遡及スキャンを実施するソリューションがほとんどなかったためだと説明している。

OS固有の挙動

fabriceパッケージは、実行するOSに応じた動作をするように設計されている。

Linuxでは、’~/.local/bin/vscode’に隠しディレクトリを設定し、複数のファイルに分割されたエンコードされたシェルスクリプトを保存します。このシェルスクリプトは外部サーバ(89.44.9[.]227)から取得されます。

このシェルスクリプトはデコードされ、実行権限が付与されるため、攻撃者はユーザー権限でコマンドを実行できるようになる、と研究者は説明している。

Windows上では、fabriceは、隠されたPythonスクリプト(d.py)を起動するために作成されたVBScript(p.vbs)であるエンコードされたペイロード(base64)をダウンロードします。

このPythonスクリプトは、被害者のダウンロードフォルダにドロップされる悪意のある実行ファイル(’chrome.exe’)を取得する役割を果たします。このスクリプトの目的は、15分ごとに実行されるWindowsタスクをスケジュールすることであり、再起動をまたいだ持続性を確保することです。

AWS認証情報の窃盗

オペレーティングシステムに関係なく、fabriceの主な目的は、Amazon Web Servicesの公式Python SDKである「boto3」を使用してAWS認証情報を盗むことです。

Boto3セッションが初期化されると、環境、インスタンスメタデータ、またはその他の設定されたソースからAWS認証情報を自動的に引き出します。

その後、攻撃者は盗んだキーをVPNサーバー(パリのM247が運営)に流出させるため、流出先の追跡が困難になります。

Python function to steal AWS credentials
AWS クレデンシャルを盗む Python 関数
Source:ソケット

ユーザがPyPIからダウンロードしたパッケージをチェックすることで、タイポスクワッティングのリスクを軽減することができる。また、このような脅威を検出しブロックするために特別に作成されたツールもある。

AWSリポジトリを不正アクセスから保護するという点では、管理者はリソースへの権限を管理するためにAWS Identity and Access Management (IAM)を考慮すべきである。