fix(deps): rustls-webpki 0.103.16, webpki-root-certs 1.0.10 and vite 6.4.4 (RUSTSEC-2026-0382/0383, launch-editor) #485

Open
maximus wants to merge 2 commits from issue-484-security-bumps into main
Owner

Refs #484
Resolves #483

Ce que change cette PR

Deux montées de version dans les locks, et aucune ligne de code de l'application. Décision de Max (2026-10-20) : une seule PR pour #484 et #483, un commit par issue.

  • src-tauri/Cargo.lock : rustls-webpki 0.103.15 → 0.103.16 et webpki-root-certs 1.0.6 → 1.0.10 (RUSTSEC-2026-0382 et RUSTSEC-2026-0383), commit 4a04716.
  • package-lock.json : vite 6.4.3 → 6.4.4 (GHSA-587h-7wmj-h5pm, GHSA-698v-4r3x-3vcv, GHSA-r825-w8mm-5pxw, dans launch-editor), commit e66ae08. package.json reste à ^6.4.3 (décision de Max : lock seulement).
  • CHANGELOG EN et FR : une section Security / Sécurité créée sous la section non publiée, avec deux puces.
  • CLAUDE.md et docs/architecture.md : la lecture datée « npm audit à 0 » passe au 2026-10-20 (#483). Seuls la date et le lien changent, « (#358 en vient) » est gardé.

Ce que changent les nouvelles versions (lu, zone Dépendances de REVIEW.md)

  • rustls-webpki 0.103.16
    • Ce qui change : huit clés publiques d'intermédiaires emSign déclarés non fiables (src/data/distrusted), une erreur CertDistrusted, et le refus d'une chaîne qui les contient. Dépendances inchangées.
    • Où il agit : sous Linux, rustls-platform-verifier 0.6.2 valide la chaîne de l'updater par webpki (others.rs, racines du système). Sous Windows, windows.rs ne l'utilise pas : c'est l'API du système qui valide.
    • Limites de l'exposition : les paquets de mise à jour restent vérifiés par leur signature. Les appels de l'app (licence, authentification, cours, rétroaction) passent par reqwest 0.12 avec la TLS du système, non concernés.
  • webpki-root-certs 1.0.10
    • Ce qui change : la liste passe de 136 à 120 racines, et rust-version de 1.64 à 1.71.
    • Pourquoi c'est sans effet : c'est une dépendance de rustls-platform-verifier pour wasm32 seulement (et de développement). cargo tree --locked -i webpki-root-certs est vide pour x86_64-unknown-linux-gnu comme pour x86_64-pc-windows-msvc.
  • vite 6.4.4
    • Le paquet publié compte 35 fichiers, comme la 6.4.3, et seul dist/node change.
    • Le gros morceau du serveur de développement change de 671 lignes ajoutées et 483 retirées :
      • le launch-editor embarqué (escapeCmdArgs, existsSync, commande de lancement) ;
      • le contrôle d'accès du middleware de transformation : checkServingAccess et deniedServingAccessForTransform sont retirés au profit du contrôle au chargement, déjà présent ;
      • safeModulePaths avec cleanUrl.
    • Trois morceaux sont renommés. Dans le manifeste, seule sa dépendance de développement launch-editor-middleware change (^2.14.1 → ^2.14.2).
    • Aucune ligne ajoutée n'utilise process.env, child_process ni le réseau. Tout ce code sert au serveur de développement (vite dev, tauri dev).

Preuves

Contrôle main (45d8493) Branche
cargo-audit 0.22.2 (binaire de la CI, sha256 égal au digest GitHub), lancé depuis la racine code 1 : 2 vulnérabilités (0382, 0383), 18 avertissements autorisés code 0 : aucune vulnérabilité, 18 avertissements autorisés
Mutation : rustls-webpki remis en 0.103.15 (copie du lock) code 1 : RUSTSEC-2026-0382 seule
Mutation : webpki-root-certs remis en 1.0.6 (copie du lock) code 1 : RUSTSEC-2026-0383 seule
Cargo.lock git diff --numstat : 4 4 ; deux blocs changent de version, aucun ajouté ni retiré, même source crates.io ; cargo metadata --locked passe
Gardes de check-rust (texte exact de l'étape, bash -e -o pipefail) « Suppression guard: 2 checks, exit 0 » ; « windows-sys pinning: 9 checks, exit 0 »
cargo check --locked / cargo test --locked passe ; 269 réussis, 1 ignoré
cargo xwin check --locked (Windows) code 0 (témoin) code 0 (rustls-webpki 0.103.16 vérifié)
npm audit code 1 : 3 avis launch-editor, 1 haute code 0 : 0 vulnérabilité
Mutation : lock remis en vite 6.4.3 npm audit code 1, les 3 avis
package-lock.json git diff --numstat : 3 3 (version, resolved sur registry.npmjs.org, integrity égale à npm view) ; package.json inchangé ; clés de .packages identiques
npm ci passe sous npm 11.21.0 et npm 10.9.4, vite 6.4.4 installé ; npm@11.21.0 install --package-lock-only laisse le lock identique à l'octet (même témoin sur la base)
Build dist/ de référence identique, sauf les deux copies des CHANGELOG
vitest sonde rouge, code 1 ; 156 fichiers, 2560 tests verts

Méthode du lock npm. npm update vite gardait la 6.4.3 (« up to date »). npm install vite@^6.4.3 prenait bien la 6.4.4, mais réécrivait la borne en ^6.4.4 dans package.json et à la racine du lock. Seul son bloc node_modules/vite a donc été gardé : 3 lignes.

Niveau

Normal selon REVIEW.md :

  • aucun manifeste touché (package.json et Cargo.toml inchangés) ;
  • dans les locks, seulement des montées de version de paquets déjà présents, aucun ajouté ni retiré, même source de registre (décision de Max du 2026-10-17) ;
  • CLAUDE.md et docs/architecture.md, au moins normaux ;
  • CHANGELOG, bas.

Post-merge checklist (hence Refs, not a closing keyword)

  1. audit.yml par workflow_dispatch sur main : run vert (aucune vulnérabilité, 18 avertissements autorisés), numéro du run cité sur #484.
  2. #484 est fermée à la main ensuite, avec ce run.
  3. Release suivante, à reporter dans STATE.md (« Vérifications dues à la release suivante ») :
    • le cycle réel de mise à jour depuis la v0.17.2 télécharge le paquet et sa signature avec l'updater de la v0.17.2, donc avec l'ancien rustls-webpki ;
    • seul le check() final de la nouvelle version passe par la 0.103.16, et seul Linux valide la chaîne avec lui ;
    • le chemin de téléchargement avec le correctif s'exerce au premier cycle qui part de la release qui l'embarque (#463).

#483 se ferme au merge.

🤖 Generated with Claude Code

Refs #484 Resolves #483 ## Ce que change cette PR Deux montées de version dans les locks, et aucune ligne de code de l'application. Décision de Max (2026-10-20) : une seule PR pour #484 et #483, un commit par issue. - `src-tauri/Cargo.lock` : `rustls-webpki` 0.103.15 → 0.103.16 et `webpki-root-certs` 1.0.6 → 1.0.10 (RUSTSEC-2026-0382 et RUSTSEC-2026-0383), commit `4a04716`. - `package-lock.json` : `vite` 6.4.3 → 6.4.4 (GHSA-587h-7wmj-h5pm, GHSA-698v-4r3x-3vcv, GHSA-r825-w8mm-5pxw, dans `launch-editor`), commit `e66ae08`. `package.json` reste à `^6.4.3` (décision de Max : lock seulement). - CHANGELOG EN et FR : une section Security / Sécurité créée sous la section non publiée, avec deux puces. - `CLAUDE.md` et `docs/architecture.md` : la lecture datée « `npm audit` à 0 » passe au 2026-10-20 (#483). Seuls la date et le lien changent, « (#358 en vient) » est gardé. ## Ce que changent les nouvelles versions (lu, zone Dépendances de `REVIEW.md`) - **`rustls-webpki` 0.103.16** - Ce qui change : huit clés publiques d'intermédiaires emSign déclarés non fiables (`src/data/distrusted`), une erreur `CertDistrusted`, et le refus d'une chaîne qui les contient. Dépendances inchangées. - Où il agit : sous Linux, `rustls-platform-verifier` 0.6.2 valide la chaîne de l'updater par `webpki` (`others.rs`, racines du système). Sous Windows, `windows.rs` ne l'utilise pas : c'est l'API du système qui valide. - Limites de l'exposition : les paquets de mise à jour restent vérifiés par leur signature. Les appels de l'app (licence, authentification, cours, rétroaction) passent par `reqwest` 0.12 avec la TLS du système, non concernés. - **`webpki-root-certs` 1.0.10** - Ce qui change : la liste passe de 136 à 120 racines, et `rust-version` de 1.64 à 1.71. - Pourquoi c'est sans effet : c'est une dépendance de `rustls-platform-verifier` pour `wasm32` seulement (et de développement). `cargo tree --locked -i webpki-root-certs` est vide pour `x86_64-unknown-linux-gnu` comme pour `x86_64-pc-windows-msvc`. - **`vite` 6.4.4** - Le paquet publié compte 35 fichiers, comme la 6.4.3, et seul `dist/node` change. - Le gros morceau du serveur de développement change de 671 lignes ajoutées et 483 retirées : - le `launch-editor` embarqué (`escapeCmdArgs`, `existsSync`, commande de lancement) ; - le contrôle d'accès du middleware de transformation : `checkServingAccess` et `deniedServingAccessForTransform` sont retirés au profit du contrôle au chargement, déjà présent ; - `safeModulePaths` avec `cleanUrl`. - Trois morceaux sont renommés. Dans le manifeste, seule sa dépendance de développement `launch-editor-middleware` change (^2.14.1 → ^2.14.2). - Aucune ligne ajoutée n'utilise `process.env`, `child_process` ni le réseau. Tout ce code sert au serveur de développement (`vite dev`, `tauri dev`). ## Preuves | Contrôle | `main` (`45d8493`) | Branche | |---|---|---| | cargo-audit 0.22.2 (binaire de la CI, sha256 égal au digest GitHub), lancé depuis la racine | code 1 : 2 vulnérabilités (0382, 0383), 18 avertissements autorisés | code 0 : aucune vulnérabilité, 18 avertissements autorisés | | Mutation : `rustls-webpki` remis en 0.103.15 (copie du lock) | | code 1 : RUSTSEC-2026-0382 seule | | Mutation : `webpki-root-certs` remis en 1.0.6 (copie du lock) | | code 1 : RUSTSEC-2026-0383 seule | | `Cargo.lock` | | `git diff --numstat` : `4 4` ; deux blocs changent de version, aucun ajouté ni retiré, même source crates.io ; `cargo metadata --locked` passe | | Gardes de `check-rust` (texte exact de l'étape, `bash -e -o pipefail`) | | « Suppression guard: 2 checks, exit 0 » ; « windows-sys pinning: 9 checks, exit 0 » | | `cargo check --locked` / `cargo test --locked` | | passe ; 269 réussis, 1 ignoré | | `cargo xwin check --locked` (Windows) | code 0 (témoin) | code 0 (`rustls-webpki` 0.103.16 vérifié) | | `npm audit` | code 1 : 3 avis `launch-editor`, 1 haute | code 0 : 0 vulnérabilité | | Mutation : lock remis en `vite` 6.4.3 | | `npm audit` code 1, les 3 avis | | `package-lock.json` | | `git diff --numstat` : `3 3` (version, `resolved` sur registry.npmjs.org, `integrity` égale à `npm view`) ; `package.json` inchangé ; clés de `.packages` identiques | | `npm ci` | | passe sous npm 11.21.0 et npm 10.9.4, `vite` 6.4.4 installé ; `npm@11.21.0 install --package-lock-only` laisse le lock identique à l'octet (même témoin sur la base) | | Build | `dist/` de référence | identique, sauf les deux copies des CHANGELOG | | vitest | | sonde rouge, code 1 ; 156 fichiers, 2560 tests verts | Méthode du lock npm. `npm update vite` gardait la 6.4.3 (« up to date »). `npm install vite@^6.4.3` prenait bien la 6.4.4, mais réécrivait la borne en `^6.4.4` dans `package.json` et à la racine du lock. Seul son bloc `node_modules/vite` a donc été gardé : 3 lignes. ## Niveau Normal selon `REVIEW.md` : - aucun manifeste touché (`package.json` et `Cargo.toml` inchangés) ; - dans les locks, seulement des montées de version de paquets déjà présents, aucun ajouté ni retiré, même source de registre (décision de Max du 2026-10-17) ; - `CLAUDE.md` et `docs/architecture.md`, au moins normaux ; - CHANGELOG, bas. ## Post-merge checklist (hence `Refs`, not a closing keyword) 1. `audit.yml` par `workflow_dispatch` sur `main` : run vert (aucune vulnérabilité, 18 avertissements autorisés), numéro du run cité sur #484. 2. #484 est fermée à la main ensuite, avec ce run. 3. Release suivante, à reporter dans `STATE.md` (« Vérifications dues à la release suivante ») : - le cycle réel de mise à jour depuis la v0.17.2 télécharge le paquet et sa signature avec l'updater de la v0.17.2, donc avec l'ancien `rustls-webpki` ; - seul le `check()` final de la nouvelle version passe par la 0.103.16, et seul Linux valide la chaîne avec lui ; - le chemin de téléchargement avec le correctif s'exerce au premier cycle qui part de la release qui l'embarque (#463). #483 se ferme au merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
maximus added 2 commits 2026-10-21 01:34:40 +00:00
Refs #484

cargo update --precise for the two crates only: Cargo.lock moves four
lines (version and checksum of each), no package added or removed, same
crates.io source, Cargo.toml untouched. cargo-audit 0.22.2 (the CI
binary) goes from two vulnerabilities to none, with the same 18 allowed
warnings. rustls-webpki validates the updater's certificate chain on
Linux only; webpki-root-certs is compiled for neither shipped target.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(deps): vite 6.4.4 for the launch-editor advisories (#483)
All checks were successful
PR Check — Frontend / frontend (pull_request) Successful in 1m59s
PR Check — Rust / rust (pull_request) Successful in 4m23s
e66ae08b13
Resolves #483

vite moves from 6.4.3 to 6.4.4 in package-lock.json only; package.json
keeps ^6.4.3 (decision of Max). The node_modules/vite stanza changes its
version, resolved URL and integrity (equal to npm view), nothing else:
npm update kept 6.4.3, and npm install vite@^6.4.3 resolved 6.4.4 but
rewrote the range to ^6.4.4, so only its vite stanza was kept. npm ci
passes under npm 11.21.0 and 10.9.4 and installs 6.4.4; npm 11.21.0
leaves the lock byte-identical. npm audit goes from the three
launch-editor advisories to none; the build output equals main's except
the two changelog copies. The dated npm audit reading in CLAUDE.md and
docs/architecture.md moves to 2026-10-20.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

CI lue sur la tête e66ae08, les deux contrôles sont verts (journaux lus, codes ANSI retirés).

  • check-frontend (run 604) : npm ci affiche found 0 vulnerabilities, et vitest donne 156 fichiers et 2560 tests verts.
  • check-rust (run 605) :
    • « Suppression guard: 2 checks, exit 0 » et « windows-sys pinning: 9 checks, exit 0 » ;
    • cargo test : 269 réussis, 1 ignoré ;
    • l'étape cargo audit informative porte sur 663 crates et rend 18 allowed warnings found, sans aucune ligne vulnerabilit(y|ies) found et sans RUSTSEC-2026-0382 ni -0383.

#484 et #483 passent en status:review. Une revue indépendante (/pr-review 485) reste à faire.

CI lue sur la tête `e66ae08`, les deux contrôles sont **verts** (journaux lus, codes ANSI retirés). - `check-frontend` (run 604) : `npm ci` affiche `found 0 vulnerabilities`, et vitest donne 156 fichiers et 2560 tests verts. - `check-rust` (run 605) : - « Suppression guard: 2 checks, exit 0 » et « windows-sys pinning: 9 checks, exit 0 » ; - `cargo test` : 269 réussis, 1 ignoré ; - l'étape `cargo audit` informative porte sur 663 crates et rend `18 allowed warnings found`, sans aucune ligne `vulnerabilit(y|ies) found` et sans RUSTSEC-2026-0382 ni -0383. #484 et #483 passent en `status:review`. Une revue indépendante (`/pr-review 485`) reste à faire.
All checks were successful
PR Check — Frontend / frontend (pull_request) Successful in 1m59s
PR Check — Rust / rust (pull_request) Successful in 4m23s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin issue-484-security-bumps:issue-484-security-bumps
git checkout issue-484-security-bumps
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#485
No description provided.