Security: aucune redirection HTTP vers HTTPS, identifiants transmis en clair (prod incluse)

Constaté en live le 2026-07-26. Dette antérieure au multi-env : la prod est concernée.

Constat

curl -sS -o /dev/null -w '%{http_code}\n' http://api.devopsyouss.com/healthz/ready
200
curl -sS -o /dev/null -w '%{http_code}\n' http://dev.api.devopsyouss.com/healthz/ready
200

Aucune redirection HTTP vers HTTPS nulle part dans le repo : pas de RequestRedirect, pas de ClientTrafficPolicy, et aucun sectionName sur les HTTPRoutes. Chaque route s'attache donc aux deux listeners du Gateway, le :80 comme le :443 (k8s/platform/gateway.yaml:55-75).

Pourquoi c'est une faille et pas juste une négligence

POST /login prend username + password via OAuth2PasswordRequestForm et renvoie un JWT bearer (app/routers/auth.py:9-28). Sur http://, les identifiants et le token transitent en clair. CWE-319, Cleartext Transmission of Sensitive Information.

Le TLS existe et fonctionne sur les endpoints à un niveau de sous-domaine, mais rien n'oblige le client à l'emprunter.

Done when

  • Le port 80 ne sert plus de trafic applicatif : soit sectionName: https sur les HTTPRoutes, soit un RequestRedirect 301 sur le listener :80
  • Vérifié au préalable que rien de légitime n'utilise le port 80 — les certificats passent par DNS-01 (k8s/platform/certificate.yaml), donc a priori aucun challenge HTTP-01 à préserver
  • Test négatif au runbook : curl -sS -o /dev/null -w '%{http_code}' http://api.devopsyouss.com/ renvoie 301, et le Location est bien en https://
  • HSTS envisagé une fois la redirection en place (à trancher, pas forcément dans cette issue)