fix(deps): clear 6 reachable RustSec advisories, accept 3 unreachable ones #316
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#316
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-310-rustsec-advisories"
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?
Resolves #310
cargo auditpasse de 9 vulnérabilités à 0 sursrc-tauri/Cargo.lock, sans toucherCargo.toml.Ce que fait la PR
Six advisories atteignables — corrigées.
cargo update -p rustls-webpki -p tar:rustls-webpki0.103.9 → 0.103.13 (RUSTSEC-2026-0049 / -0098 / -0099 / -0104) ettar0.4.44 → 0.4.46 (RUSTSEC-2026-0067 / -0068). Les deux tiennent dans les bornes existantes du manifeste. Elles sont soustauri-plugin-updater— téléchargement et décompression des mises à jour — donc réellement dans le binaire livré.Trois advisories ni corrigeables ni atteignables — acceptées explicitement, dans un
.cargo/audit.tomlversionné, lu par les deux workflows sans qu'aucun n'ait à le savoir :quick-xml0.38.4 (7.5 high ×2)plist, donttaurine dépend que pour le bundling Apple. Corrigé en>= 0.41.0alors queplistexige^0.38:[patch.crates-io]ne franchit pas cette frontière.rsa0.9.10 (5.9 medium)patchedvide) et jamais compilé : seul parentsqlx-mysql, artefact du graphe multi-backend de sqlx sur un projet SQLite.Laisser ces trois-là rougir le gate quotidien pour toujours reproduirait la perte de signal que #232 avait supprimée en retirant le
|| true— une alarme toujours rouge n'est plus une alarme. C'est le raisonnement de l'ADR 0018.Preuves, contre le lock d'après le bump
cargo-audit0.22.2, advisory-db 0bfde9d6 (2026-07-27). Les 23warningsont inchangés — mesuré, pas supposé : les advisories supprimées sont retirées, pas requalifiées en warning.Le garde-fou, et pourquoi il existe
L'atteignabilité est une propriété du graphe résolu aujourd'hui. Un bump
tauri/plistrendantquick-xmlinconditionnel laisserait la suppression masquer une advisory vivante, et l'audit resterait vert : l'inverse exact du rouge permanent qu'on corrige ici.check-rust.ymlgagne donc une étape bloquante qui rejoue la preuve pour chaque crate supprimé, sur les deux cibles livrées. Le scénario qui périmerait la liste est lui-même une modification desrc-tauri/, soit précisément ce qui déclenche ce workflow. Trois détails la rendent fiable plutôt que décorative :cargo treeest testé séparément de sa sortie — un crate absent sort en 0 avec un stdout vide, et uncargo treeen échec aussi ; sans cette distinction, une panne de l'outil se lirait comme une preuve d'absence ;tar, réellement présent) doit être trouvé à chaque run, sinon le silence de la boucle ne prouve rien ;--locked, pour quecargo treene réécrive pas le lock contre lequel l'audit a été pris.Testé localement dans les deux sens : sort en 0 sur le graphe actuel, et détecte bien
tarquand on le lui donne comme cible.Dérive de
Cargo.lockà expliquerLe diff du lock fait 11+/11−, dont 7 lignes qui ne sont pas le bump. Ce n'est pas un artefact de mon invocation :
--precisedonne exactement le même résultat.Sept crates repointent leur dépendance
windows-sysde 0.61.2 vers 0.48.0 ou 0.59.0 — des versions déjà présentes dans le lock. Vérifié :windows-sysprésentes est identique avant/après ;colored,dirs-sys,errno,rustix,tempfile,winapi-util,winapi-i686-pc-windows-gnu) portent une dépendancewindows-sysconditionnelle Windows — sur Linux le changement est un no-op complet.C'est la re-résolution de cargo 1.94.1 sur des bornes larges, pas une dérive de dépendances.
Portée additionnelle, et pourquoi
.cargo/**ajouté auxpathsdecheck-rust.yml— le répertoire entier, pas le chemin exact : un futur.cargo/config.toml(rustflags, linker) changerait le build Rust et sauterait la CI Rust sans que personne ne le voie. Argument repris du propre en-tête decheck-frontend.yml..cargo/**ajouté auxpaths-ignoredecheck-frontend.yml— une PR d'audit ne doit pas consommer un job frontend sur un runner à capacité 1.audit.yml,docs/architecture.mdetCLAUDE.mddisent maintenant explicitement qu'un run vert signifie « zéro advisory hors liste », pas « zéro advisory ». Le contrat du gate a changé, il doit se lire comme tel.### Security/### Sécuritédans les deux CHANGELOG, sur le modèle de #235-#238 / #241. À noter pour la revue :.claude/rules/changelog.mdne liste que Added/Changed/Fixed/Removed — la catégorie Security repose sur ce précédent, pas sur la règle écrite.Suivis ouverts, pas traités ici
quick-xmlquandplist/tauripassera à>= 0.41.0. C'est le pendant du garde-fou : celui-ci attrape la suppression devenue injustifiée, #312 attrape la suppression devenue inutile, que rien ne signale.tauri-plugin-deep-link 2.4.8est yanked, et c'est une dépendance directe (src-tauri/Cargo.toml:28). Les crates yanked remontent enwarninget ne comptent pas dans le code de sortie : ils ne font pas partie de ce qui rend l'audit vert.audit.ymln'a jamais été déclenché : zéro run d'événementschedulesur les 420 tâches de l'historique Actions. Unworkflow_dispatchvert prouve que la commande sort en 0, pas que l'alarme quotidienne existe. À ne pas confondre en relisant cette PR.taretrustls-webpkine sont ici que compilés. Une régression de comportement (le correctiftartouche justementunpack_inet les en-têtes PAX) ne se verrait qu'à la mise à jour, chez l'utilisateur. Le skill/releasene teste aujourd'hui aucun vrai cycle téléchargement+extraction.Validation locale
cargo check --all-targetsvertcargo test --all-targets: 106 passed, 0 failednpm run build(tsc + vite) vertnpm test: 871 passed (54 fichiers)cargo audit: exit 0Signal pré-merge
audit.ymln'a pas de triggerpull_requestet l'étapecargo auditdecheck-rust.ymlestcontinue-on-error— le workflow dont on modifie la configuration ne tourne donc pas sur cette PR. La preuve pré-merge à lire est le log de cette étape non bloquante, plus leworkflow_dispatchlancé sur la branche. Ajouter un triggerpull_requestàaudit.ymla été écarté : ça ferait tourner deux fois l'audit sur chaque PR Rust, à contre-courant de #232 sur un runner à capacité 1.