今日、security advisory が公開された。
https://blog.rubygems.org/2026/07/22/security-advisory-legacy-api-key-leak.html
内容を読めばわかるけど、legacy key という昔の all scope キーが Rails および CDN の設定不備で一定条件で漏れていた、という内容になる。すでに全ての legacy key は revoke され、GET だけでキーを作れる歴史的経緯で残ってるエンドポイントも塞いだ。
という2点が利用者にとってのアクションアイテムになるので、対象になる人は対応をお願いします。
自分は直接的な作業は行ってないけど、方針であるとかアナウンスなどについては把握してレビューコメントをするなどしていた。自分でやった方が早いんだけど、みたいなものもありつつ、レビューというのも求められる仕事ではある。お疲れ様でした。
Webrick という開発向けに簡易 Web サーバーを立ち上げるライブラリがある。あくまでも 簡易、なので実際の Web サーバーによくある crlf の処理などがざっくりしていて使い方によっては client に攻撃できるよ、というやつに対して、勝手に CVE を申請する者がいて実際に受理されてしまうことがあった。
具体的には CVE-2024-47220 と CVE-2026-38969 なのだが、これが受理されて発行されると dependency に webrick を入れている gem は vulnerable としてマークされ、dependabot であるとか scan で alert がでて本当に迷惑なことになる。
なんか問題があるなら CVE を発行すべきとかグダグダ言ってる人もいるけど、メンテナが脆弱性じゃない、と判断したら脆弱性じゃないし、CVE というのはアップデートせよ、という警告の意味もあり、webrick を使ってて CVE によってプロダクトが危険!と思うなら、webrick を使ってる方がはるかに危険なので今すぐ puma などに置き換えろとしか思わない。根本的に優先順位がおかしい。
というわけで MITRE に対して reject の申請をして2件とも reject された。今までは reject のメール書くのだるい...となっていたけど、claude に chrome の権限を渡して、こういう要請を書いて、と壁打ちしてから送信させれば事足りるので便利になったと思う。
PS5 のコントローラを Phantom Pro にしてからの体験が非常に良く、やっぱインプットデバイスとか毎日使うものには投資するものだな、となったので HHKB Studio の墨+灰キーキャップの限定モデルを買った。
実際到着してから軽くキーマップを設定してみたが打鍵感はなかなか良い。ただそれよりも重視したのは
というあたり。実際、自分は3台のマシンを開発に使っており、普段はソフトKVMで共有しているんだけど、始業時/就業時は貸与マシンは切断するために BT での切り替えも必要なのであった。
キーのリマップとかはもう少し使い込んでからというところ。ところで初期の墨モデルだとキーに何が書いているか全くわからなくて不便だったので、灰キーキャップ付きのを買って正解だった。
Ruby を native な Windows で開発する場合に「git のデフォルトの autocrlf=false だと改行コードが全て変わってしまうので true にしないといけないが、autocrlf=true だとビルドできない」という何だそれというバグが実はあり、この前直していた。
https://github.com/ruby/ruby/pull/17841
これはビルド時の処理に prism を使うようにしたときに Windows のことを考慮していないから、ということが原因だったのだけど、ここまで放置されると清々しくもある。
前回のリリースは 7/10 の金曜だったこともあり、もう2週間経ったのという感じだが RubyGems 4.0.17 をリリースした。
https://blog.rubygems.org/2026/07/22/4.0.17-released.html
今回も Windows で開発するときに見つけた、何とも言えない微妙な挙動をひたすら直していた。スペースがある、とか末尾のスラッシュとか、そういうやつ。結構直したつもりではあるけど、まだ残ってるんだよなー...。
ちまちま直しつつ、バックポートという形で出していきます。
月曜気分で朝を開始したら火曜ということで Ruby office hour の時間だった。
Matz が RubyConf から戻ってきて、雰囲気どうでした、みたいな話をしつつ Matz でも英語で哲学的な話になったら詳細わからんよねとなるみたいで笑っていた。
そこでも話したが僕はもう英語で頑張るとかじゃなくて、日本語を中心に押し通して後は LLM がなんとかしてくれるやろ! 20年何とかなってくれ、という方に賭けているので英語はもう知らん。という立場です。僕に何かをさせたいなら僕が理解できる英語か日本語で言ってくれ。
Claude の Fable 5 が正式に GA して Max の subscription 内で使えることになったので、Ruby はともかく Fable に解かせるような何かはないか、と考えたところ tDiary があるじゃんとなり、「tDiary のエンドポイントを CGI/FCGI/Rack としつつ、内部から CGI を取り除いて全てを Rack で動かすようにはできるか」と尋ねたら力強く「できます」と言ってきたのでやらせたらできてしまった。
ちょっと pull request やコミットの数は多いので個別には紹介しないが実装後のコードを見ると確かに CGI.new であるとかインスタンスとしての @cgi は消滅して、Rack::Request で動くようになっていた。実際この日記もそのバージョンで動いている。
ただし CGI のインスタンスではないにしても @cgi というのが見栄えは悪いのでこの辺はぼちぼちと治していこうと思う。あと前から気になっていた heroku との統合とか、trusted publisher によるリリースなども全部 claude にぶん投げたら全部できたので、もうこれでいいや。となった。
近々この対応をしたバージョンをリリースします。
前日に壊れたーと言っていた食洗機だが、なんとか分解しないでできることをやろうと、ポンプが詰まった時に掃除する器具などをヨドバシで買って、それを使って内部から到達できる箇所を掃除したりしていた。
結局このブラシが意味あったのかはわからないが、水を内部にある程度貯めてからハンドポンプで到達できる穴に向かって水を勢いつけて出し入れをしていると、奥からヘドロのような汚れがごぽぽ!と出てきた。ついでに汚れとは別の方で水が溢れたようで、台所に若干の水がこぼれたもののこれは拭いて終わり。
これで治るといいなあと電源を入れてみると、昨夜にエラーが出ていた乾燥が難なく動いて一応修理完了ということにした。多分何かが詰まったことで、排水されなくなり水漏れ、と判断されていたとかそんなところだと思う。
しかし、食洗機みたいな器具を触ると本当に思うのだけど、所有者が簡単に掃除できないような作りは消費者をなめてるとしか思えない。それで業者を呼んだら、掃除したら動きました、15000円です。だもんなあ。ふざけるな、っていうね。