2026年10月下旬、世界中のソフトウェア開発者にとって慌ただしい一週間がありました。10月20日と21日の2日間に、多くのWebサイトやアプリの土台になっている PHP・Node.js・Java が、そろって脆弱性の修正版を公開したのです。中には、ログインしていない攻撃者がサーバー上で任意のコードを実行できるものも含まれていました。

「子どもが使っているアプリは大丈夫?」と気になった方へ、先に結論をお伝えします。Dino Kidsのサーバーは、修正版が公開された2026年10月21日のうちに、修正済みのPHPに更新しました。iPad・iPhone・Androidで動くアプリ本体は、この3つの技術を使っていません。 以下、実際に稼働しているシステムで確かめた数字とともに、順にご説明します。
何が起きたのか
- PHP:10月21日、PHPは8.5.12・8.4.27・8.3.36・8.2.35を公開し、2件の脆弱性(CVE-2026-109618・CVE-2026-109619、通称「php2shell」)を修正しました。どちらもCVSS 4.0で9.2(緊急)と評価され、認証なしでサーバー上のコード実行につながるおそれがあります。予定より前に詳細がSNSで漏れたため緊急リリースとなり、同日中に実際の攻撃が観測され、10月26日には米CISAの「悪用が確認された脆弱性」カタログに登録されました。PHPは「設定変更だけで完全に防ぐ方法はない」としており、対策は更新だけです。
- Node.js:同じ10月21日、22・24・26の3系列で10件(深刻度「高」4件)を修正しました。最も重いのはCVE-2026-111497で、壊れたBrotli圧縮データによってリモートでコードが実行されるおそれがあります。サポートが終了した20系以前には修正版がありません。
- Java:10月20日、Oracleは定例のクリティカル・パッチ・アップデートでJava SEの脆弱性55件を修正しました。翌日には、秘密鍵が漏洩したインドの認証局eMudhraの証明書をJavaが信頼し続けてしまう問題(CVE-2026-91403、9.1)の緊急修正も出ています。
3つが同時期に重なったのは偶然ですが、結果は同じです。更新が遅れたシステムは、すぐに攻撃者の探索の対象になります。
Dino Kidsは何でできているか
影響があるかどうかは、何で作られているかで決まります。Dino Kidsは3つの部分からできています。
- iPad・iPhone・Androidのアプリは、Flutter(Dart言語)で作られています。PHP・Node.js・Java SEは入っていないため、今回の修正の対象ではありません。
- サーバーは、アカウント同期、ぬりえ、音声を担当し、PHP 8.5とLaravelで動いています。ここはphp2shellの対象です。
- Webサイト dino-kids.digidinos.comは、あらかじめ生成した静的ページです。表示にNode.jsもJavaも使っていないため、対象ではありません。
急いで対応が必要だったのは、サーバーだけです。
サーバーはいつ更新されたか
「更新済みです」の一言で済ませたくはありません。2026年10月29日に、アプリにサービスを提供しているサーバーで確認した内容です。
- PHP 8.5.12は2026年10月21日23時04分(ベトナム時間、日本時間22日1時04分)にインストールされ、アプリを処理するPHPのプロセスも直後の23時05分に再起動しました。修正版はディスクに置かれているだけでなく、実際に動いています。PHPが修正版を公開したのと同じ日です。
- アプリにサービスを提供するNode.jsやJavaのプロセスはありません。 Dino KidsのサーバーはPHPだけで動いており、管理画面もNode.jsでビルドする仕組みは使っていません。
- Dino KidsのHTTPS証明書はGoogle Trust Servicesが発行したもので、eMudhraとは関係ありません。
- 10月29日には、サーバーの手前の経路もあらためて点検し、中継サーバーのHTTPS暗号化ライブラリを最新版に更新しました。
- ソースコードの変更はすべて、自動テストに通ってからサーバーに反映されます。 PHP 8.5.12のような更新を数時間で入れても機能が壊れないのは、テストを以前から同じPHP 8.5系で走らせているからです。
なぜ素早く対応できたのか
特別なことはしていません。3つの習慣があるだけです。
- 最新の系列を使い続ける。 Dino KidsのサーバーはPHP 8.5とLaravel 13という、サポート中の最新系列で動いています。古い系列ほど取り残されやすく、今回もPHP 8.1以前とNode.js 20以前には公式の修正版が出ていません。
- 修正版をいち早く届けるリポジトリから入れる。 サーバーのPHPは、公式リリースに素早く追従するパッケージリポジトリから入れているため、OS標準のリポジトリを数日待つ必要がありません。
- 動かす部品を少なくする。 アプリの中にサーバーやインタプリタは入っていません。Webサイトは静的ページです。動いている部品が少ないほど、直すべき場所も少なくなります。
保護者の方に必要な対応は
ほとんどありません。さらに安心したい方は、次の2つだけどうぞ。
- 端末のOS(iPadOS・iOS・Android)を最新にする。 証明書に関する変更を含め、セキュリティ修正の多くはAppleやGoogleのアップデートで届きます。
- App StoreやGoogle Playで新しい版が出たら、Dino Kidsを更新する。
今回の件でパスワードを変える必要はありません。あらためてお伝えすると、Dino Kidsはアカウントなしでもすべての機能が使え、アプリには第三者の広告やトラッキングは一切入っていません。サーバーに何をなぜ送るのかは、プライバシーポリシーに書いています。
正直にお伝えしたいこと
絶対に安全なシステムはありませんし、私たちもそうは約束しません。約束できるのは、Dino Kidsが頼っているソフトウェアのセキュリティ情報を追い続けること、修正版が出たらすぐに適用すること、そして何かあれば正直にお知らせすることです。気になる点を見つけた方、脆弱性を報告したいセキュリティ研究者の方は、dinokids@digidinos.com までご連絡ください。
参考資料
- PHP、PHP 8 ChangeLog(8.5.12の項)
- watchTowr、CVE-2026-109618: Exploited Remote Code Execution in PHP
- Node.js、Wednesday, October 21, 2026 Security Releases
- Oracle、Critical Patch Update Advisory - October 2026