PHPの重大な脆弱性

PHPの重大な脆弱性

マーボー

マーボー

次年度代表

11分で読めます

はじめに

こんにちは!この記事を読んでいただきありがとうございます!情報計算科学科2年のマーボーです。

先日、高市総理がXで「今夜に対応して頂きたい大至急のお願い」と投稿して、話題になりました。でも「PHP?パッチ?何のこと?」と思った人も多いのではないでしょうか。

そこで今回は、プログラミングを始めたばかりの人や、普段プログラミングをしない方にも分かるように、この投稿を解説していきます!この記事を読むと、次の3つが分かります。

  • 何が起きて、なぜ総理まで呼びかけたのか
  • 自分に関係があるのか
  • 今日から自分でできる対策

何が起きたの?

一言でいうと、サーバー側の言語がわかるWebサイトのうち約7割で使われている「PHP」というプログラミング言語に、とても危険な脆弱性が見つかったという話です。家でいえば「鍵の壊れた窓があることを、泥棒も知っている」状態です。

流れを時系列でまとめると、こんな感じです。

いつ(日本時間)

何があった?

10月20日

穴の情報が、修正版が出る前にネットに漏れてしまう

10月21日 午後〜

ネットショップのBASEなどが、予防のために先にサービスを止める

10月21日 21時55分

高市総理がXで「大至急のお願い」を投稿

10月21日 23時ごろ

PHPの修正版(パッチ)が公開される

10月21日夜〜22日

修正を入れるためにメンテナンスするサービスが相次ぐ

普段なら、修正版が出るまで穴の情報は秘密にされます。今回はそれが先に漏れてしまったので、「悪い人が攻撃を始める前に、一秒でも早く直して!」という異例の事態になりました。

そもそもPHPって?脆弱性って?

PHPとは

PHPは、Webサイトの裏側(サーバー)で動くプログラミング言語です。ログインやコメントの投稿など、ページの内容をその場で作る役割をしています。

ブログ作成ツールの「WordPress」もPHPで作られていて、個人ブログから企業のサイト、ネットショップまで、本当にたくさんの場所で使われています。皆さんも、知らないうちにPHPで動くサイトを毎日使っているはずです!

脆弱性とは

脆弱性(ぜいじゃくせい)は、ソフトウェアの中にある、悪用できてしまうミスのことです。家にたとえると「鍵の壊れた窓」のようなものです。

そして「パッチ」は、その窓を直すための修正プログラムです。スマホの「ソフトウェアアップデート」と同じイメージでOKです。

今回の穴は何がヤバいの?

今回の脆弱性は「PHP2Shell」と呼ばれていて、特に危険な点が2つあります。

  • ログインしなくても攻撃できる:ネットに公開されているサイトなら、世界中の誰でも攻撃できてしまう
  • サーバーを乗っ取れる:攻撃者が好きなプログラムを動かせるので、データを盗んだりサイトを書き換えたりできてしまう

さらに、他の人のパスワードなどが漏れる恐れもありました。

総理の投稿を一緒に読んでみよう

ここまで分かれば、総理の投稿もスラスラ読めるはずです!一文ずつ見ていきましょう。

皆様に、今夜に対応して頂きたい大至急のお願いです。

投稿されたのは21日の21時55分です。穴の情報がもう漏れていたので、「明日でいいや」では間に合わない、という意味です。

多くのウェブサイトで使用されているPHPに関し、PHPのセキュリティチームが、重大な2件の脆弱性に関する注意喚起を行っています。

「PHPを作っている人たち自身が、危ないと言っている」ということです。「2件」は、先ほど紹介した「PHP2Shell」のことです。

公開しているウェブサイトでPHPを使用しているか確認し、今夜、10月21日午後11時(日本時間)に公開される修正パッチについて、可及的速やかに適用できるよう準備をお願いします。

お願いされているのは、「自分のサイトでPHPを使っているか確認すること」と「23時に出る修正版をすぐ入れられるようにしておくこと」の2つです。自分でPHPを書いたことがなくても、WordPressで作ったブログなどは対象になります。

修正パッチを速やかに適用することが困難な場合は、例えばウェブサイト等を一時的に停止させることも、リスクを低減させるための有効策の一つと考えられます。

窓がすぐ直せないなら、一旦家ごと閉めてしまおう、ということです。サイトを止めれば、攻撃される入口がなくなります。実際に、予防のために先に止めたり、修正を入れるためにメンテナンスしたりするサービスが相次ぎました。

国家サイバー統括室のXアカウントでも関係する情報を発信していますので、そちらも参考にして下さい。

国家サイバー統括室は、政府のサイバーセキュリティを担当する組織です。@cyber_forecast で注意情報を発信しているので、フォローしておくと今後も役立ちますよ!

