[SEC-Q2] mail.routes: imgproxy HMAC перевести на HKDF #1155

Closed
opened 2026-07-19 17:05:43 +00:00 by andrei · 1 comment
Owner

Из SEC-Q2 MEDIUM backlog (аудит, срез 2026-07-10).

Подпись imgproxy-URL в mail.routes использует сырой секрет без деривации. Перевести на HKDF-деривацию per-purpose ключа, ротацию ключа не ломать (двойная проверка на переходный период).

Из SEC-Q2 MEDIUM backlog (аудит, срез 2026-07-10). Подпись imgproxy-URL в mail.routes использует сырой секрет без деривации. Перевести на HKDF-деривацию per-purpose ключа, ротацию ключа не ломать (двойная проверка на переходный период).
Author
Owner

Закрыто как already-implemented (код опередил трекер; issue заведён из аудит-среза 2026-07-10, но фиксы AUDIT-073 M-01 + SEC-Q2-2026 приземлились раньше, deadline legacy-пути 2026-06-01 уже прошёл).

Evidence (master):

  • api/src/lib/hmacKeys.ts:26IMGPROXY_HMAC_KEY = deriveKey("image-proxy"), HKDF-SHA256 из jwt.accessSecret + HKDF_SALT, purpose-separated.
  • api/src/services/mail/image-proxy.ts:8-10 — encode: signImageUrl подписывает через IMGPROXY_HMAC_KEY (не сырой секрет).
  • api/src/lib/imgProxySig.ts:15-23 — decode: verifyImgProxySig принимает ТОЛЬКО 64-hex HKDF-keyed HMAC, timing-safe; legacy 32-char путь на config.jwt.accessSecret удалён.
  • api/src/routes/mail.routes.ts:59-65 — HMAC-проверка до DNS-резолва (SSRF-порядок), только HKDF-подпись.

Ничего доделывать не нужно.

Закрыто как **already-implemented** (код опередил трекер; issue заведён из аудит-среза 2026-07-10, но фиксы AUDIT-073 M-01 + SEC-Q2-2026 приземлились раньше, deadline legacy-пути 2026-06-01 уже прошёл). Evidence (master): - `api/src/lib/hmacKeys.ts:26` — `IMGPROXY_HMAC_KEY = deriveKey("image-proxy")`, HKDF-SHA256 из jwt.accessSecret + HKDF_SALT, purpose-separated. - `api/src/services/mail/image-proxy.ts:8-10` — encode: `signImageUrl` подписывает через `IMGPROXY_HMAC_KEY` (не сырой секрет). - `api/src/lib/imgProxySig.ts:15-23` — decode: `verifyImgProxySig` принимает ТОЛЬКО 64-hex HKDF-keyed HMAC, timing-safe; legacy 32-char путь на `config.jwt.accessSecret` удалён. - `api/src/routes/mail.routes.ts:59-65` — HMAC-проверка до DNS-резолва (SSRF-порядок), только HKDF-подпись. Ничего доделывать не нужно.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/europatech#1155
No description provided.