LottieFilesのnpmパッケージ侵害に対するエクサフォースの対応

サプライチェーン攻撃の分析と、エコシステム保護のために実施した対策

Jakub Pavlik

Jakub Pavlik

Marco Rodrigues

Marco Rodrigues

2024年10月30日、LottieFilesの人気NPMパッケージである「lottie-player」を標的とした高度なサプライチェーン攻撃が発覚し、LottieFilesからの依頼を受けて、エクサフォースのインシデント対応チームが対応に入りました。

  • 本インシデントでは、フィッシング攻撃によりパッケージメンテナーの認証情報が侵害され、DeFiおよびWeb3コミュニティで使用される暗号資産ウォレットを標的とした悪意のあるコードが配布されました。
  • LottieFilesは迅速に対応し、エクサフォースと連携して1時間以内に攻撃を封じ込めることに成功しました。これにより、デイリーアクティブユーザーが1,100万人を超えると推定される同パッケージの広範なユーザーベースへの潜在的な影響を最小限に抑えました。
  • 一連の対応を通じて、LottieFilesは優れた対応スピードと、ユーザーコミュニティに対する強い責任感を示しました。

エクサフォースは、LottieFilesがこれまで築いてきた信頼を維持しながら、ユーザーコミュニティにサービスを提供し続けられるよう支援しています。主な対応は以下の通りです。

  • NPMパッケージのプロビナンス証明(provenance attestation)の導入を支援し、パッケージの出所およびビルドプロセスの暗号学的検証と、継続的な検知・対応を実現
Screenshot of a GitHub comment by a user suggesting npm provenance attestation with GitHub Actions and Sigstore for supply chain security
  • LottieFilesと継続的に連携し、セキュリティ体制の強化および重要システムの継続的監視を実施
  • インシデント後のフォローアップとして、知見およびベストプラクティスを共有するブログを公開予定

インシデントレポートの公式情報:

LottieFilesおよびNPMパッケージについて

LottieFilesは、開発者が軽量でスケーラブルなアニメーションを複数のプラットフォームで実装できるツールを提供し、Webアニメーションに革新をもたらしてきました。同社のエコシステムの中核にあるのが「lottie-player」NPMパッケージです。このパッケージは累計900万人以上のユーザーに利用され、週平均94,000件のダウンロードがあります。NPMパッケージは、現代のJavaScript開発の基盤を成すものであり、開発者がアプリケーションを効率的かつ安全に構築するための構成要素として機能します。ソフトウェアサプライチェーンにおいて、これらのパッケージは大きな価値を持つ一方で、潜在的な脆弱性にもなり得ます。そのため、パッケージのセキュリティ確保は極めて重要です。

攻撃の概要と影響

本インシデントは、LottieFilesの開発者を標的とした高度なフィッシングキャンペーンから始まりました。攻撃者(メールアドレス:notify.npmjs@pm.me)は、NPMに登録されていた開発者の個人Gmailアカウント宛に、@lottiefiles/jlottie npmパッケージでの共同作業に招待する内容の、巧妙に作成されたフィッシングメールを送信しました。このソーシャルエンジニアリング攻撃により、攻撃者は標的となった開発者のNPM認証情報と2要素認証コードの両方を窃取しました。

攻撃者は侵害した認証情報を使用し、2024年10月30日19:00〜20:00(UTC)の間に攻撃を実行しました。具体的には、「lottie-player」パッケージの悪意のある3つのバージョン(2.0.5、2.0.6、2.0.7)をNPMレジストリに直接公開しました。この手動公開により、LottieFilesの標準的なGitHub Actionsデプロイメントパイプラインが迂回されました。

この攻撃の配布メカニズムは、現代のWeb開発慣行の性質上、特に効果的でした。侵害されたバージョンは主要なCDNを通じて急速に拡散し、ライブラリの最新バージョンを自動取得するよう設定されていたWebサイトに影響を与えました。通常はセキュリティ上の利点となる自動更新機能が、本インシデントでは攻撃ベクトルとなり、影響範囲を大きく拡大させました。

重要な教訓

