プログラミング言語PHPのソースコードに仕掛けられた攻撃

PHPのソースコードに何者かがバックドアを仕掛けようとするというインシデントが発生しました。

正体不明の攻撃者が先日、PHPの公式なGitサーバーに悪意あるコードを追加し、大規模なサプライチェーン攻撃を実行しようとしていたことが判明しました(英語記事)。開発者がこのバックドアに気付かずにいたとしたら、多くのWebサーバーが影響を受け、史上最大のサプライチェーン攻撃に至っていた可能性があります。

PHPに何が起こったのか

プログラミング言語のPHPを開発するプログラマーたちは、バージョン管理システム「Git」上に構築された公のリポジトリを使用してコードに変更を加えています。追加を適用した後、コードは別のレビューへと回されます。定期点検の中で、一人の開発者が不審なコード追加に気付きました。これはニキータ・ポポフ(Nikita Popov)氏名義で、誤字修正である旨のコメント付きで追加されていました。詳しく調査したところ、これはバックドアであることが判明しました。ポポフ氏は、そのような変更など加えていませんでした。

さらなる検証の結果、このリポジトリには似たようなコード追加が、今度はラスマス・ラードフ(Rasmus Lerdorf)氏の名義で行われていたことが分かりました。用心していたプログラマーたちは1時間も経たないうちにこれに気付いたので、次期バージョンのPHP 8.1(今年末までにリリース予定)にこれらバックドアが仕込まれたままになる事態は免れました。

このコード変更が危険である理由

このリポジトリ内にバックドアがあったままだと、バックドアを抱えたバージョンのPHPを使用するWebサーバー上で攻撃者が悪意あるコードをリモート実行可能となった可能性があります。以前ほどではないものの、PHPは今でもWebコンテンツに最も広く使用されているスクリプト言語であり、Webサーバーの約80%で使用されています。すべての管理者がツールのアップデートをすぐに適用するわけではありませんが、それでも、内外のセキュリティ規則に則って常に最新版を適用されているサーバーは、かなりの数に上ります。新バージョンのPHPにバックドアが仕込まれたとしたら、多数企業のWebサーバーに広がる可能性は高いことでしょう。

バックドアはどうやって追加されたのか

専門家らは、この攻撃は開発者アカウントがハッキングされたのではなく、内部Gitサーバーの脆弱性によるものだと見ています。実際、誰かが加えた変更を誰か別の人が行ったことにされてしまうリスクは長く知られています。この出来事の後、PHPのサポート部門はgit.php.netサーバーの使用を停止し、GibHubサービスのリポジトリ(これまではミラーにすぎなかったもの)へと移行しました。

安全を保つために

開発環境は、サイバー犯罪者にとって魅力的なターゲットです。顧客から信頼を得ているソフトウェア製品のコードをいったん侵害してしまえば、サプライチェーン攻撃を通じて一度に多数の人を攻撃可能です。著名なプロジェクトの利用者が世界に何百万人もいると考えると、プロジェクトを悪意ある部外者から守ることは特に重要です。

  • コードの変更は、常にダブルチェックする。著名で信頼できるプログラマーが加えた変更であっても、チェックしてください。
  • 開発に使用するサーバーおよびサービスの安全性をモニタリングする。
  • 最新のサイバー脅威に気付くことができるように、社員教育を行う。
ヒント