最近のこと
脆弱性多すぎ
10月21日にphp2shellが大騒ぎになったが、それ以外にもCritical級がゴロゴロ出てきてこの1週間は本当に目まぐるしい状態だった。素直に「疲れた」。ちょっと振り返って見たい。
- php2shell (CVE-2026-109618、CVE-2026-109619) : 私用ではPHP使ってないのだが仕事柄関わらざるを得ない部分があり、それに振り回された感じ。多分WordPress経由で普及してる部分が大きいんだろうが、「世界中の7割で使用されている」というどこから来たんだかわからない闇の枕詞のせいで世界中で大騒ぎになり、高市首相がメンテナンスを呼びかけるなど異例の事態になった。ちなみにこの影響でテナモバとナッシングスのRULESがメンテナンスになった。RULESのほうは比較的すぐに復旧したがテナモバは10/27現在もメンテナンス中。頑張ってほしい。
- eMudhraのPrivate Key危殆化 : 当初は「そんなこともあるんだな~」程度の認識だったが甘かった。これは後述するjavaの脆弱性を引き起こしたり、OSの証明書への確認が発生したり、多岐にわたって現在進行形でどんどん影響範囲が広がっており、てんやわんやしている。そんな感じなので「なんてことしてくれたんだ…」という恨み節のほうが今は強い。「大した売り上げないから撤退するわ」といってとっとと去っていたeMudhraの責任感のなさにも腹が立つ(まあeMudhraがこの件に関して何かできたかっていうと疑問ではあるが)。ちなみにこの後「Private Key 4」がミームと化し海外勢の間でネタにされまくっている。面白いんだが俺よりもっとコアな部分で巻き込まれてる側から見ると怒りしかわかんだろうな、と思って苦笑しながら眺めている。
- java (CVE-2026-91403) : javaにバンドルされているeMudhraのCA証明書が↑のせいで危殆化したことに伴うjavaのCritical脆弱性。最初はOracle JDKだけかと思ったらOpen JDKもきっちり影響受けるというので社内で右往左往する羽目になった。
- Tomcat (CVE-2026-101356、CVE-2026-101296等) : 背景はあまり把握してないのだが、内容見る限りphp2shellやeMudhraの件とは完全に無関係なので、独立して発見された脆弱性のようだ。php2shellやjavaの件と時期が重なっているのがまたタイミング悪くて、Tomcatはどっちにも関わり得るので、「1つ片づけたと思ったらまたかよ!」みたいなことになり、これもjavaの件と同様社内で右往左往する羽目になった。
- Ruby (CVE-2026-89078他) : CVSS10!!ということで最初はヤバイと思ったんだがどうもよく読んでみるとGitLab上のRCEみたいなので実質それほど影響はなかった。素早く修正版のバージョンも配布されたので良かった。初見のインパクトはあったが他と違って瞬間最大風速のストレスだけが印象に残っている脆弱性。
- HTTP2Shell (CVE-2026-111497): 当初Node.jsだけかと思っていたら(実際通称が”Node2Shell”だった)
brotliの脆弱性ということで話がどんどん拡大して騒ぎになっていった。Node.jsは修正版がリリース済(なので速攻入れた)だし、PythonのbrotliライブラリやElectronなどの修正版も既に出回っているので、冷静に対処すればそこまで大事にはならないはずだが、名称のせいで変にバズってしまっており、市場の過剰反応が少しおっかない。それと、コアライブラリの脆弱性ということで、javaのバンドルCAと同様、後になって「実はこれが…」みたいなことにならないかが不安。 - これら以外にもAdobeとかTailscaleとかでもやばめの脆弱性が報告されているのを目撃しているが公私ともに関係性が薄い・あるいは完全に「ない」ので無視。
eMudhraとjavaみたいに連動したものはいくつかあるものの、基本的にはたまたま時期が集中しただけ、だと思いたいが、それにしてはあちこちで脆弱性発見されすぎである。php2shellを皮切りにこの1週間で6件Critical級の脆弱性に遭遇しており、1日平均で約1件Critical脆弱性のペース。単純に疲れた。
ちなみに個人で言うとそこまで影響が大きかったわけではない(まあ仕事のほうに翻弄されててそれどころじゃなかったというのもあるが)。
- php、java、ruby、Tomcatいずれも使ってない。
- eMudhra関連は個別対応が必要だったのは対処済。
- 実機のWindowsマシンはCTL最新化が有効でありWindows Updateの個別適用不要(と判断した)。参考
- 社用のMacは
ca-certificatesを更新済。 - WSLのUbuntuのcertificateは更新済。
- Chromeは個別対応不要らしい。参考
- iOS関係も個別対応不要らしい。参考
- ただMacの
curlなどは/etc/ssl/cert.pemに依存しておりこちらは個別対処必要らしい。個人PCはWindowsなので関係ないが。参考
- ローカルのNode.js は修正版にアップデート済。
- プライベートではCloudflare Workersに依存しているところがあるが、ここのインフラ側の対応はよくわかってない。
- eMudhraの秘密鍵問題に関してはSandbox SDKの更新というのをやってるがWorkersのインフラ側の対処というわけでもなさそうである。
- Brotliの問題(HTTP2Shell)に関してはここで質問が挙げられているが回答なし。
- まあphp2shellで先んじてブロックルールを適用したりなどCloudflareはこの辺のことには敏感なので、Cloudflare Workersのマネージドインフラの部分は正直そこまで心配していない。それよりコードや依存関係など俺マターでポカやらかすほうが遥かに確率高いので、まずはそっち気を付けようと思う。
少し落ち着いた今振り返ってみると、こういう風に人間がある程度状況を把握・追跡できているうちはまだマシな方なんだろうな、という感じがしている。AIが進化していくにつれて、発見される脆弱性の量が爆発的に増加、質も凶悪的に向上することが予想され、おそらく近いうち人間がこの辺をカバーできる限界を超える(今ももう限界な気がする)。人知れずヤバイのが出てきて、人知れず修正され、またやばいのが出てきて、今度は攻撃されてそのときはじめて大騒ぎになり、がそのうちやはりAIが自動的に修復して…というのが、人間のコントロールの及ばないところで行われるようになるんだろう。今はその過渡期というか最終局面あたりにいる気がする。10年・20年の長いスパンで見ると、セキュリティとのかかわり方は大分様変わりするんだろうな~という感じ。技術の深淵部分からの距離を置く様子に少し寂しさも感じつつ、少なからず解放される喜びも感じつつ、新しい状況に順応していかなければならない覚悟を感じつつ、日々生きている。ただまあとりあえずこの1週間はとにかく疲れた。
ルーチンワーク記録システムの刷新(完了)
(ほぼ)終わった。まだ細かいところで開発・修正すべきポイントは残ってるが主要機能は概ねすべて開発完了。データ移行も終了。一応旧システムはまだ残してるがもう1週間近く未使用(なのでそのうちサンセット予定)。完全個人利用のWebアプリなのでどうでもいいのだが、こういう感じのものを作って運用しているよ、というのを少し載せておく。
筋トレの登録画面

