【ITニュース解説】Unofficial Postmark MCP npm silently stole users' emails
2025年09月26日に「BleepingComputer」が公開したITニュース「Unofficial Postmark MCP npm silently stole users' emails」について初心者にもわかりやすく解説しています。
ITニュース概要
非公式なnpmパッケージ「postmark-mcp」が、最新アップデートで悪意あるコードを密かに挿入し、利用者のメール内容を窃取していた。公式プロジェクトを模倣した悪質なパッケージに注意が必要だ。
ITニュース解説
最近、ソフトウェア開発の世界で起きたあるセキュリティ事件は、私たちが普段何気なく利用している「パッケージ」という仕組みに潜む危険性を浮き彫りにした。JavaScriptのプログラム開発で広く使われる「npm」というパッケージ管理システム上で、公式プロジェクトを装った悪意のあるパッケージが、ユーザーの電子メールを密かに盗み取るという事態が発生した。この事件は、システムエンジニアを目指す皆さんにとって、開発ツールやライブラリの利用がいかに注意深く行われるべきかを教えてくれる重要な事例だ。
まず、「npm」とは何か。「Node Package Manager」の略で、JavaScriptのプログラム部品(これを「パッケージ」と呼ぶ)をインターネットを通じて共有し、自分のプロジェクトで簡単に使えるようにするためのツールだ。世界中の開発者が作成した便利な機能がパッケージとして公開されており、私たちはそれらを組み合わせて効率的にソフトウェアを開発できる。例えば、日付の計算を簡単にするパッケージや、ウェブサイトの見た目を整えるパッケージなど、様々なものが存在する。これにより、開発者はゼロから全てを作る必要がなくなり、生産性が飛躍的に向上する。
今回問題となったのは、「Postmark MCP」というメール送信サービスに関連する公式のプロジェクトに似せた、非公式のnpmパッケージだった。この悪質なパッケージは、当初は特に有害な機能を持たないように見せかけて公開された。これは、開発者の信頼を得るためのよくある手口だ。しかし、ある時点でのアップデートで、たった一行の悪意のあるコードが追加された。このたった一行が、そのパッケージを利用しているすべてのユーザーのメール通信を外部のサーバーに送信する機能を密かに実装していたのだ。
このような攻撃は「サプライチェーン攻撃」の一種とみなすことができる。ソフトウェア開発において、私たちは様々な外部の部品(ライブラリやパッケージ)を組み合わせて製品を作るが、その部品の一つが悪意を持って改ざんされると、最終的な製品やそれを使うユーザーにまで被害が及ぶ。今回のケースでは、開発者が信頼して導入したはずのパッケージが、実は裏でユーザーの機密情報を盗んでいたという構図だ。悪意のある開発者は、公式パッケージと非常に似た名前を使ったり、公式プロジェクトのコードをコピーして公開したりすることで、開発者を誤解させ、誤って自分のパッケージをインストールさせる。これを「タイポスクワッティング」と呼ぶこともあるが、今回の場合は既存の公式パッケージの完全なコピーを公開し、時間を置いてから悪意のある機能を追加するという、より巧妙な手口が使われた。
このパッケージによって盗まれたのは、ユーザーの「メール通信」だった。具体的にどのような情報が窃取されたかまでは記事に明記されていないが、通常、メール通信には個人情報、企業秘密、認証情報(ログインIDやパスワードのリセット情報など)といった機密性の高い内容が含まれる可能性が高い。これらが第三者に渡れば、プライバシー侵害はもちろんのこと、他のシステムへの不正アクセス、金銭的被害、企業の信用失墜など、深刻な二次被害に繋がりかねない。そして、最も恐ろしいのは、この情報窃取が「サイレントに」、つまりユーザーや開発者に全く気づかれることなく行われていた点だ。システムの異常を検知するのは非常に困難だっただろう。
npmのようなオープンソースのエコシステムは、開発のスピードと効率を飛躍的に向上させた。誰もが自由にコードを公開し、利用できるという利便性は計り知れない。しかし、その裏返しとして、公開されたパッケージの信頼性を常に保証することは難しいという側面もある。特に、人気のある公式パッケージを模倣した悪意のあるパッケージは、見た目だけでは判別がつきにくく、開発者がうっかり誤って導入してしまうリスクが常にあるのだ。また、パッケージは一度導入すれば終わりではなく、定期的にアップデートが行われる。今回の事件のように、最初は無害だったパッケージが、後から悪意のある機能を追加するアップデートを行う可能性も考慮しなければならない。
この事件は、システムエンジニアを目指す皆さんにとって、非常に重要な教訓を含んでいる。 まず、パッケージをインストールする際は、そのパッケージが本当に公式な提供元から公開されているものなのか、作者は誰なのか、GitHubなどのリポジトリのURLは正しいか、といった点を必ず確認する習慣をつけるべきだ。スペルミスや微妙な名前の違いにも注意が必要だ。 次に、自分が使うパッケージが、さらに別のパッケージを利用している場合がある(これを「依存関係」と呼ぶ)。自分のプロジェクトに直接インストールしていないパッケージでも、間接的に悪意のあるコードが含まれる可能性もあるため、プロジェクト全体の依存関係を把握し、信頼性を確認するツールや手法についても学ぶと良いだろう。 また、可能であれば、プログラムは必要最小限の権限で実行するように設定する。これにより、たとえ悪意のあるコードが実行されても、被害範囲を限定できる場合がある。 さらに、開発ツールやライブラリのセキュリティに関する最新情報は常にチェックする習慣を持つことが重要だ。脆弱性情報やセキュリティインシデントのニュースに常にアンテナを張り、自分のプロジェクトで使っているパッケージに影響がないかを確認する。 最後に、サーバーの負荷が急に上がったり、通常とは異なるネットワーク通信が発生したりするなど、システムに不審な挙動がないか常に監視し、少しでも異常を感じたら徹底的に調査する姿勢が求められる。
今回の「Postmark MCP」の事件は、オープンソースの利便性の裏にあるセキュリティリスクを明確に示した。システムエンジニアにとって、効率的な開発は重要だが、それ以上にセキュリティへの意識と慎重な姿勢が不可欠だ。皆さんが将来、様々なシステムやアプリケーションを開発する際には、利用するすべての部品に対して「本当に信頼できるのか?」という視点を持つことが、利用者や組織を守る上で何よりも重要になるだろう。この教訓を胸に刻み、安全なソフトウェア開発を心がけてほしい。