fix(deps): update rustls to 0.23.45 to clear RUSTSEC-2026-0285 #349
No reviewers
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#349
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-348-rustls-rustsec-2026-0285"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Corrige l'unique vulnérabilité qui rougit
audit.ymltous les matins depuis le 2026-09-15 (runs 405 → 411, 7 rouges consécutifs ; dernier vert le run 404). Aucun push surmaindans la fenêtre — l'advisory est parue le 09-14, après le tir de ce matin-là.Le diff
4 lignes dans
src-tauri/Cargo.lock, 2 strophes.Cargo.tomlintouché, 666 paquets avant et après.rustlsrustls-webpkiLe mouvement de
rustls-webpkiest requis, pas opportuniste : rustls 0.23.45 resserre sa borne de^0.103.5à^0.103.14, et 0.103.13 ne la satisfait plus. Même forme que lehttp ^1 → ^1.1relevé par la revue de #344 surh2, mais cette fois contraignante. La 0.103.15 est un mouvement vers l'avant depuis la 0.103.13 posée par #310 : ces quatre correctifs sont conservés. Les listesdependenciesdes deux strophes sont inchangées.Plus deux entrées de CHANGELOG (EN + FR) sous
[Unreleased]/[Non publié].Atteignabilité — un seul chemin, plus étroit qu'en #343
Par triple explicite, jamais
--target all. Arbre identique sur les deux cibles livrées :C'est la couche TLS de la mise à jour automatique uniquement. Le
reqwestque l'app déclare elle-même (Cargo.toml:43, 0.12.28) passe parhyper-tls → native-tls → openssl: licence, authentification, cours et rétroaction n'ont jamais été sur ce chemin, contrairement à ce qui était vrai pourh2.Règle 1 de
.cargo/audit.toml— correctif publié + crate atteignable = corriger, pas supprimer. Le fichier de suppressions et le garde-fou decheck-rust.yml(CRATES="rsa") sont inchangés.La dérive
windows-sysne s'est pas déclenchée — #345 est à corriger#345 énonce que tout bump atteignant le sous-arbre réseau/TLS fait redescendre les 7 pointeurs
windows-sysde0.61.2.rustlsest au cœur de ce sous-arbre et rien n'a bougé : les 6 versions présentes sont identiques avant/après, et undiffsur toutes les lignes mentionnantwindows-sysest vide. Le déclencheur tient àhyperet à ce qu'il tire, pas à la couche TLS en général.Conséquence : pas de strophe écrite à la main ici, contrairement à #344. Cargo a écrit le fichier lui-même, donc les checksums viennent de l'index plutôt que du rédacteur de la PR.
Le corps de #345 mérite d'être corrigé sur ce point ; sa décision de fond (garde-fou + ADR) reste entière — c'est justement l'absence de garde qui oblige à re-mesurer à chaque fois.
Vérifications
cargo-audit 0.22.2sur le lock d'avanterror: 1 vulnerability found!— l'outil local reproduit le rouge de la CIcargo-audit 0.22.2sur le lock corrigécargo metadata --lockedsha256sumdes.cratetéléchargés = lock, pour les deux crates ;Compiling rustls v0.23.45/Checking rustls-webpki v0.103.15prouvent que ces archives ont servicargo check --lockedcargo test --lockedSuppression guard: 2 checks, exit 0, canaritartrouvéLe contrôle sur le lock d'avant est là pour que le vert veuille dire quelque chose : sans lui, un exit 0 pourrait aussi bien venir d'un outil mal configuré.
Après merge
Rejouer
audit.ymlenworkflow_dispatchsurmainpour prouver le vert plutôt que le déduire du run de PR — l'étapecargo auditdecheck-rust.ymlestcontinue-on-error: true, un job vert n'y prouve rien.Resolves #348
🤖 Generated with Claude Code
Verdict : APPROVE
Revue adversariale : chaque affirmation structurante du corps a été re-tracée depuis la source plutôt que relayée, et le contrôle sur le lock d'avant a été rejoué avec le même binaire. Aucune n'a été prise en défaut.
Ce qui a été re-prouvé indépendamment
cargo-audit 0.22.2 -fsurorigin/main:Cargo.lock, advisory-db du 09-21 17:17rustls 0.23.36,Severity: 5.3 (medium),Solution: Upgrade to >=0.23.45.cargo/audit.tomllu depuis la racineindex.crates.io/ru/st/rustls), pas ausha256sumdu rédacteur^0.103.5→^0.103.14depsdes deux versions dans l'index (dépendance renomméewebpki,package = "rustls-webpki")cargo tree -i rustlspar triple explicite, Linux et Windowstauri-plugin-updater → reqwest 0.13.2reqwest@0.12.28→hyper-tls → native-tls → openssl, et absent de l'arbre inverse complet derustlssur les deux cibleswindows-sysdiffsur toutes les lignes mentionnantwindows-sysdans les deux locksdiffdes listesdependenciesdes 2 strophes ; 666 paquets et 7279 lignes avant/aprèscargo metadata --lockedne réécrit pasLes deux versions retenues sont par ailleurs les dernières stables publiées (
0.23.45,0.103.15), et l'advisory locale confirme la sévérité annoncée :CVSS:3.1/…/C:L/I:N/A:N, soit confidentialité seulement.CI — le log prouve les étapes, pas seulement le vert
Run 412 (task 552, workflow
rust,Job succeeded). Log lu ligne à ligne parce que l'étapecargo auditdecheck-rust.ymlestcontinue-on-error: trueet qu'un job vert n'y prouve rien :ok: rsa absent from x86_64-unknown-linux-gnu, idemx86_64-pc-windows-msvc,ok: canary 'tar' found,Suppression guard: 2 checks, exit 0;test result: ok. 111 passed; 0 failed;Downloaded rustls v0.23.45→Compiling rustls v0.23.45, idemrustls-webpki v0.103.15: les archives derrière les checksums du lock sont bien celles qui ont servi ;Scanning src-tauri/Cargo.lock for vulnerabilities (666 crate dependencies), aucune ligneerror:.check-frontenda été correctement sauté par sa denylist (2.md+Cargo.lock) etcheck-rustdéclenché par le globsrc-tauri/**— même forme de cas test isolé qu'en #344.Chronologie vérifiée
Runs 405 → 411 = 7 échecs consécutifs d'
audit(09-15 → 09-21), dernier vert 404 (09-14) ; dernier commit surmain=97ee3c3du 09-13. La fenêtre est bien vide de push et l'advisory est datée du 09-14. Le corps est exact au numéro de run près.Resolves #348figure dans le message de commit, pas seulement dans le corps de la PR — la fermeture aura bien lieu. Format conventionnel respecté (fix(deps): …).Suggestions (non bloquantes)
rustls 0.23.36tant qu'aucune version n'est publiée. Sans urgence (5.3, confidentialité seulement, transcription toujours authentifiée, et le serveur de release n'émet pas de poignée de main non conforme), mais le choix mérite d'être tranché explicitement plutôt que par défaut : v0.15.1 ou attente du prochain lot.CLAUDE.mdne liste pas la catégorieSecurity/Sécurité(il n'énonce que « Added/Ajouté, Changed/Modifié, Fixed/Corrigé, Removed/Supprimé »), alors que les deux fichiers en comptent déjà 5 usages chacun, et 6 avec celui-ci. Dérive de doc préexistante, à corriger la prochaine fois queCLAUDE.mdest touché.Rendu in-app contrôlé au passage :
ChangelogContentaffiche l'intitulé de section tel quel (donc déjà localisé par le choix du fichier) etUpdateCardrend les###en sous-titre dans une boîte scrollable. La puce de 1058 caractères reste sous le maximum déjà présent dans la section v0.15.0 (1180) et loin du maximum du fichier (2396) — la verbosité est dans le précédent du projet.Après merge, le
workflow_dispatchd'audit.ymlsurmainannoncé dans le corps est la bonne étape finale : le vert du run de PR ne prouve rien.🤖 Revue générée par
/pr-review