本インシデントへの対応を通じて、現在のNPMパッケージ配布モデルには、JavaScript依存関係としてNPMに依存する企業組織が懸念すべき重大なセキュリティ課題があるという結論に至りました。GitHubは、NPMの買収とその後のNPM Enterprise廃止を経て移行戦略を推進していますが、既存のnpmjs.comの提供機能には重大なセキュリティギャップがあります。具体的には、ユーザー向けSSOの欠如、パッケージのアップストリーム登録や利用状況に関するログの欠如、限定的な整合性チェック、自動化システム向けOIDCサポートの欠如、CDN経由の配布に対する制御の欠如などです。これらの制約は、現代のJavaScript開発の基盤となっている仕組みにおける重大なセキュリティ上の不足を示しており、組織をサプライチェーン攻撃やコンプライアンス上の問題にさらす可能性があります。エクサフォースはLottieFilesとともに、npmjsおよびGitHubと協力し、この重要なソフトウェアサプライチェーンに存在する現在のギャップの改善に取り組みます。

インシデント検知と対応タイムライン

本インシデントは、2024年10月30日19:24(UTC)頃、LottieFilesのコミュニティWebサイトを通じて最初に報告されました。ユーザーが不審なウォレット接続プロンプトに気づき始めたことがきっかけでした。

エクサフォースのインシデント対応チームは、LottieFilesと連携して、直ちに以下の対策を実施しました。

  • 10月30日 19:24 UTC:初期検知および報告
  • 10月30日 19:30 UTC:影響を受けたパッケージバージョン(2.0.5、2.0.6、2.0.7)を削除
  • 10月30日 19:35 UTC:侵害されたNPMアクセストークンを失効
  • 10月30日 19:58 UTC:クリーンバージョン2.0.8を公開
  • 10月31日 02:35 UTC:影響を受けた開発者のNPMアクセスを削除
  • 10月31日 02:40 UTC:個々の開発者によるNPMリポジトリへのアクセスを失効
  • 10月31日 02:45 UTC:すべてのNPMキーおよびその他システムのキーを失効し、NPM自動化を停止
  • 10月31日 03:30 UTC:インシデント後の追加分析のため、対象のノートPCを隔離
  • 10月31日 03:35 UTC:侵害されたノートPCのフォレンジック調査を開始
  • 10月31日 03:55 UTC:主要CDNプロバイダーと連携し、侵害されたファイルをパージ
  • 10月31日 04:00 UTC:LottieFilesがX(旧Twitter)で最初の公式投稿を実施
  • 10月31日 20:06 UTC:コミュニティ運営者の協力により、すべての感染ファイルを下流CDN(cdnjs.com、unpkg.com)から削除
  • 11月1日 01:59 UTC:LottieFilesがX(旧Twitter)で2回目の公式アップデートを投稿

より安全なLottieFilesに向けた強化策

本インシデントを受け、エクサフォースはLottieFilesと協力し、同社のインフラ全体にわたる包括的なセキュリティ改善を実施しています。主な対策は以下の通りです。

  1. NPMパッケージのプロビナンス証明と、その継続的な監視を実装し、パッケージの出所とビルドプロセスの暗号学的検証を提供します。これにより、パッケージが検証済みのGitHubワークフローを通じてのみビルドおよび公開されることを保証し、人による直接公開のリスクを排除します。
  2. 重要システムにおける人間およびマシンアイデンティティの体制を把握します。認証情報を含むマシンアイデンティティは、現在のクラウド環境において最も一般的な脅威ベクトルです。強固なクラウドセキュリティ体制を確立するには、これらのアイデンティティがどのように使用され、誰によって使用されているのかを可視化することが不可欠です。
  3. エクサフォースのAIボットとマネージドクラウド検知・対応サービスを組み合わせ、すべての重要システムに対してリアルタイム監視と脅威検知カバレッジを提供します。

今後のフォローアップでは、LottieFilesが既存チームをタスク特化型AIボットで強化し、業界をリードするセキュリティエンジニアリングと運用を確立するために得られた知見を共有します。NPMのインフラを改善するために協力して取り組むことによってのみ、より安全なJavaScriptエコシステムを構築できます。エクサフォースは、オープンソースライブラリが公開プロセスにプロビナンス証明を採用できるよう支援することで、その第一歩を踏み出すことに取り組んでいます。

関連記事

理想のSOCチーム。
24時間365日、お客様とともに稼働します。

お客様の環境を一元的かつリアルタイムに把握する4つのエクサボットが、検出、トリアージ、調査、対応をカバーします。プラットフォームを自社で運用することも、エクサフォースに運用を任せることもできます。