自分は関係ある?

「総理が言うなら大変そうだけど、自分に関係あるのかな?」と思った人は、次の3つのうちどれに当てはまるか見てみてください!

タイプ

どんな人?

関係ある?

A  

自分のサイトは持っていない(ほとんどの大学生)

今回は特に対応しなくてOK

B  

WordPressのブログや、レンタルサーバーでサイトを持っている

関係ある可能性が高い

C  

VPSなどで、自分でサーバーを管理している

PHPが入っていれば直接関係あり

ちなみに、GitHub PagesやVercelで公開しているポートフォリオなど、PHPを使っていないサイトなら今回の影響はありません。自分のサイトが何で動いているか分からない人は、この機会に確認してみてくださいね。

今日からできる対策

対策といっても、難しいことばかりではありません!タイプ別に、今日できることをまとめました。

タイプA:サイトを持っていない人

総務省は、今回の件で「一般のインターネット利用者の皆様に、特段の対応を求めるものではありません」としています。対応するのはサイトを運営している側なので、サイトを持っていなければ、今回特別にやることはありません。

ただ、使っているサービスから情報が漏れることは、今回に限らず起こりえます。せっかくなので、今回に限らず大事なこととして、この機会に見直してみてください!

  • 同じパスワードを複数のサービスで使い回していたら、変える(ブラウザやスマホのパスワード管理機能を使うと楽です)
  • 大学のアカウントやSNSなど、大事なアカウントに2段階認証を設定する
  • サービスから「パスワードを変更してください」というお知らせが来たら、公式サイトやアプリから変更する

タイプB:WordPressやレンタルサーバーでサイトを持っている人

レンタルサーバーの場合、PHPの更新は基本的にサーバー会社がやってくれます。ただし、自分で設定を変えないといけない場合もあるので、一度確認しておきましょう。

  • 契約しているサーバー会社のお知らせページで、今回の件について書かれていないか確認する
  • WordPressの管理画面で「ツール → サイトヘルス →『情報』タブ →『サーバー』」を開き、PHPのバージョンを確認する
  • バージョンが古い場合は、サーバーの管理画面から修正済みのバージョンに切り替える(修正済みのバージョンは記事の最後に載せています)
  • もう使っていないサイトは、この機会に非公開にするか削除する

やり方が分からないときは、総理の投稿にあったように一時的にサイトを止めるのも立派な対策です!

タイプC:自分でサーバーを管理している人

ここは少し専門的になります。まずはサーバーにPHPが入っているか確認しましょう。

# PHPが入っていればバージョンが表示される
php -v
  • PHPを修正済みのバージョンに更新する(記事の最後の表を参照)
  • 更新したら、ApacheやPHP-FPMを必ず再起動する(再起動しないと古いPHPが動き続けます)
  • すぐに更新できない場合は、更新できるまでサイトを止める

php.iniの設定を変えて防ぐ方法も出回っていますが、一部の攻撃しか防げません。PHPの開発者も「対策は更新しかない」と言っています。

TNDの場合

ちなみにTNDはどうだったかというと、PHPを一切使っていないので影響はありませんでした!

今読んでいるこのサイトは、Astro(一部にReact)で作った静的なサイトで、GitHub Pagesで公開しています。静的なサイトというのは、あらかじめ作っておいたページをそのまま配るだけのサイトのことです。アクセスのたびにサーバーでプログラムを動かすわけではないので、そもそもPHPが動く場所がありません。

とはいえ、今回はたまたま使っている技術が違っただけです。次に穴が見つかるのは、TNDが使っているライブラリかもしれません。「自分たちが何を使っているかを把握しておくこと」が大事だなと、改めて感じました。

修正済みのバージョン

自分でバージョンを確認する人向けに、修正済みのバージョンをまとめておきます。これより古いものは更新が必要です。

PHPのバージョン

修正済みのバージョン

8.5系

8.5.12

8.4系

8.4.27

8.3系

8.3.36

8.2系

8.2.35

8.1系以前

修正版は出ないので、8.2以上に移行する

おわりに

今回は、高市総理が呼びかけたPHPの脆弱性について解説しました。

セキュリティって難しそうに聞こえますが、パスワードを使い回さないこと、2段階認証を設定すること、アップデートを後回しにしないことなど、誰でもできることもたくさんあります。この記事を読んだついでに、ぜひ一つでも試してみてください!

TNDでは、Web開発やデータサイエンスなど、メンバーがそれぞれ興味のある分野に取り組んでいます。プログラミング経験の有無に関係なく、興味がある人なら大歓迎です!TNDの活動についてもっと知りたい方は、ぜひ公式サイトやXもチェックしてみてくださいね!

参考リンク

この記事をシェアする