筋トレメニューは当初すべてのメニューがフラットな状態だったが、それをカテゴリ(有酸素、無酸素、その他)で分類して見た目から刷新した。できれば無酸素はさらに「腹」とか「腕」とか部位ごとに分けたいのだが、まあこれはそのうちやることにする。
Tシャツの検索画面

着用したTシャツの画像はすべてPublic Accessibleの汎用R2にアップロード済で、カスタムドメイン経由でアクセスできる。バンド名や色、半袖/ロンTの区分、名称等で検索し、また「最後に着た日からの日数が長い順」「着た回数が少ない順」などでソートして着るTシャツを探して、検索結果から「また着る」ボタンで着用記録の登録動線をつくる。
英単語のフラッシュカード画面

事前登録している英単語マスタから「初めて勉強する単語」「よく間違えてる単語」などをもとに1問ランダムで選定して、英和どっちかを表示してその対訳がわかってるか確かめる。[check]ボタン押したら対訳を表示し、あってれば[correct]ボタン、[wrong]ボタンで記録して、また次の問題-という繰り返し。これ以外にも多肢選択型のクイズ形式問題機能も作っている(あんまり使わないけど)。
Tシャツの登録画面

その日着るTシャツの画像をDB(D1)とR2に登録し、連続着用記録を+1インクリメントする。もともとTシャツの登録画面は<input type="file">のただの入力フィールドだったんだが、コピー&ペーストできる方が使い勝手いいし、Qiitaみたいなの参考になんか作ってよと雑にClaudeにお願いしたらささーっと作ってくれて感動した。
他にも細かい機能はあるんだが俺しか使わないのであまり載せてもしょうがない。この辺にしておく。基本的にClaude(とかそれ系のCoding Agent)なら「何が作りたいか」を言語化できれば原則としてなんでも作れるので(インフラの限界や仕様で無理なものや、技術的には可能wだが課金などの側面で実質的に運用できないものなど除く)、あとはやる気次第だ。この開発も「面倒くせ~な~」と思いながらダラダラと進めたが結局振り返って見ると1か月ちょっとで終わったので、グダグダいってないのでとっととclaudeして指示を書けばよかった。実際、今回もそこが一番ハードルが高かった。本当に人間がボトルネックになってるのを実感する。
なお、今の所ナマSQL実行しなきゃいけない場面には遭遇してないので、運用面の妥当性は未評価である。ここ次第ではもう少し考えるところが出てくるかもしれない。