Durcir la comparaison du HEALTH_TOKEN (timing-safe) #17

Open
opened 2026-08-15 20:11:13 +00:00 by maximus · 0 comments
Owner

Le controle actuel compare le token de lecture par auth !== + interpolation, ce qui fuit la longueur et le prefixe par le temps de reponse. Aligner sur le helper tokenMatches (timingSafeEqual sur empreintes SHA-256, longueurs toujours egales).

Fichiers concernes

  • index.js (modifier)

Depends on

  • aucune (le helper tokenMatches arrive avec #13 ; sinon l'ecrire ici)

Criteres d'acceptation

  • Le controle du HEALTH_TOKEN passe par tokenMatches()
  • Les longueurs sont egalisees par hachage avant comparaison — passer les chaines brutes a timingSafeEqual fuiterait la longueur
  • Les tests d'auth des quatre routes de lecture (#12) passent inchanges

Review caveats

  • SECURITE (MEDIUM) : cas reel documente sur fastify-bearer-auth (GHSA-376v-xgjx-7mfr) ou un timingSafeEqual mal utilise laisse deviner la longueur du token.

Decisions prises en planification

  • Sortie de la vague monitoring des postes : ce changement touche TOUS les chemins de lecture en production pour une raison etrangere a la feature. Le melanger rendrait impossible de dire ce qui a casse apres le redeploy manuel.
  • Creee sans milestone, status:ready : dette de securite tracee, a prendre quand tu veux.

Spec source

la-compagnie-maximus/spec-plan-monitoring-postes.md + spec-decisions-monitoring-postes.md (Issue 8)

Le controle actuel compare le token de lecture par `auth !== ` + interpolation, ce qui fuit la longueur et le prefixe par le temps de reponse. Aligner sur le helper `tokenMatches` (timingSafeEqual sur empreintes SHA-256, longueurs toujours egales). ## Fichiers concernes - `index.js` (modifier) ## Depends on - aucune (le helper `tokenMatches` arrive avec #13 ; sinon l'ecrire ici) ## Criteres d'acceptation - [ ] Le controle du `HEALTH_TOKEN` passe par `tokenMatches()` - [ ] Les longueurs sont egalisees par hachage avant comparaison — passer les chaines brutes a `timingSafeEqual` fuiterait la longueur - [ ] Les tests d'auth des quatre routes de lecture (#12) passent inchanges ## Review caveats - SECURITE (MEDIUM) : cas reel documente sur `fastify-bearer-auth` (GHSA-376v-xgjx-7mfr) ou un `timingSafeEqual` mal utilise laisse deviner la longueur du token. ## Decisions prises en planification - Sortie de la vague monitoring des postes : ce changement touche TOUS les chemins de lecture en production pour une raison etrangere a la feature. Le melanger rendrait impossible de dire ce qui a casse apres le redeploy manuel. - Creee sans milestone, `status:ready` : dette de securite tracee, a prendre quand tu veux. ## Spec source la-compagnie-maximus/spec-plan-monitoring-postes.md + spec-decisions-monitoring-postes.md (Issue 8)
maximus added the
status:ready
type:security
source:human
labels 2026-08-15 20:11:13 +00:00
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: maximus/vps-health-api#17
No description provided.