Rack::RuntimeというRackミドルウェアがあります。これはリクエストを処理するのにかかった時間を"X-Runtime"というレスポンスヘッダに含める、というものです。コードはこれ↓
rack/runtime.rb at master · rack/rack
これはRailsのデフォルトのRackミドルウェアであり、特に何もしない限り有効になっています。
このX-Runtimeが、タイミング攻撃で使われている事例があったとのことで、デフォルトから削除になりました。
Remove Rack::Runtime and deprecate referencing it · rails/rails@7bfcf4b
これにより、明示的にRack::Runtimeをミドルウェアで使う宣言をしない限りはRack::Runtimeは使えなくなります(Rails7.0から)。
実際にはX-Runtimeの値を見なくても、レスポンスが帰ってくる時間を計測すれば(ネットワークを経由することによる多少の誤差はありつつも)タイミング攻撃はできてしまうのでRack::Runtimeの削除の効果は限定的です。しかし普段の開発で使ってないならRails7.0を待たずに削除しておくのがいいんじゃないかな、と個人的には思っています。↓のコードでデフォルトRackミドルウェアから消せるので、消したい方はこれで消してみてください。
# config/application.rb config.middleware.delete Rack::Runtime
追記
削除のコミットがrevertされたので結局Rails7.0でも使えます。revertされたのは上の方で書いた
レスポンスが帰ってくる時間を計測すれば(ネットワークを経由することによる多少の誤差はありつつも)タイミング攻撃はできてしまうのでRack::Runtimeの削除の効果は限定的です
が理由のようです
Add back Rack::Runtime to the default middleware stack. · rails/rails@4ace047