fix(deps): update rustls to 0.23.46 to clear RUSTSEC-2026-0346 to -0349 #448
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#448
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-447-rustls-0.23.46"
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 les quatre vulnérabilités qui rougissent
audit.ymldepuis le run 553 (2026-10-15 06:00 UTC ; dernier vert le run 552).src-tauri/Cargo.lockn'avait pas bougé depuis la v0.17.1 : les advisories, publiées le 2026-10-14, ont suffi.Refs #447
Le diff
2 lignes dans
src-tauri/Cargo.lock, une strophe.Cargo.tomlintouché, 666 paquets avant et après.rustlsChecksum
48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf, identique à l'index crates.io et au sha256 du.cratetéléchargé. Aucun bump compagnon, contrairement à #348 : la 0.23.46 déclare les mêmes dépendances et la même MSRV (1.71). Aucune arêtewindows-sysdéplacée : diff vide sur ces lignes, garde de l'ADR 0023 verte.Plus une puce de CHANGELOG (EN et FR) sous
### Security/### Sécuritéde[Unreleased]/[Non publié].Atteignabilité
Analyse complète dans #447.
rustlsn'est atteint que partauri-plugin-updater→reqwest0.13, sur les deux cibles livrées ; lereqwest0.12 de l'application passe parnative-tls. Aucun des quatre avis ne s'applique à cet usage :ClientSessionStoremaisonEchMode::Enablebrotliderustlsring: X25519, P-256 et P-384 seulementRègle 1 de
.cargo/audit.toml: crate présent dans le graphe et correctif publié, donc on corrige, on ne supprime pas. Le fichier de suppressions et les gardes decheck-rust.ymlsont inchangés.Le CHANGELOG ne dit pas « aucun changement de comportement »
Comme
9abf474pour le bump précédent, la phrase est restreinte au code de l'application. Outre les quatre correctifs, la 0.23.46 apporte une dizaine d'autres corrections de la couche TLS (notes amontv/0.23.46: refus des enregistrementschange_cipher_specprotégés, mises à jour de clés TLS 1.3 au moment voulu, limites de confidentialité en TLS 1.2, erreurs d'entrées-sorties, capacité du cache de sessions, etc.) ; 21 fichiers desrc/diffèrent entre les deux versions.Vérifications locales
Sur la branche, depuis la racine du dépôt :
cargo-audit 0.22.2(binaire de la CI, sha256 vérifié) avant le bumpcargo-audit 0.22.2après le bumperror:, 666 crates, 12 warnings autorisés aux IDs identiquescargo metadata --lockedcargo check --locked --all-targetscheck-rust.ymlSuppression guard: 2 checks, exit 0windows-sys, extraite decheck-rust.ymlwindows-sys pinning: 9 checks, exit 0cargo test --locked --all-targetsSuite frontend non lancée : aucun fichier frontend modifié,
check-frontendexclutsrc-tauri/**et les*.mdde la racine, et aucun test ne lit les CHANGELOG réels. Seulcheck-rustdoit tourner sur cette PR.Prochaine release
Ce bump touche une dépendance de
tauri-plugin-updater: la prochaine release doit dérouler le cycle réel de mise à jour dedocs/qa-update-cycle.md(étape 10 de/release), déjà dû pourrelease.yml(#376). Pas de release corrective, sur décision de Max dans #447.Post-merge checklist (hence
Refs, not a closing keyword)cancel-in-progress) :POST /api/v1/repos/maximus/simpl-resultat/actions/workflows/audit.yml/dispatchesavec{"ref":"main"}, réponse 204 attendue.workflow_dispatchsur le commit de merge, ou sur un commit ultérieur demainqui en descend sisrc-tauri/Cargo.locket.cargo/audit.tomly sont identiques à ceux mergés. Statutsuccessexigé, puis lecture du log, codes ANSI retirés : version de cargo-audit installée,(666 crate dependencies),12 allowed warnings found, aucune ligneerror: N vulnerabilit…. Si la version de cargo-audit a changé, comparer les IDs des warnings plutôt que leur nombre.audit.yml).STATE.md.🤖 Generated with Claude Code
CI lue ligne à ligne :
PR Check — Rust, run 554, sur1763a9f(pull/448/head), succès en 9 min 33.Compiling rustls v0.23.46Suppression guard: 2 checks, exit 0windows-sys pinning: 9 checks, exit 0test result: ok. 267 passed; 0 failed; 1 ignoredcargo-audit-audit 0.22.2(installé par taiki-e, sha256 vérifié)Scanning src-tauri/Cargo.lock for vulnerabilities (666 crate dependencies)warning: 12 allowed warnings foundZéro ligne
error: N vulnerabilit…, zérovulnerabilit(y|ies) found, zéroFAIL:et zéroFAILED, recherches faites sur le log débarrassé des codes ANSI.check-frontendn'a pas tourné, comme prévu.Run à froid (
No cache found) : la toolchain est passée de rustc 1.99.0 (run 523, chauffe du lundi 2026-10-12) à 1.99.1 (2026-10-13), et la clé du cache hache la version de rustc. C'est le premier cas de la liste en tête decheck-rust.yml, pas un retour de #234 : aucun délai dépassé.Revue adversariale — PR #448 (
1763a9f)Verdict : APPROVE
Résumé. Le bump de
rustls0.23.45 → 0.23.46 est exact et minimal (2 lignes du lock, une puce de CHANGELOG par langue). La mutation inverse rougitcargo auditsur les quatre IDs, la tête passe contre la base d'advisories du jour, et les quatre affirmations d'inatteignabilité du CHANGELOG tiennent à la lecture des avis et des sources.Rejoué hors dépôt (copie
git archivede1763a9fdans/tmp)cargo-audit0.22.2, archive musl de la CI, sha2567fb9497f…c428conforme au manifeste detaiki-e/install-actionf28da8c, 2026-10-16), 1329 advisoriesmain,ae174560…)error: 4 vulnerabilities found!: RUSTSEC-2026-0346, -0347, -0348 et -0349, toutes surrustls0.23.45, « Upgrade to >=0.23.46 »cargo tree --locked --offline -i rustls, Linux et Windowstauri-plugin-updater2.10.0 →reqwest0.13.2 ; sha256 du lock identique avant et après.crateen cache ; dépendances, features et MSRV (1.71) identiques à la 0.23.45 ; dernière 0.23.x publiéeLe texte du CHANGELOG confronté aux sources
Debugdes valeurs de session) : l'avis exclut le cache de session intégré et ne vise qu'unClientSessionStoremaison. Aucune référence àClientSessionStoreni àTls12/13ClientSessionValuedansreqwest0.13.2,hyper-rustls0.27.7,tokio-rustls0.26.4,rustls-platform-verifier0.6.2,tauri-plugin-updater2.10.0 etsrc-tauri/src; la reprise de session reste celle par défaut de rustls, donc le cache intégré.EchMode,EchConfigouwith_echdans ces six emplacements ; l'avis exigeEchMode::Enable.rustlssur les deux cibles,ring,stdettls12; la strophe du lock ne dépend pas debrotli.aws-lc-rsest absent du lock,tauri-plugin-updaterinstalleringquand aucun fournisseur n'est défini (src/updater.rs:445-448), etringn'expose queX25519,SECP256R1etSECP384R1(rustls-0.23.46/src/crypto/ring/mod.rs:180-181). Aucun groupe hybride à faire retomber.reqwest(auth_commands,balance_commands,feedback_commands,license_commands) passent par lereqwest0.12.28 deCargo.toml:43, résolu endefault-tls→hyper-tls→native-tlssur les deux cibles. Lesfetch(du frontend ne lisent que des fichiers locaux (changelog).v/0.23.46listent, hors des quatre correctifs, les PR 3294, 3295 (change_cipher_specprotégés), 3312, 3318, 3325, 3332, 3333, 3337, 3340 et 3342 (mises à jour de clés TLS 1.3) ; 21 fichiers desrc/diffèrent. Restreindre « aucun changement » au code de l'application est exact, dans la ligne de9abf474.### Securityet### Sécuritéde la section non publiée ;git diff --checkpropre.CI (run 554, lu dans le log)
Compiling rustls v0.23.46,Suppression guard: 2 checks, exit 0,windows-sys pinning: 9 checks, exit 0,267 passed; 0 failed; 1 ignored, puiscargo-audit0.22.2 : 1329 advisories, 666 crates, aucune ligne de vulnérabilité, 12 warnings autorisés. Le run à froid est expliqué : rustc 1.99.1 du 2026-10-13,No cache found., aucune lignereserveCache,getCacheEntryni timeout, cache sauvegardé.check-frontendn'a pas tourné, ce qui est attendu (paths-ignore:src-tauri/**,*.md) ; aucun test ne lit les CHANGELOG réels.Ce que le run ne prouve pas seul :
cargo checketcargo testtournent sans--locked, si bien qu'un lock commité incohérent serait re-résolu en silence avant les gardes en--locked. Ici, le log ne contient aucune ligneLocking, etcargo tree --lockedlaisse le lock intact en local : le lock compilé est celui qui est commité.Fermeture de #447
Timeline :
pull_refde #448 enref_action: none, et le commit ne porte queRefs #447. Le merge ne fermera pas l'issue, comme le prévoit la checklist post-merge (le plan de l'issue annonçaitResolves #447, mais sa dernière étape, la fermeture sur le run vert, donne raison àRefs). L'enjeu est confirmé :audit.ymlest vert au run 552 (10-14), rouge aux runs 553 et 555 (10-15, puis 10-16 surmain8620049) ; contre la base du jour, le lock demainne ressort que sur ces quatre IDs, donc leworkflow_dispatchpost-merge passera au vert sauf nouvel avis publié d'ici là.Suggestion (non bloquante, hors périmètre)
Ajouter
--lockedaux étapescargo checketcargo testdecheck-rust.yml, et examiner lenpx tauri buildderelease.yml, pour que la CI prouve elle-même que le lock audité est celui qu'on compile. Une issue de suivi suffit.Actions faites
/tmp/pr448-review(arbre extrait, binairecargo-audit, base d'advisories, lock muté, log du run 554) supprimée en fin de revue.