Last Updated on 2025-04-20 07:35 by admin
サプライチェーンセキュリティ企業Socketは、2025年4月19日、npmレジストリ内で人気のあるTelegramボットライブラリを模倣した3つの悪意あるパッケージを発見しました。これらのパッケージはSSHバックドアとデータ流出機能を含んでいます。
問題のパッケージは以下の通りです
- node-telegram-utils (132ダウンロード)
- node-telegram-bots-api (82ダウンロード)
- node-telegram-util (73ダウンロード)
これらのパッケージは週間10万以上のダウンロード数を誇る人気のNode.js Telegram Bot API「node-telegram-bot-api」を模倣するよう設計されています。
これらの不正パッケージは「starjacking」と呼ばれる手法を利用しています。これは正規ライブラリに関連付けられたGitHubリポジトリをリンクすることで、オープンソースパッケージを実際よりも人気があるように見せる手法です。
Socketの分析によると、これらのパッケージはLinuxシステム上で明示的に動作するよう設計されており、「~/.ssh/authorized_keys」ファイルに2つのSSH鍵を追加することで、攻撃者にホストへの永続的なリモートアクセスを許可します。
このスクリプトは、システムのユーザー名と「ipinfo[.]io/ip」に接続して外部IPアドレスを収集するよう設計されています。また、感染を確認するために外部サーバー(「solana.validator[.]blog」)に通信を行います。
パッケージを削除しても挿入されたSSH鍵は残るため、攻撃者は引き続きリモートアクセスが可能となります。
また、Socketは別の悪意あるパッケージ「@naderabdi/merchant-advcash」も発見しました。このパッケージはVolet(旧Advcash)の統合を装いながら、リモートサーバーへのリバースシェルを起動するよう設計されています。
from:Rogue npm Packages Mimic Telegram Bot API to Plant SSH Backdoors on Linux Systems
【編集部解説】
今回発見された悪意あるnpmパッケージは、オープンソースエコシステムの安全性に対する重大な警鐘を鳴らしています。複数のセキュリティ企業が確認しているように、これらのパッケージは単なる偶発的な脅威ではなく、組織的なサプライチェーン攻撃キャンペーンの一部と考えられます。
特に注目すべきは「starjacking」と呼ばれる手法です。Checkmarxの調査によれば、この手法はPyPiやnpmなど複数のパッケージレジストリで悪用可能であり、パッケージとGitHubリポジトリの関係を検証する仕組みが存在しないという根本的な問題に起因しています。これにより、悪意あるパッケージ開発者は人気のあるリポジトリを自分のパッケージにリンクし、信頼性を偽装することができるのです。
Datadogのセキュリティラボが報告している攻撃キャンペーンでは、Telegramボット関連だけでなく、「grammy-utils」「grammyjs-sdk」「telegramclient-sdk」など複数の悪意あるパッケージが確認されています。これらは全て同様の手法でSSH鍵を追加し、攻撃者にリモートアクセスを許可する仕組みを持っています。
このような攻撃が特に危険なのは、その持続性にあります。パッケージをアンインストールしても、すでに追加されたSSH鍵は残るため、攻撃者は引き続きシステムにアクセスできます。これはまさに「残留性マルウェア」の特徴を持っており、被害の発見と対処を困難にしています。
また、今回の事例では「node-telegram-utils」などのパッケージのダウンロード数は比較的少ないものの、セキュリティ研究者が指摘するように、たった1つの重要なシステムが侵害されるだけで、大規模な被害につながる可能性があります。特に開発環境が侵害された場合、そこから本番環境への侵入経路が開かれる恐れがあります。
さらに注目すべきは、別の悪意あるパッケージ「@naderabdi/merchant-advcash」に見られる高度な回避技術です。このパッケージは決済処理の成功時にのみリバースシェルを起動するという条件付き実行を行うことで、静的解析による検出を回避しています。これは攻撃手法の進化を示す重要な事例です。
このような脅威に対して、開発者は複数の対策を講じる必要があります。まず、パッケージの信頼性を複数の観点から確認することが重要です。ダウンロード数だけでなく、コードの品質、コミット履歴、コントリビューターの信頼性などを総合的に判断しましょう。また、定期的な依存関係の監査や、最小権限の原則に基づいた開発環境の構築も効果的です。
企業レベルでは、サプライチェーンセキュリティツールの導入が推奨されます。Socket、Checkmarx、Snykなどのツールは、悪意あるパッケージや脆弱性の検出に特化しており、このような攻撃からの保護に役立ちます。
オープンソースコミュニティ全体としては、パッケージレジストリとリポジトリホスティングサービス間の検証メカニズムの確立が急務です。特に「starjacking」のような手法を防ぐためには、パッケージとGitHubリポジトリの関係を検証する仕組みが必要不可欠です。
最後に、このような攻撃は技術的な問題だけでなく、オープンソースエコシステムの信頼性という根本的な課題を提起しています。便利さと安全性のバランスをどう取るか、コミュニティ全体で考えていく必要があるでしょう。
【用語解説】
npm(Node Package Manager):
JavaScriptのパッケージ管理システム。開発者がプログラムの部品(パッケージ)を簡単に共有・再利用できる仕組み。現在は「npm is not an acronym」の略とされている。
サプライチェーン攻撃:
ソフトウェア開発の供給経路を標的にした攻撃。正規の配布経路に悪意あるコードを混入させる手法。
SSHバックドア:
Secure Shell(SSH)の認証システムを悪用して、攻撃者がシステムに不正アクセスできるよう仕掛けた裏口。
starjacking:
正規のGitHubリポジトリをリンクすることで、悪意あるパッケージを信頼できるように見せかける手法。
リバースシェル:
攻撃対象のマシンから攻撃者のマシンへ接続を開始し、コマンド実行権限を与える技術。通常のリモート接続とは逆方向に接続するため、ファイアウォールなどのセキュリティ対策を回避できる。
~/.ssh/authorized_keys:
Linuxシステムで、SSHによるリモート接続を許可する公開鍵を保存するファイル。このファイルに攻撃者の鍵が追加されると、パスワード不要で侵入できるようになる。
【参考リンク】
Socket(外部)
サプライチェーンセキュリティに特化した企業。オープンソースの脆弱性検出ツールを提供
Snyk(外部)
次世代の脆弱性管理ツールを提供する企業。開発者向けセキュリティプラットフォーム
Checkmarx(外部)
アプリケーションセキュリティテストソリューションを提供する企業
npm(外部)
JavaScriptのパッケージレジストリ。200万以上のパッケージが登録されている
【編集部後記】
みなさんは普段、どのようにnpmパッケージを選んでいますか?ダウンロード数だけで判断していませんか?今回のような巧妙な攻撃は、私たち開発者全員が直面する可能性があります。自分のプロジェクトで使用しているパッケージを一度見直してみませんか?また、チームでセキュリティチェックのルールを設けることも効果的かもしれません。みなさんならどんな対策を考えますか?ぜひSNSでご意見をお聞かせください。