]> git.kaiwu.me - nginx.git/commit
SSL: synced all session ticket keys to the worker process
authorVadim Zhestikov <v.zhestikov@f5.com>
Wed, 22 Jul 2026 23:48:37 +0000 (16:48 -0700)
committerSergey Kandaurov <pluknet@nginx.com>
Thu, 1 Oct 2026 17:19:27 +0000 (21:19 +0400)
commit1916f26e6ca49296568633d309777e36527e5bb2
treeb33e4a9aaffb014332d3088554fc4167b003b334
parent1c173a2d8767730e678c27446138d7ae5dd6fd64
SSL: synced all session ticket keys to the worker process

The per-worker ticket key mirror is allocated with three slots
(ngx_array_push_n(keys, 3)), matching the shared memory
ticket_keys[3] array and the decrypt callback, which scans all
keys->nelts slots by key name.  Key rotation, however, synced
only two slots from shared memory, leaving the third slot's
name, hmac_key, and aes_key uninitialized.

A ticket whose key name matched the uninitialized slot (which
holds unspecified pool memory, all zero in the best case) could
therefore be HMAC-verified and decrypted with uninitialized key
material, allowing a forged session.

Sync all keys->nelts slots, as ngx_ssl_ticket_keys_cleanup()
already assumes.

Reported by PhiNode Labs.
src/event/ngx_event_openssl.c