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
5 changed files with 7 additions and 5 deletions
|
|
@ -24,6 +24,7 @@
|
|||
### Sécurité
|
||||
|
||||
- Mise à jour des dépendances Rust `rustls-webpki` (0.103.15 → 0.103.16) et `webpki-root-certs` (1.0.6 → 1.0.10), corrigeant RUSTSEC-2026-0382 et RUSTSEC-2026-0383. `rustls-webpki` valide sous Linux la chaîne de certificats de la vérification et du téléchargement des mises à jour automatiques, atteinte via `tauri-plugin-updater` ; sous Windows, c'est le système qui valide la chaîne. La 0.103.16 refuse désormais une chaîne qui passe par l'un de huit intermédiaires emSign déclarés non fiables (RUSTSEC-2026-0382). Les paquets de mise à jour restent vérifiés par leur signature : un certificat seul n'a jamais suffi à installer une mise à jour. `webpki-root-certs` n'est compilé ni dans l'application Linux ni dans l'application Windows ; il est mis à jour pour l'audit seulement (RUSTSEC-2026-0383). Les appels de licence, d'authentification, de cours et de rétroaction de l'application passent par un autre moteur TLS. Rien ne change dans le code de l'application elle-même : seul le fichier de verrouillage bouge (#484).
|
||||
- Mise à jour de l'outil de build `vite` (6.4.3 → 6.4.4) par le seul fichier de verrouillage, dans la plage que `package.json` déclarait déjà, corrigeant GHSA-587h-7wmj-h5pm, GHSA-698v-4r3x-3vcv et GHSA-r825-w8mm-5pxw dans `launch-editor`, que vite embarque. Ces avis portent sur la fonction « ouvrir dans l'éditeur » du serveur de développement et n'ont jamais été atteignables dans l'application livrée, dont le résultat du build est inchangé (#483).
|
||||
|
||||
## [0.17.2] - 2026-10-18
|
||||
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
### Security
|
||||
|
||||
- Updated the Rust dependencies `rustls-webpki` (0.103.15 → 0.103.16) and `webpki-root-certs` (1.0.6 → 1.0.10), clearing RUSTSEC-2026-0382 and RUSTSEC-2026-0383. `rustls-webpki` validates the certificate chain of the automatic update check and download on Linux, reached through `tauri-plugin-updater`; on Windows, the system validates the chain. 0.103.16 now refuses a chain through one of eight distrusted emSign intermediates (RUSTSEC-2026-0382). Update packages are still checked against their signature, so a certificate alone could never install an update. `webpki-root-certs` is compiled into neither the Linux nor the Windows application; it is updated for the audit only (RUSTSEC-2026-0383). The application's own licence, authentication, market-price and feedback calls use a different TLS backend. Nothing in the application's own code changes — only the lockfile moves (#484).
|
||||
- Updated the build tool `vite` (6.4.3 → 6.4.4) through the lockfile alone, within the range `package.json` already declares, clearing GHSA-587h-7wmj-h5pm, GHSA-698v-4r3x-3vcv and GHSA-r825-w8mm-5pxw in `launch-editor`, which vite bundles. They concern the development server's “open in editor” feature and were never reachable in the shipped app, whose build output is unchanged (#483).
|
||||
|
||||
## [0.17.2] - 2026-10-18
|
||||
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ Pour maintenir l'éligibilité aux crédits d'impôt R&D (RS&DE fédéral + CRIC
|
|||
Workflows Forgejo Actions dans `.forgejo/workflows/`. Le runner est à **capacité 1** — les jobs se suivent, ils ne tournent pas en parallèle.
|
||||
|
||||
- **`check-rust.yml`** — déclenché sur les PR touchant `src-tauri/**` ou `.cargo/**`, plus chaque lundi à 06:30 UTC sur `main` et par `workflow_dispatch`. Lance `cargo check --locked`, une vérification bloquante que les advisories acceptées restent non atteignables, une autre que les sept arêtes `windows-sys` à borne large du lock restent sur `0.61.2` ([ADR 0023](docs/adr/0023-windows-sys-pinning.md)), `cargo test --locked` et un `cargo audit` informatif, avec le cache `Swatinem/rust-cache`. Doit être vert avant tout merge. Avec `--locked` ([#449](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/449)), un `Cargo.lock` qui ne correspond plus à `Cargo.toml` fait échouer le job au lieu d'être réécrit dans le checkout : les gardes et l'audit lisent le lock commité. Un `cargo update` voulu dans une PR reste possible, il commite le lock qu'il écrit. Un `cargo update` qui re-résout ces arêtes (`-p hyper` et `-p h2` l'ont fait) fait rougir le garde `windows-sys` : remettre les arêtes à la main selon l'ADR, ne jamais modifier la liste gardée pour le faire passer.
|
||||
- **`check-frontend.yml`** — déclenché sur les PR, sauf si tous les fichiers modifiés sont du Rust, de la doc, du markdown, `check-rust.yml` ou `audit.yml` ; `.claude/**` et `release.yml` le déclenchent, car `scripts/build-latest-json.test.mjs` lit `verify-release.sh` et exécute l'étape « Publish » de `release.yml` (#419). Lance `npm run build` (tsc + vite) et `npm test` (vitest). Doit être vert avant tout merge. **Aucune étape `npm audit`** : les advisories npm ne sont pas un gate de CI. `npm audit` à 0 au 2026-10-10 ([#358](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/358)), un constat daté : aucun job ne le fait échouer, mais `npm ci` en imprime le compte à chaque run de `check-frontend`, et le Défenseur relève les advisories de son côté (#358 en vient).
|
||||
- **`check-frontend.yml`** — déclenché sur les PR, sauf si tous les fichiers modifiés sont du Rust, de la doc, du markdown, `check-rust.yml` ou `audit.yml` ; `.claude/**` et `release.yml` le déclenchent, car `scripts/build-latest-json.test.mjs` lit `verify-release.sh` et exécute l'étape « Publish » de `release.yml` (#419). Lance `npm run build` (tsc + vite) et `npm test` (vitest). Doit être vert avant tout merge. **Aucune étape `npm audit`** : les advisories npm ne sont pas un gate de CI. `npm audit` à 0 au 2026-10-20 ([#483](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/483)), un constat daté : aucun job ne le fait échouer, mais `npm ci` en imprime le compte à chaque run de `check-frontend`, et le Défenseur relève les advisories de son côté (#358 en vient).
|
||||
- **`audit.yml`** — audit RustSec quotidien (06:00 UTC) + `workflow_dispatch`, pour couvrir les avis de sécurité entre deux PR Rust. Échec bloquant. **Un run vert signifie « zéro advisory hors de la liste acceptée »**, pas « zéro advisory » : cette liste est dans `.cargo/audit.toml` (preuve de non-atteignabilité et condition de retrait par entrée), encadrée par l'[ADR 0018](docs/adr/0018-suppression-advisories-non-atteignables.md). Ne jamais y ajouter une advisory atteignable ni élargir une entrée à un crate entier.
|
||||
- **`release.yml`** — déclenché par les tags `v*`. Build Windows (NSIS `.exe`) + Linux (`.deb`, `.rpm`), signe les binaires et publie le JSON d'updater pour les mises à jour automatiques. Les deux `npx tauri build` passent `-- --locked` à cargo (par cargo-xwin pour Windows) : les binaires livrés sont bâtis sur le lock commité, jamais réécrit, et l'étape 2 de `/release` vérifie le lock édité à la main par `cargo metadata --locked` (#449). cargo-xwin, qui tourne avec la clé de signature dans son environnement, est installé en version épinglée (`--version 0.23.1`) ; la toolchain Rust (`rustup`, `stable`) ne l'est pas.
|
||||
|
||||
|
|
|
|||
|
|
@ -718,7 +718,7 @@ Aucun `branches:` : une PR stackée sur une autre branche de feature — ce que
|
|||
|
||||
Déclenché sur les PR, sauf si tous les fichiers modifiés sont du Rust, de la doc, du markdown, `check-rust.yml` ou `audit.yml` (`paths-ignore`). `.claude/**` et `release.yml` le déclenchent ([#419](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/419)) : `scripts/build-latest-json.test.mjs` lit la liste de clés de `verify-release.sh` et exécute le texte de l'étape « Publish latest.json to package registry ». Lance `npm ci`, `npm run build` (tsc + vite) et `npm test` (vitest). Installe aussi `jq`, dont a besoin `scripts/build-latest-json.test.mjs` : ce test lance le script de génération de `latest.json` de `release.yml` ([#320](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/320)). Pas de cache npm : ce workflow ne tourne que sur des PR, donc un cache ne servirait qu'aux pushes suivants d'une même PR, et `npm ci` y prend 9 s.
|
||||
|
||||
**Aucune étape `npm audit`** — contrairement au Rust, les advisories npm ne sont donc pas un gate de CI. `npm audit` est à 0 au 2026-10-10 ([#358](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/358)), après un rafraîchissement du lock dans les bornes de `package.json`. Ce 0 est un constat daté, pas un état garanti : aucun job ne le fait échouer, mais l'étape `npm ci` de `check-frontend` audite à chaque run et en imprime le compte (`found 0 vulnerabilities`, ou le nombre trouvé), et le Défenseur relève les advisories de son côté (#358 en vient). `npm audit` n'a pas de mécanisme d'exclusion natif, il n'y a donc pas d'équivalent du `.cargo/audit.toml` côté npm.
|
||||
**Aucune étape `npm audit`** — contrairement au Rust, les advisories npm ne sont donc pas un gate de CI. `npm audit` est à 0 au 2026-10-20 ([#483](https://git.lacompagniemaximus.com/maximus/simpl-resultat/issues/483)), après un rafraîchissement du lock dans les bornes de `package.json`. Ce 0 est un constat daté, pas un état garanti : aucun job ne le fait échouer, mais l'étape `npm ci` de `check-frontend` audite à chaque run et en imprime le compte (`found 0 vulnerabilities`, ou le nombre trouvé), et le Défenseur relève les advisories de son côté (#358 en vient). `npm audit` n'a pas de mécanisme d'exclusion natif, il n'y a donc pas d'équivalent du `.cargo/audit.toml` côté npm.
|
||||
|
||||
### `audit.yml` — Audit RustSec quotidien
|
||||
|
||||
|
|
|
|||
6
package-lock.json
generated
6
package-lock.json
generated
|
|
@ -3411,9 +3411,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "6.4.3",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz",
|
||||
"integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==",
|
||||
"version": "6.4.4",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.4.tgz",
|
||||
"integrity": "sha512-xGjU/SyjeNyb0E4KxXBvYz/1C+3JXuujvf2hXNOtnlcE+58o5ajd9N2/n2VhkiJvpCP2qQasnUpx5PXNeI+p1Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
|
|
|||
Loading…
Reference in a new issue