LiteLLM 1.107.0不正配布の侵入経路が判明、漏えいした鍵からGitHubを侵害

この記事は約3分で読めます。

LiteLLMは日本時間10月24日朝、マルウェア入りの1.107.0が不正配布された事件の調査結果を公表しました。公開リポジトリに漏れた内部サービスの鍵が失効されないまま残り、攻撃者がその鍵からGitHub組織の所有者権限を奪っていたことが分かりました。

利用者の確認対象は、10月21日夜(日本時間)のPyPI版1.107.0と、不正なコンテナーイメージです。LiteLLMは不正ファイルを除去する前に、該当環境でPythonやpipを起動せず、復旧と認証情報の更新を進めるよう案内しています。

漏えいした鍵から公開工程へ侵入

確定した調査報告によると、5月27日(UTC)、Agent Platformのマスターキーが公開リポジトリにコミットされました。該当コミットを履歴から取り除いた後も、鍵は失効されていませんでした。

攻撃者は10月10日(UTC)にその鍵でAPIへ入り、GitHub組織所有者のCLI用OAuthトークンを取得しました。さらにCIへ秘密情報を外部送信する処理を追加し、別の保守担当者2人のトークンも盗んでいました。

10月21日(UTC)には所有者権限でブランチ保護を外し、ビルド元を正規のBerriAI/litellmから似た名前のBerri-AI/litellmへ変更しました。攻撃者は別の盗難トークンで公開を承認し、正規の署名が付いた不正な成果物を公式の配布先で公開しました。

LiteLLMによると、当時はバックポート対応のため、社内の物理端末に紐づく承認制限を緩め、エンジニア2人で公開を起動・承認できるようにしていました。所有者のトークンがサービス専用でなく、権限も絞られていなかったこともLiteLLMが報告しています。

PyPI版1.107.0とコンテナーの対象

利用者向け告知によると、PyPIのlitellm==1.107.0は全7ホイールが対象です。コンテナーイメージは当時のv1.107.0・latest・main-latest・main-stableの各タグが対象です。

配布先 10月21日の期間(UTC) 日本時間
PyPI 11:39:51~13:23 20:39:51~22:23
Docker Hub 11:46:56~14:20 20:46:56~23:20
GHCR 11:46:56~13:51 20:46:56~22:51

GHCRの終端は「この時刻までに取得不能になった」という告知上の上限です。GHCRではghcr.io/berriai/litellmに加え、litellm-databaseとlitellm-non_rootも対象でした。非公開のEnterpriseレジストリと、GitHub上の公式ソースタグは対象外とされています。

上記の期間にこれらの成果物を取得した環境では、公式告知のイメージダイジェストや実行履歴を調べてください。告知はlitellm-1.107.0.dist-infoなどの残存ファイルも、補助的な調査情報に挙げています。

不正ファイルの除去前にPythonやpipを起動しない

不正な版は認証情報を盗み、遠隔コード実行用ツールを読み込みます。LiteLLMは、該当環境でPythonを起動するとcook.pthやsitecustomize.pyから再実行され、pipの起動もこれに含まれると警告しています。

公式手順では、シェルから不正な起動用ファイルを取り除き、/tmp/remote_code_loader.lockを保持する常駐Pythonプロセスを停止してから、復旧を進めます。コンテナーや仮想環境のクリーンな再構築を推奨し、告知では1.106.2への固定を案内しています。作業時は、公式の復旧手順を確認してください。

LiteLLMは、外部通信できるホストに不正版をインストールしていた場合、情報が流出したものとして対処するよう案内しています。その環境から読み出せたAPIキー、マスターキー・仮想キー、データベースのパスワード、クラウドの認証情報、ホスト上のプロセスの環境変数にあった秘密情報を失効・更新します。

参考情報

コメント

タイトルとURLをコピーしました