Repository navigation
fix(security): #4702 — monter nodemailer en 10 et undici en 7.30 - #4756
Conversation
- notifications : nodemailer ^10.0.15 (6 CVE sur la ligne 9). nodemailer 10 embarque ses types : @types/nodemailer est retiré. Il tirait jusqu'ici les types Node par référence, et TypeScript 6 n'inclut plus @types/* par défaut, d'où le « Cannot find name 'process' » de la PR Dependabot #4689 : types: ["node"] est déclaré explicitement dans le tsconfig. - app : undici ^7.30.0 (12 CVE dont un contournement de validation TLS). - next-auth déclare nodemailer en peer optionnel pour son provider Email, non utilisé : le peer est retiré par override au lieu d'installer la ligne 7.x. - Re-résolution, dans leurs plages, des dépendances transitives signalées high par pnpm audit --prod (brace-expansion, fast-uri, fast-xml-builder, immutable, source-map-js, tmp).
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Audit d'accessibilité ultra11y — RGAA✅ Aucune non-conformité relevée par le moteur statique.
Rapport complet (HTML, captures annotées) : artefact ultra11y-pr-static du run. |
There was a problem hiding this comment.
Revi — aucun problème détecté dans le périmètre revu.
Détails du run IA · Iterion
Run : 01a115c5-686e-7ecb-94f9-bb794002ca4a
Tokens du run au moment de publier : 69 255.
Périmètre revu : correctness: packages/app/package.json, packages/notifications/package.json (version bumps, @types/nodemailer removal) ; tooling/types: packages/notifications/tsconfig.json (types: ["node"] semantics vs other @types devDeps) ; security: pnpm-workspace.yaml override 'next-auth>nodemailer': '-' (verified next-auth 4.24.15 declares nodemailer as optional peer; vulnerable 7.x fully removed from lockfile) ; security/data: pnpm-lock.yaml — nodemailer/undici/next-auth resolutions, remaining undici copies traced to dev-only consumers (@semantic-release/github, jsdom, testcontainers), transitive bumps (brace-expansion, tmp, fast-uri, immutable, source-map-js, fast-xml-builder) all in-range with integrity hashes ; compatibility: nodemailer 10.0.15 bundled types (export default + Transporter/SendMailOptions exported — matches transporter.ts/jobHandler.ts usage); engines node>=20 vs repo node>=24; undici 7.30.0 exists, engines node>=20.18.1 ; requirements: issue #4702 (fetched from forge) vs delivered versions
Revue mono (single model family).
| Étape | Modèle | Harness | Effort demandé | Tokens |
|---|---|---|---|---|
| Revue GLM | glm-5.3 | claude_code | max | 55 185 |
| Synthèse · GLM | glm-5.3 | claude_code | medium | 14 070 |
Tokens cumulés des appels IA, pas la taille du contexte. L’effort indiqué est le réglage demandé au modèle.
LucasCharrier
left a comment
There was a problem hiding this comment.
Mise à jour des dépendances runtime cohérente avec la PR de base et la configuration TypeScript. Approuvé.
…nodemailer 10 nodemailer 10 expose un objet par défaut, plus un namespace : nodemailer.Transporter ne compile plus (TS2503). Le type est importé nommément.
|
🎉 Deployment for commit 46054f3 : IngressesDocker images
|
|
Retour de revue non bloquant — état consulté : Aucune anomalie bloquante identifiée dans la mise à jour nodemailer / undici lors de la revue initiale. La suppression du peer nodemailer de NextAuth correspond à l'absence d'utilisation du provider Email. Fusionner après #4751, dont cette PR dépend. Les points ouverts sont consignés en suivi et ne constituent pas une demande de changements de ma part. |
Viczei
left a comment
There was a problem hiding this comment.
Approbation avec les retours consignés en suivi non bloquant : #4756 (comment). Les points encore ouverts et les limites de vérification restent ceux du commentaire.
Closes #4702
Résumé
notifications:nodemailer^9.0.1 → ^10.0.15 (6 CVE, dont une injection CRLF SMTP et une validation TLS insuffisante).@types/nodemailerest retiré.nodemailer.Transporterne compile plus (TS2503). Le script d'aperçuscripts/previewMails.tsimporte donctype Transporternommément, comme le worker le faisait déjà.@types/*par défaut : d'où leCannot find name 'process'qui cassait la PR Dependabot chore(deps): bump nodemailer from 9.0.6 to 10.0.9 #4689."types": ["node"]est désormais déclaré dans letsconfig.app:undici^7.24.4 → ^7.30.0 (12 CVE, dont un contournement de validation de certificat TLS).next-authdéclarenodemaileren peer optionnel pour son provider Email, que l'app n'utilise pas (ProConnect uniquement). pnpm installait quand même la ligne 7.x vulnérable. Le peer est retiré par override ('next-auth>nodemailer': '-').pnpm audit --prod(brace-expansion, fast-uri, fast-xml-builder, immutable, source-map-js, tmp) sont re-résolues dans leurs plages, sans override permanent. Quelques correctifs de patch montent au passage (postcss, browserslist, rollup…).Vérification
pnpm audit --prod: plus aucun high ni critique. Restent esbuild (low), fast-xml-parser et uuid (moderate).pnpm typecheck,pnpm lint:check,pnpm format:check: OK.pnpm test: notifications 165/165 ; app 7202/7206 en suite complète. Les 4 échecs sont des timeouts sous forte charge machine ; relancés seuls, ces fichiers passent (103/103).pnpm --filter app buildetpnpm --filter notifications build: OK.scripts/previewMails.tsest hors dutsconfigde CI. Vérifié avec untsc --noEmitciblé : l'erreur nodemailer a disparu. Restent des erreurs de type sur les payloads d'exemple (roundmanquant, etc.), antérieures à cette PR et sans lien avec nodemailer.Limites
fetch()global. Le bump d'undiciprotège le code qui importe le paquet, c'est-à-dire l'AgentmTLS de SUIT (suitClient.ts,scripts/check-suit-connection.ts). Lefetch()global, lui, utilise l'undici embarqué dans Node, quel que soit lepackage.json. QuandsuitClient.tspasse sonAgentendispatcher, la connexion TLS passe par l'undici du paquet, mais l'implémentation defetchreste celle de Node.>= 7.24.1, < 7.29.1). Node 24.21.0 (7 septembre 2026, dernière 24.x publiée) embarque 7.29.1, la version corrigée.BalancedPoolavec une optionconnect/tlscontenant une fonction.fetch()passe parAgent, que l'advisory déclare non affecté, et le dépôt n'utiliseBalancedPoolnulle part.Dockerfilepart denode:24-alpine, un tag flottant : la version de Node, donc d'undici embarqué, dépend du jour du build. Épingler Node (version exacte ou digest) est à traiter dans un suivi séparé, hors de cette PR.e2e.yamlne se déclenche automatiquement que sur une PR versalpha. Cette PR, empilée sur fix(security): #4693 — monter next-auth en 4.24.15 et next en 16.3.8 #4751, n'a donc pas de « Test e2e » : la suite tournera une fois fix(security): #4693 — monter next-auth en 4.24.15 et next en 16.3.8 #4751 mergée et cette branche rebasée suralpha(ou par un lancement manuel du workflow sur la branche).Test plan
alpha: « Test e2e » vert, en particuliernotifications-email-flow.e2e.ts(envoi réel vers Mailpit)