[security] deps: RUSTSEC-2026-0346 à -0349 (rustls) — l'audit quotidien est rouge depuis le 2026-10-15 #447
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#447
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Constat
audit.ymléchoue depuis le 2026-10-15 à 06:00 UTC (run 553). Le dernier vert est celui de la veille (run 552).src-tauri/Cargo.lockn'a pas bougé depuis le 2026-10-08 (e4db715, release v0.17.1) : le rouge vient de quatre advisories publiées entre les deux tirs, pas d'un changement de code.Extrait du log du run 553 :
Repéré le jour même au démarrage de session (
/warmup), contre 17 jours en #343 et 7 en #348. Le Défenseur n'a rien signalé : il n'audite pas les dépendances Rust (voir « Hors périmètre »).Les advisories
Les quatre visent
rustls0.23.45, sont datées du 2026-10-14 et sont corrigées en>= 0.23.46.Debugdérivé deTls12ClientSessionValueetTls13ClientSessionValueaffiche le master secret TLS 1.2 ou la PSK de reprise TLS 1.3. Seul unClientSessionStoremaison qui formate ces valeurs (dans un journal, par exemple) les expose ; leDebugdes connexions et du cache de session intégré est expurgé.public_name). Ne touche que les clients enEchMode::Enable.brotli, non activée par défaut) accepte une fenêtre choisie par le pair : un en-tête de 5 octets fait allouer 1 Gio avant toute authentification.Atteignabilité
Méthode de l'ADR 0018 :
cargo tree -i rustlspar triple livré. Arbre identique surx86_64-unknown-linux-gnuetx86_64-pc-windows-msvc:Même chemin unique qu'en #348 : la vérification et le téléchargement des mises à jour automatiques. L'application ne dépend pas de
rustlsdirectement, et son proprereqwest0.12.28 (Cargo.toml:43: licence, authentification, cours, rétroaction) passe parhyper-tls → native-tls, hors de cet arbre.Sur ce chemin, aucune des quatre n'est déclenchable :
ClientSessionStoremaisonTls12/13ClientSessionValuedansreqwest0.13.2,hyper-rustls0.27.7,tokio-rustls0.26.4,rustls-platform-verifier0.6.2 ettauri-plugin-updater2.10.0, ni danssrc-tauri/src.EchMode::EnableEchMode,EchConfigouwith_echdans ces cinq crates ni danssrc-tauri/src.brotliderustlsring,std,tls12. La stropherustlsdu lock ne dépend pas debrotli; lebrotli8.0.2 du lock vient detauri-codegenettauri-utils.ring, quetauri-plugin-updaterinstalle quand aucun n'est défini (src/updater.rs:446-448) ;aws-lc-rsest absent du graphe des deux cibles. Les groupes deringsontX25519,SECP256R1etSECP384R1: il n'y a rien à faire retomber.La règle 1 de
.cargo/audit.tomls'applique quand même : le crate est dans le graphe des deux cibles et un correctif est publié, donc ces advisories se corrigent et ne se suppriment pas. L'inatteignabilité mesurée ci-dessus sert au texte du CHANGELOG et à la décision de ne pas publier de release corrective, pas à une entrée de suppression.Correctif
cargo update -p rustls→ 0.23.46. Diff réel du lock : 2 lignes, 1 strophe (version et checksum). 666 paquets avant et après,Cargo.tomlintouché.webpki ^0.103.14), avec la même MSRV (1.71). Non yanked. Contrairement à #348,rustls-webpkine bouge pas.windows-sys: le diff ne contient aucune lignewindows-sys, et la garde de #345 reste verte. C'est la seconde mesure surrustlsaprès #348, avec le même résultat.Vérifications
Faites le 2026-10-15 dans un worktree jetable sur
main8620049:cargo-audit 0.22.2, le binaire de la CI (sha256 de l'archive vérifié contre le manifeste detaiki-e/install-action), lancé depuis la racine du dépôt :error: 4 vulnerabilities found!, les quatre ci-dessus ;cargo metadata --locked: exit 0, lock non réécrit.sha256sumdu.cratetéléchargé vaut48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf, la valeur de l'index crates.io.cargo check --locked --all-targets: exit 0, avecCompiling rustls v0.23.46.Suppression guard: 2 checks, exit 0.windows-sysrejouée :windows-sys pinning: 9 checks, exit 0.cargo test --locked --all-targets: 267 passed, 0 failed, 1 ignored.Analyse (2026-10-15)
Décisions
rustlsvers 0.23.46. La suppression des quatre IDs est écartée : la règle 1 de.cargo/audit.tomll'interdit, puisque le crate est dans le graphe des deux cibles et qu'un correctif est publié.Travail à faire
cargo update -p rustls --precise 0.23.46, la version mesurée. Si une 0.23.47 paraît d'ici là, remesurer avant de la prendre.windows-sys;cargo metadata --lockedsans réécriture.cargo check --locked,cargo test --lockedet les deux gardes, rejoués sur la branche.### Securityde[Unreleased](CHANGELOG.md) et sous### Sécuritéde[Non publié](CHANGELOG.fr.md), après celle de #358. Texte proposé ci-dessous.fix(deps): update rustls to 0.23.46avecResolves #447, PR,/pr-review, merge.check-rustligne à ligne :Compiling rustls v0.23.46,Suppression guard: 2 checks, exit 0,windows-sys pinning: 9 checks, exit 0, aucunevulnerability founddans l'étapecargo audit(qui estcontinue-on-error: true).workflow_dispatchd'audit.ymlsurmain, puis fermeture sur ce run vert.Fichiers concernés
src-tauri/Cargo.lock: stropherustls, version et checksum.CHANGELOG.mdetCHANGELOG.fr.md: section Sécurité de[Unreleased].src-tauri/Cargo.toml,.cargo/audit.toml,.forgejo/workflows/check-rust.yml, ADR 0023,docs/architecture.md.Surface de test
check-rust:cargo check, garde des suppressions (rsa, canaritar), gardewindows-sys(7 crates, canaritempfile),cargo test(267 tests),cargo audit; puis d'audit.yml.Critères d'acceptation
rustls0.23.46, checksum48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf, rien d'autre ne bouge dans le lock.cargo audit0.22.2 lancé depuis la racine du dépôt : 0 vulnérabilité, 12 warnings autorisés.cargo testvert.workflow_dispatchd'audit.ymlsurmainvert, vérifié dans le log.Complexité
Simple.
Entrées CHANGELOG proposées
CHANGELOG.md, sous### Security:CHANGELOG.fr.md, sous### Sécurité:Hors périmètre
Le Défenseur n'a rien signalé parce que son check
depsne lance jamaiscargo auditet ne cherche les manifestes Cargo qu'à la racine du dépôt :src-tauri/Cargo.lockn'est jamais lu. Les dépendances Rust de ce projet ne sont donc couvertes que paraudit.yml. Décision de Max du 2026-10-15 : ajouter un sous-checkcargo-auditau Défenseur, suivi dans maximus/agent-defenseurs#186.PR #448 mergée en fast-forward par l'API :
main=1763a9f. Le tip a été validé avant le merge, dans un worktree propre à la tête de la PR :npm ci, sonde rouge (rc=1), build, 2222 tests vitest,cargo check --locked, gardes (2/2 et 9/9),cargo test --locked(267 passed),cargo auditexit 0 (666 crates, 12 warnings autorisés).L'issue reste ouverte, puisque la PR ne la cite qu'en
Refs: elle attend le runworkflow_dispatchd'audit.ymlsurmain, lancé à la suite de ce commentaire, et sera fermée à la main sur ce run vert.Run
workflow_dispatchd'audit.ymlsurmainvert : run 556, sur1763a9f(merge fast-forward de la PR #448), lancé le 2026-10-16 à 23:15 UTC.Log lu, codes ANSI retirés :
cargo-audit-audit 0.22.2, installé partaiki-e/install-action;Loaded 1329 security advisories;Scanning src-tauri/Cargo.lock for vulnerabilities (666 crate dependencies);warning: 12 allowed warnings found, avec les mêmes IDs que les runs locaux d'avant et d'après le bump ;error: N vulnerabilit…, aucune mention de RUSTSEC-2026-0346 à -0349 ;Job succeeded.Critères d'acceptation :
rustls0.23.46, checksum48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf, rien d'autre ne bouge dans le lock.cargo audit0.22.2 : 0 vulnérabilité, 12 warnings autorisés (en local, puis aux runs 554 et 556).cargo testà 267 passed (run 554, puis tip validé en worktree propre).9abf474: la 0.23.46 apporte aussi une dizaine d'autres corrections de la couche TLS (voir la PR #448).workflow_dispatchd'audit.ymlsurmainvert : run 556.Fermée à la main. À rouvrir si l'un des quatre IDs réapparaît dans
audit.yml.Suites : #449 (
--lockeddans la CI, suggestion de la revue de la PR #448) ; le trou du Défenseur est suivi dans maximus/agent-defenseurs#186 ; la prochaine release doit dérouler le cycle réel de mise à jour dedocs/qa-update-cycle.md, ce bump touchant une dépendance detauri-plugin-updater.