ソフトウェア開発界における悪夢が現実のものとなった。著名なAIの基礎となる依存ライブラリ「LiteLLM」のPyPI公開バージョンが、深刻なサプライチェーン攻撃を受けたばかりである。AI界の重鎮であるAndrej Karpathy(アンドレイ・カルパシー)氏はこの事態に極度の衝撃を受け、現代のソフトウェアにおいて最も恐ろしい出来事だと断言した。
その破壊力はどれほど凄まじいものか?ターミナルで極めて一般的なインストールコマンド「pip install litellm」を実行するだけで、あなたの重要な情報のすべてが丸裸にされる。
攻撃者は、マシン上で発見できるすべての重要な認証情報を直接的に搾取する。対象には、SSH秘密鍵、主要クラウドサービスプロバイダー(AWS、GCP、Azure)の認証情報、Kubernetes構成、Git認証情報、APIキーを含むすべての環境変数、シェル履歴、仮想通貨ウォレット、SSL秘密鍵、CI/CD的秘密ファイル、そしてデータベースのパスワードが含まれる。
この事態の元凶となったのは、「LiteLLM 1.82.8」というバージョンである。このバージョンには、Base64エンコードされた命令を含む特別なファイル「litellm_init.pth」が埋め込まれていた。このファイルは、前述の機密情報をリモートサーバーへ送信するだけでなく、自己複製の能力さえ備えている。
LiteLLMの月間ダウンロード数は9,700万回に達しており、その事実だけでも十分に恐ろしい。しかし、より致命的なのはウイルスのような伝染性だ。LiteLLMを基礎的な依存ライブラリとして使用している他の大規模プロジェクトをインストールした場合でも、同様に即座に罠にかかることになる。例えば、LiteLLMのバージョンが1.64.0以上であることを要求する「DSPy」ライブラリをインストールしようとするだけで、あなたのコンピュータはすでに掌握されていることになる。
さらに事態は悪化の一途をたどっている。GitHub上で関連する脆弱性问题が公開された際、プロジェクトの所有者が「対応するつもりはない」という理由でそれを直ちにクローズしたのだ。これにより、プロジェクトメンテナのアカウントが完全に乗っ取られたとほぼ断定できる。
幸運なことに、この悪意のあるバージョンは公開から1時間も経たずに発見された。発見の経緯は劇的そのものであり、それは完全に攻撃者が書いたコードにバグがあったためだ。
当時、開発者であるCallum McMahon氏は「Cursor」エディタ内でMCPプラグインを使用しており、このプラグインの内部で間接的にLiteLLMがプルされていた。その結果、1.82.8がインストールされると同時に、同氏のコンピュータはメモリを枯渇させ、完全にクラッシュした。もし攻撃者がシステムクラッシュを引き起こすような不完全なコードを記述していなければ、今回の極めて危険な攻撃は数日、あるいは数週間にわたって潜伏し、発見されないままだった可能性がある。
Karpathy氏の見解によれば、こうしたサプライチェーン攻撃は極めて危険である。依存関係をインストールするたびに、見えない深層の依存ツリーの中から悪意のあるコードパッケージを取り込んでしまう可能性があるからだ。これは膨大な依存関係を持つ大規模プロジェクトにとって、極めて高いリスクとなる。さらに、ハッカーが攻撃を通じて窃取した認証情報は、より多くのアカウントの乗っ取りに悪用され、さらには多くのコードパッケージを攻撃するために使用され、悪循環を形成してしまう。
こうした現状に直面し、Karpathy氏のソフトウェアエンジニアリングに対する考え方に変化が生じている。従来の古典的なソフトウェアエンジニアリングの観念では、依存ライブラリは有益なものであり、開発者は既製のレンガを使ってピラミッドを建築するようなものだと考えられてきた。しかし彼は今、この手法を再評価せざるを得なくなり、外部依存関係の使用に対して以前より拒否反応を示している。彼の現在のスタンスとしては、機能が十分にシンプルであり、条件的に許されるのであれば、大規模言語モデル(LLM)を利用して機能コードを生成し、それを自ら使用することを好んでいる。これにより、恐ろしいセキュリティリスクを回避しようとしているのだ。