アフィリエイト広告を利用しています

【HTTP2Shell】スマホもパソコンも、いま「更新」を。あなたがやることは4つ

スマホもパソコンも、いま「更新」を

10月25日の朝、X で GrEarl さん(@Iamwonderingif)のポストを見ました。

通信するソフトは、できる限りすべて更新しよう、という呼びかけです。

php2shell が落ち着いたと思ったら、今度は「HTTP2Shell」です。

同じころ、ネットの身分証明書(証明書)の事故も起きていました。

むずかしい話に見えますが、一般の人がやることは、シンプルです。

スマホもパソコンも、更新して、再起動する。

いま、あなたがやることは4つ。スマホを更新、パソコンを更新、ブラウザを閉じて開き直す、アプリを更新して再起動

何が起きたのか、ざっくり2つ

ひとつめは、HTTP2Shell です。

インターネットでは、ページや画像を小さくたたんで送り、受け取った側で広げて使います。

このたたむ道具「Brotli(ブロトリ)」の、広げる係にミスが見つかりました。

悪い人が、わざとおかしな形にたたんだ荷物を送ると、広げる係が混乱して、悪い人の命令を実行してしまうことがある。

多くのアプリやブラウザが使っている道具なので、影響が広いんですよね。

ふたつめは、証明書の事故です。

ブラウザの鍵マークは「このサイトは本物です」という身分証明書の印で、認証局という「役所」がハンコを押して発行しています。

インドの認証局 eMudhra のハンコが、作り方のミスで、簡単に複製できる状態だったと分かりました。

悪用された形跡は、今のところありません。

Chrome や Safari などは、このハンコをすでに無効にしています。

ただ、古い版のままだと、その「無効リスト」が届きません。

どちらも、更新すれば守られます。

僕の Mac をフルチェックしたら、古いまま動いていたものがありました

僕の場合は、Claude Code に Mac とサイトを点検してもらいました。

使ったプロンプトは、記事の最後に載せています。

管理しているサイトの証明書は、eMudhra のものはなく、問題なし。

Mac のほうは、Homebrew で入れていた Node.js(プログラムを動かす道具)が、穴のある版でした。

ここまでは、更新すれば終わりです。

が、

更新しても、前から動き続けているプログラムは、古い版のまま動いています。

調べてみると、常駐しているプログラムが4つ、古い Node.js のまま動いていました。

長いものは、8月から動きっぱなし。

再起動して、新しい版に入れ替えました。

Chrome も、10月22日から開きっぱなしで、新しい版が入っていても、動いているのは古い版でした。

「更新した」と「新しい版で動いている」は、別ものなんですよね。

ちなみに、途中で Python を上げたら、いつも使っている「python3」というコマンドが消える、という失敗もありました。

10分ほどで戻せましたが、更新のあとは、ちゃんと動くか確かめることも大切です。

最後に、macOS を Tahoe 26.7.1 に上げて、この Mac の対応は完了です。

「今すぐ更新を」というメールには気をつけて

こういうニュースのあとは、便乗した詐欺が増えます。

「今すぐ更新してください」というメールや SMS のリンク、サイトに突然出てくる「ウイルスが見つかりました」という画面は、押さないでください。

更新は、自分で「設定」から。

iPhone なら「設定」→「一般」→「ソフトウェアアップデート」、Mac なら「システム設定」→「一般」→「ソフトウェアアップデート」です。

あわててセキュリティソフトを買ったり、パスワードを全部変えたりする必要はありません。

まとめ

スマホを更新、パソコンを更新、ブラウザを閉じて開き直す、アプリを更新して再起動。

この4つで大丈夫です。

ブラウザを何週間も開きっぱなしの人は、特に、一度閉じてみてください。

おまけ:AI エージェントに点検させるプロンプト(パソコンにくわしい人向け)

僕が Mac の点検に使ったプロンプトを、ほかの人でも使える形にしておきます。

Claude Code や Codex などの AI エージェントに、そのまま貼って使えます。

Homebrew や Node.js、Python を使っている開発者向けです。スマホとパソコンを普段使いしているだけなら、上の4つで十分です。

プログラムの更新や再起動をともなうので、自己責任でお願いします。大事なデータは、先にバックアップを取ってください。

プロンプトを開く(タップで開きます。コピーして使えます)
このパソコンで、2026年10月のセキュリティ事故2件への対応を、やり残しがないようにフルチェックしてください。報告は日本語で、中学生にもわかる言葉にしてください。

## 背景(調べ直さなくてよい事実)
1. HTTP2Shell(CVE-2026-111497): 圧縮ライブラリ Brotli の、データを広げる側の穴。わざと壊したデータを広げさせると、そのプログラムの権限で任意のコマンドが動く(CVSS 9.8)
   - 対象は Brotli 1.0.3〜1.2.0。直した版は 1.0.10 / 1.1.1 / 1.2.1
   - Node.js の直した版は 22.23.4 / 24.22.1 / 26.12.1。Bun は 1.4.4。Python の brotli パッケージは 1.2.1
   - Node.js は修正を当てても process.versions.brotli の表示が 1.2.0 のままのことがある。判定は Node.js 本体の版で行う
