NATS
v2.12.14Networking & MessagingNATS v2.12.14は、TLS verify_and_mapのバイパス(空パスワード)とno_auth_userと認証コールアウト組み合わせでの認証チェックスキップという2つの認証脆弱性を修正し、キュー購読権限強制を是正するメンテナンスリリースです。JetStreamとMQTTの数十のバグ修正(クラスタリング、レプリケーション、MQTT QoS、JWT検証、ファイルストア)と、AVL操作の高速化やブロックキャッシュメモリ再利用の改善によるパフォーマンス向上を含みます。
securityTLS verify_and_map認証バイパス(空パスワード)を修正
TLS verify_and_mapで認証するユーザーは、パスワードを設定する必要があります。空のパスワードは認証に失敗するようになりました。修正はv2.12.14に含まれ、TLS verify_and_mapを使用する環境が対象です。
securityno_auth_userと認証コールアウトの組み合わせで認証チェックをスキップしない
no_auth_userを認証コールアウトと組み合わせた場合、CONNECTメッセージがない場合に認証チェックをスキップしていました。この動作は修正されます。修正はv2.12.14に含まれ、no_auth_userと外部認証コールアウトを組み合わせたデプロイメントが対象です。
breakingキュー購読権限強制の修正
キュー購読権限を強制するいくつかのコードパスが、権限全体をサブジェクトリテラルとして扱っていたため、意図しないマッチが発生していました。v2.12.14で修正されます。
enhancementディスク同時実行セマフォ増加、max_concurrent_ioオプション追加
ディスク同時実行セマフォのデフォルトが4096スロットに引き上げられました。これまではCPUスケールの値でした。jetstream設定ブロック内のmax_concurrent_ioオプションで調整できます。
主な変更 (10)
- TLS verify_and_map認証バイパス(空パスワード)を修正
- no_auth_userと認証コールアウトの組み合わせで認証チェックをスキップしない
- キュー購読権限強制をリテラル解釈から修正
- ディスク同時実行セマフォを4096に引き上げ、新しいmax_concurrent_ioオプションで調整可能に
- JWT検証の空白のみのパーミッション時クラッシュを修正
- JetStreamとMQTTエンドポイントがnull JSON値に対応、クラッシュを防止
- healthzは有効期限切れJWTアカウントを報告しない、varzはコンフィグリロード後のJetStreamリミットを正確に表示
- MQTT QoS1/QoS2パケットIDをモノトニックカウンターで発行、再利用を防止; QoS2メッセージは再開セッションでIDとレベルを保持
- JetStreamクラスタとファイルストアの修正多数: Raft選挙処理、ブロックキャッシュメモリ効率、レプリケートストリーム再作成、コンシューマ型更新; MQTT QoS低下漏れを修正
- Goを1.25.12に更新
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。