2. eMudhra(インドの認証局)の中間CA 8件の秘密鍵が漏れた件: ブラウザは遮断済み。ただ、独自の証明書リストを持つもの(Homebrew の ca-certificates、Python の certifi、pip、Node.js、Java、Go など)は更新が必要
   - 直した版: Homebrew の ca-certificates は 2026-10-20、certifi は 2026.10.23、pip は 26.2.2(Python 3.9 の環境は 26.0.1 が上限)

## 1. 洗い出し(読むだけ。何も変えない)
- OS の版と、出ている更新(Mac なら softwareupdate -l。止まることがあるので、裏で動かして60秒ほどで読む)
- Homebrew があれば: brew update のあと、brew list --versions node brotli curl ca-certificates、brew outdated、brew outdated --cask --greedy
- node -p 'process.version+" "+process.versions.brotli'。Homebrew 版の curl -V(brotli/ の版)。Bun・Deno・Go・Java・PHP・Ruby・uv があれば、その版も
- npm のグローバル(npm ls -g --depth=0)
- 隠れたコピー: ホームフォルダ・/opt/homebrew・/Applications・/usr/local から(.Trash・.git・node_modules・写真や動画のフォルダは除く)
  - libbrotlidec*.dylib・_brotli*.so(版は otool -L で見る)
  - brotli-*.dist-info・brotlicffi-*.dist-info・certifi-*.dist-info(Python の各環境)
  - Homebrew 以外の node 本体(playwright 付属、アプリ付属など。版は <node> -p process.version で見る)
- Electron 製のアプリ(/Applications/*.app/Contents/Frameworks/Electron Framework.framework があるもの)と、Chrome の版
- 古い版で動き続けているプロセス: lsof -nP | awk '$4=="txt"' で、古い Cellar/node/<版> や Cellar/brotli/1.2.0 などを読み込んでいるもの。launchd の登録(launchctl list、~/Library/LaunchAgents)とも照らし合わせる
- 証明書リストに eMudhra(emSign)が残っているか: openssl crl2pkcs7 -nocrl -certfile <cert.pem> | openssl pkcs7 -print_certs -noout | grep -i emudhra(Homebrew の ca-certificates・openssl@3 の cert.pem)。更新後は「emSign Root CA - G1」1枚が残るのが正しい(Mozilla の判断どおり)

洗い出しが終わったら、結果を表にして私に見せ、何を直すかの了承をもらってから 2 へ進む。

## 2. 直す
- Homebrew は、今回の件に関係するものだけ上げる。例: HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew upgrade brotli ca-certificates curl node。ほかの古いものはまとめて上げない(動いている仕組みが壊れるおそれがあるため)
- Python の各環境(.venv / venv)の certifi と pip を上げる: <環境>/bin/python -m pip install -U certifi pip
- Homebrew の Python を上げたら、必ず python3 -V と pip3 --version を確かめる。標準の Python の版が切り替わって、python3・pip3 のコマンドが消えることがある。消えたら、上げた版の libexec/bin を指すリンクを作って戻す(すでにあるものは触らない)
- playwright を入れている環境は上げる。中の node が直した版になったか確かめ、ブラウザ本体も入れ直す(python -m playwright install chromium)
- Homebrew で入れたアプリ(cask)は brew upgrade --cask --greedy <名前> で上げる。ただし、いまこの作業を動かしている AI エージェントのアプリ自体は上げない(入れ替えると作業が止まる)
- 古い版で動き続けているプロセスを、新しい版で動かし直す。止める・動かし直す前に、何をなぜかを私に見せて了承をもらう
  - launchd のもの: launchctl kickstart -k gui/$(id -u)/<ラベル>。作業中でない(子プロセスがない)ことを先に確かめ、動かし直したあとはログと応答を確かめる
  - 手で立ててあるサーバー: 起動したフォルダ(lsof -d cwd)と起動コマンドを確かめてから、止めて同じ場所で起動し直す
  - 止まらなくなっているテストなどは、止めるだけでよい
  - 最後にもう一度 lsof で、古い版を読み込んでいるプロセスが0件になったことを確かめる
- zsh では、kill $LIST のように変数を渡すと1つの塊になって失敗する。echo $LIST | xargs kill を使う

## 3. やってはいけないこと
- 消すときは rm を使わず、ゴミ箱へ移す。消す前に、何をなぜ消すかを私に見せて了承をもらう
- サーバーや DNS など、外に向いた設定は変えない(気づいたことは報告だけ)
- 秘密の値(トークン・パスワードなど)を、報告や記録に書かない
- 失敗や想定外(何かが消えた・動かなくなった)が分かったら、直す前にまず報告する
- Homebrew の更新・lsof・launchctl・softwareupdate は、AI エージェントのサンドボックスの中だと失敗することがある。サンドボックスの外で実行してよいか、私に確認する

## 4. 最後に
- もう一度フルチェックして、「直したもの」「直せなかったもの(理由)」「私がやること」の3つに分けて、表で報告する
- 「私がやること」の例: OS の更新(大きな版への乗り換えは慌てない)、Chrome などブラウザの再起動、AI エージェントのアプリの更新
- 記録を、ホームフォルダの「セキュリティ点検_YYYY-MM-DD.md」に残す
- Linux なら、Homebrew を apt/dnf に、launchd を systemd(systemctl restart)に、otool -L を ldd に読み替える。証明書リストは /etc/ssl/certs/ca-certificates.crt を見て、ca-certificates パッケージを更新する

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告