[security] deps: RUSTSEC-2026-0367 à -0369 (zip) — l’audit quotidien est rouge depuis le 2026-10-17 #455

Closed
opened 2026-10-17 11:49:05 +00:00 by maximus · 2 comments
Owner

Constat

audit.yml échoue depuis le 2026-10-17 à 06:00 UTC (run 558, sur 065f580). Le dernier vert est le workflow_dispatch du 2026-10-16 à 23:15 UTC (run 556, sur 1763a9f). src-tauri/Cargo.lock n'a pas bougé entre les deux : la base d'avis est passée de 1329 à 1334 entrées, et trois des nouvelles visent zip 4.6.1.

Crate:     zip
Version:   4.6.1
Title:     ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target
ID:        RUSTSEC-2026-0369
Severity:  9.1 (critical)
Solution:  Upgrade to >=9.0.0
[... RUSTSEC-2026-0367 (7.3) et -0368 : même crate, même version, même solution]
error: 3 vulnerabilities found!
warning: 12 allowed warnings found

#447 n'est pas en cause : ses quatre avis sur rustls n'apparaissent plus.

Les avis

Les trois visent zip < 9.0.0, sont datés des 9 et 10 octobre 2026 et ne sont corrigés qu'en >= 9.0.0. Aucune version 4.x n'est corrigée : la 4.6.1 est la dernière.

ID Alias CVSS Objet
RUSTSEC-2026-0367 GHSA-vv5m-jxxh-4627 7.3 high (AV:L/AC:L/PR:L/UI:R) ZipArchive::extract() et l'extraction en flux conservent les bits SUID, SGID et sticky des external_attributes : extraite par un processus privilégié, une archive malveillante crée des fichiers setuid-root.
RUSTSEC-2026-0368 GHSA-4v9h-p7m9-rh26 non noté ZipArchive::extract() crée des liens symboliques dont la cible, choisie par l'archive, sort du dossier de destination (vérifié sous macOS et Linux).
RUSTSEC-2026-0369 GHSA-4684-h2q9-2vcp 9.1 critical (AV:N/AC:L/PR:N/UI:N) ZipStreamReader::extract() et ZipArchive::extract() appliquent les permissions Unix à travers des liens symboliques, sans confiner leur cible.

Atteignabilité

cargo tree -i zip --locked par triple livré :

  • x86_64-unknown-linux-gnu : absent ;
  • x86_64-pc-windows-msvc :
zip v4.6.1
└── tauri-plugin-updater v2.10.0
    └── simpl-result v0.17.1

zip vient de la feature zip de tauri-plugin-updater, activée par défaut (default = ["rustls-tls", "zip"], et zip = ["dep:zip", "dep:tar", "dep:flate2"]). L'app déclare tauri-plugin-updater = "2" (src-tauri/Cargo.toml:26), donc avec ses features par défaut.

Le seul usage est Updater::extract (src/updater.rs:882-911 de la 2.10.0) : sous #[cfg(feature = "zip")], il n'extrait que si les octets sont une archive zip (infer::archive::is_zip), sinon il passe à extract_exe. Et download() vérifie la signature du paquet (updater.rs:712) avant que install() ne l'extraie.

Aucun des trois n'est déclenchable aujourd'hui :

  • nos paquets Windows sont des .exe NSIS, jamais des zip (le latest.json les sert en .exe, ce que verify-release.sh contrôle) : la branche extract_zip n'est pas prise ;
  • une archive zip ne serait extraite qu'après vérification de sa signature par notre clé publique : une archive malveillante suppose la clé de signature ;
  • 0367 et 0369 portent sur des permissions Unix, et zip n'est compilé que pour Windows.

Correctif

La règle 1 de .cargo/audit.toml interdit de supprimer ces avis : le crate est dans le graphe d'une cible livrée, et un correctif est publié (zip 9). Ce correctif n'est pourtant pas atteignable par cargo update : tauri-plugin-updater 2.14.0, sa dernière version, exige toujours zip ^4, et un [patch] ne peut pas remplacer ^4 par une version 9.

Piste : déclarer l'updater sans ses features par défaut, en gardant TLS.

tauri-plugin-updater = { version = "2", default-features = false, features = ["rustls-tls"] }

zip et tar quittent alors le graphe, et flate2 reste, tiré aussi par png → ico → tauri-codegen. Le code de l'updater qui touche zip et tar est sous cfg : la variante d'erreur Extract est sous #[cfg(all(target_os = "windows", feature = "zip"))] (error.rs:62-65), et le bloc tar.gz des AppImage sous #[cfg(feature = "zip")] (updater.rs:1004). Sous Windows, extract ne garde que extract_exe, notre cas.

À vérifier à l'analyse :

  • que l'app compile et que l'updater fonctionne sans la feature zip, sous Linux et sous Windows ;
  • le diff réel de Cargo.lock (paquets retirés), et la garde windows-sys (ADR 0023) ;
  • tar est le canari de la garde des suppressions de check-rust.yml (« a crate known to be present », sur x86_64-unknown-linux-gnu). Il n'est présent que par l'updater : la garde rougira par construction. Choisir un autre canari ;
  • les textes qui parlent de tar : docs/qa-update-cycle.md (« Non prouvé : l'extraction d'archive, donc tar »), commentaires de check-rust.yml, ADR 0018 ;
  • le cycle réel de mise à jour Windows à la prochaine release, déjà dû pour #376 et #447.

Alternatives écartées d'avance, à confirmer : attendre une tauri-plugin-updater en zip ^9 (aucune trace à ce jour) ; supprimer les trois IDs (règle 1) ; un [patch] de zip (impossible).

Analyse (2026-10-17)

Décisions

  • Correctif (Max, 2026-10-17) : tauri-plugin-updater = { version = "2", default-features = false, features = ["rustls-tls"] }. Écartés : attendre une tauri-plugin-updater en zip ^9, et supprimer les trois IDs (règle 1).
  • Preuve Windows avant le merge (Max, 2026-10-17) : cargo xwin check --locked --target x86_64-pc-windows-msvc. Max a accepté la licence Microsoft du CRT et du SDK Windows ; cargo-xwin 0.23.1 est installé sur le poste de développement, avec clang, lld et llvm 18.
  • Canari de la garde des suppressions : tauri remplace tar, puisqu'une app Tauri ne peut pas le perdre.
  • Publication : avec le prochain tag, sans release corrective, comme pour #447 : aucun des trois avis n'est atteignable.
  • PR en Refs #455 : un critère se vérifie après le merge (le workflow_dispatch d'audit.yml).

Mesures

Faites le 2026-10-17 dans des worktrees jetables sur main 589aee0.

  • Diff du lock : 33 lignes retirées, 3 paquets (zip 4.6.1, arbitrary 1.4.2, derive_arbitrary 1.4.2), de 666 à 663 paquets, aucun ajouté. tar reste dans le lock, où il n'est plus tiré que pour macOS, mais quitte les graphes Linux et Windows (cargo tree -i tar vide sur les deux cibles). flate2 reste, tiré par png → ico → tauri-codegen.
  • Garde windows-sys : windows-sys pinning: 9 checks, exit 0, aucune version ne bouge.
  • Garde des suppressions : FAIL: canary 'tar' was not found, comme attendu.
  • Linux : cargo check --locked --all-targets vert ; cargo test --locked --all-targets 267 passed, 0 failed.
  • Audit : cargo-audit 0.22.2, exit 0, 1334 advisories chargées, 663 crates, les 12 mêmes warnings autorisés.
  • Windows (cargo-xwin 0.23.1) : témoin sur main tel quel, exit 0, avec Checking zip v4.6.1 ; avec le correctif, exit 0, et zip n'est plus compilé.
  • Aucun paquet de mise à jour n'est une archive : createUpdaterArtifacts: true dans tauri.conf.json, build-latest-json.sh publie le -setup.exe, et les assets de la v0.17.1 sont .exe, .deb, .rpm, leurs .sig et latest.json.

Travail à faire

  • src-tauri/Cargo.toml:26 : la déclaration ci-dessus ; régénérer le lock, dont le diff doit retirer ces 3 paquets et rien d'autre.
  • .forgejo/workflows/check-rust.yml : canari tar → tauri (étape « Verify suppressed advisories are still unreachable », l. 180-188, et son commentaire). Prouver que la garde rougit avec un canari absent du graphe.
  • ADR 0018 : le canari de la l. 55, et un amendement daté.
  • docs/qa-update-cycle.md : la liste des dépendances de la l. 3 (tar n'en fait plus partie) et le paragraphe « Non prouvé » (l'extraction d'archive n'est plus compilée, ni zip sous Windows ni tar.gz d'AppImage sous Linux).
  • Entrée ### Security / ### Sécurité dans les deux CHANGELOG (texte proposé ci-dessous).
  • Preuves :
    • cargo-audit 0.22.2 rouge sur l'ancien lock et vert sur le nouveau, depuis la racine du dépôt ;
    • les deux gardes ;
    • cargo check et cargo test sous Linux ;
    • cargo xwin check --locked --target x86_64-pc-windows-msvc.
  • Après le merge : workflow_dispatch d'audit.yml sur main, lecture du log, fermeture à la main, puis retrait du blocker dans STATE.md.
  • Release d'après la prochaine : cycle réel de mise à jour Windows depuis la première version qui embarque #455. C'est la première exécution de l'installation par l'updater sans zip. Le cycle de la prochaine release part de la v0.17.1 et ne l'exécute pas (revue 24757 de la PR #459, suivi #463).

Fichiers concernés

src-tauri/Cargo.toml, src-tauri/Cargo.lock, .forgejo/workflows/check-rust.yml, docs/adr/0018-suppression-advisories-non-atteignables.md, docs/qa-update-cycle.md, CHANGELOG.md, CHANGELOG.fr.md.

Surface de test

Pas de test applicatif : ce sont les étapes de check-rust (les deux gardes, cargo check, cargo test, cargo audit) et audit.yml qui vérifient. Seule nouveauté à éprouver : la garde avec son nouveau canari, par une mutation qui le rend absent.

Critères d'acceptation

  • zip absent de src-tauri/Cargo.lock ; le diff du lock ne retire que zip, arbitrary et derive_arbitrary, et n'ajoute rien.
  • cargo audit 0.22.2 : 0 vulnérabilité, les 12 mêmes warnings autorisés.
  • Garde des suppressions verte avec le canari tauri et rouge sans lui ; garde windows-sys 9/9.
  • cargo check et cargo test verts sous Linux ; cargo xwin check vert pour Windows.
  • ADR 0018, qa-update-cycle.md et les deux CHANGELOG à jour.
  • Après le merge : run workflow_dispatch d'audit.yml sur main vert, vérifié dans le log.

Complexité

Simple.

Entrées CHANGELOG proposées

CHANGELOG.md, sous ### Security :

  • Removed the archive extraction of the automatic updater (its zip dependency on Windows and tar on Linux), clearing RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369. The updater only extracted an update that arrived as a zip archive, after checking its signature, and this application's updates are never archives: the Windows installer (.exe) and the Linux packages (.deb, .rpm) are downloaded and run as they are. None of the three advisories, two of which concern Unix permissions while the dependency was only compiled for Windows, was reachable; the dependency is removed rather than reasoned around, since no fixed version fits the updater. Updates of the Windows installer and of the Linux packages work as before (#455).

CHANGELOG.fr.md, sous ### Sécurité :

  • Retrait de l'extraction d'archive de la mise à jour automatique (sa dépendance zip sous Windows et tar sous Linux), corrigeant RUSTSEC-2026-0367, RUSTSEC-2026-0368 et RUSTSEC-2026-0369. La mise à jour n'extrayait un paquet que s'il arrivait sous forme d'archive zip, après vérification de sa signature, et les mises à jour de cette application ne sont jamais des archives : l'installeur Windows (.exe) et les paquets Linux (.deb, .rpm) sont téléchargés et lancés tels quels. Aucun des trois avis, dont deux portent sur des permissions Unix alors que la dépendance n'était compilée que pour Windows, n'était atteignable ; la dépendance est retirée plutôt que contournée par un raisonnement, faute de version corrigée compatible avec la mise à jour. Les mises à jour de l'installeur Windows et des paquets Linux fonctionnent comme avant (#455).

Hors périmètre

Le Défenseur ne voit pas les avis RustSec (maximus/agent-defenseurs#186) : seul audit.yml a signalé ce rouge.

## Constat `audit.yml` échoue depuis le **2026-10-17 à 06:00 UTC** (run 558, sur `065f580`). Le dernier vert est le `workflow_dispatch` du 2026-10-16 à 23:15 UTC (run 556, sur `1763a9f`). `src-tauri/Cargo.lock` n'a pas bougé entre les deux : la base d'avis est passée de 1329 à 1334 entrées, et trois des nouvelles visent `zip` 4.6.1. ``` Crate: zip Version: 4.6.1 Title: ZipStreamReader::extract() and ZipArchive::extract() apply Unix permissions through symlinks without confining the target ID: RUSTSEC-2026-0369 Severity: 9.1 (critical) Solution: Upgrade to >=9.0.0 [... RUSTSEC-2026-0367 (7.3) et -0368 : même crate, même version, même solution] error: 3 vulnerabilities found! warning: 12 allowed warnings found ``` #447 n'est pas en cause : ses quatre avis sur `rustls` n'apparaissent plus. ## Les avis Les trois visent `zip` < 9.0.0, sont datés des 9 et 10 octobre 2026 et ne sont corrigés qu'en `>= 9.0.0`. Aucune version 4.x n'est corrigée : la 4.6.1 est la dernière. | ID | Alias | CVSS | Objet | |---|---|---|---| | [RUSTSEC-2026-0367](https://rustsec.org/advisories/RUSTSEC-2026-0367) | GHSA-vv5m-jxxh-4627 | 7.3 high (`AV:L/AC:L/PR:L/UI:R`) | `ZipArchive::extract()` et l'extraction en flux conservent les bits SUID, SGID et sticky des `external_attributes` : extraite par un processus privilégié, une archive malveillante crée des fichiers setuid-root. | | [RUSTSEC-2026-0368](https://rustsec.org/advisories/RUSTSEC-2026-0368) | GHSA-4v9h-p7m9-rh26 | non noté | `ZipArchive::extract()` crée des liens symboliques dont la cible, choisie par l'archive, sort du dossier de destination (vérifié sous macOS et Linux). | | [RUSTSEC-2026-0369](https://rustsec.org/advisories/RUSTSEC-2026-0369) | GHSA-4684-h2q9-2vcp | 9.1 critical (`AV:N/AC:L/PR:N/UI:N`) | `ZipStreamReader::extract()` et `ZipArchive::extract()` appliquent les permissions Unix à travers des liens symboliques, sans confiner leur cible. | ## Atteignabilité `cargo tree -i zip --locked` par triple livré : - `x86_64-unknown-linux-gnu` : absent ; - `x86_64-pc-windows-msvc` : ``` zip v4.6.1 └── tauri-plugin-updater v2.10.0 └── simpl-result v0.17.1 ``` `zip` vient de la feature `zip` de `tauri-plugin-updater`, activée par défaut (`default = ["rustls-tls", "zip"]`, et `zip = ["dep:zip", "dep:tar", "dep:flate2"]`). L'app déclare `tauri-plugin-updater = "2"` (`src-tauri/Cargo.toml:26`), donc avec ses features par défaut. Le seul usage est `Updater::extract` (`src/updater.rs:882-911` de la 2.10.0) : sous `#[cfg(feature = "zip")]`, il n'extrait que si les octets sont une archive zip (`infer::archive::is_zip`), sinon il passe à `extract_exe`. Et `download()` vérifie la signature du paquet (`updater.rs:712`) avant que `install()` ne l'extraie. Aucun des trois n'est déclenchable aujourd'hui : - nos paquets Windows sont des `.exe` NSIS, jamais des zip (le `latest.json` les sert en `.exe`, ce que `verify-release.sh` contrôle) : la branche `extract_zip` n'est pas prise ; - une archive zip ne serait extraite qu'après vérification de sa signature par notre clé publique : une archive malveillante suppose la clé de signature ; - 0367 et 0369 portent sur des permissions Unix, et `zip` n'est compilé que pour Windows. ## Correctif La règle 1 de `.cargo/audit.toml` interdit de supprimer ces avis : le crate est dans le graphe d'une cible livrée, et un correctif est publié (`zip` 9). Ce correctif n'est pourtant pas atteignable par `cargo update` : `tauri-plugin-updater` 2.14.0, sa dernière version, exige toujours `zip ^4`, et un `[patch]` ne peut pas remplacer `^4` par une version 9. Piste : déclarer l'updater sans ses features par défaut, en gardant TLS. ```toml tauri-plugin-updater = { version = "2", default-features = false, features = ["rustls-tls"] } ``` `zip` et `tar` quittent alors le graphe, et `flate2` reste, tiré aussi par `png` → `ico` → `tauri-codegen`. Le code de l'updater qui touche `zip` et `tar` est sous `cfg` : la variante d'erreur `Extract` est sous `#[cfg(all(target_os = "windows", feature = "zip"))]` (`error.rs:62-65`), et le bloc `tar.gz` des AppImage sous `#[cfg(feature = "zip")]` (`updater.rs:1004`). Sous Windows, `extract` ne garde que `extract_exe`, notre cas. À vérifier à l'analyse : - que l'app compile et que l'updater fonctionne sans la feature `zip`, sous Linux et sous Windows ; - le diff réel de `Cargo.lock` (paquets retirés), et la garde `windows-sys` (ADR 0023) ; - **`tar` est le canari de la garde des suppressions** de `check-rust.yml` (« a crate known to be present », sur `x86_64-unknown-linux-gnu`). Il n'est présent que par l'updater : la garde rougira par construction. Choisir un autre canari ; - les textes qui parlent de `tar` : `docs/qa-update-cycle.md` (« Non prouvé : l'extraction d'archive, donc `tar` »), commentaires de `check-rust.yml`, ADR 0018 ; - le cycle réel de mise à jour Windows à la prochaine release, déjà dû pour #376 et #447. Alternatives écartées d'avance, à confirmer : attendre une `tauri-plugin-updater` en `zip ^9` (aucune trace à ce jour) ; supprimer les trois IDs (règle 1) ; un `[patch]` de `zip` (impossible). ## Analyse (2026-10-17) ### Décisions - **Correctif** (Max, 2026-10-17) : `tauri-plugin-updater = { version = "2", default-features = false, features = ["rustls-tls"] }`. Écartés : attendre une `tauri-plugin-updater` en `zip ^9`, et supprimer les trois IDs (règle 1). - **Preuve Windows avant le merge** (Max, 2026-10-17) : `cargo xwin check --locked --target x86_64-pc-windows-msvc`. Max a accepté la licence Microsoft du CRT et du SDK Windows ; `cargo-xwin` 0.23.1 est installé sur le poste de développement, avec `clang`, `lld` et `llvm` 18. - **Canari de la garde des suppressions** : `tauri` remplace `tar`, puisqu'une app Tauri ne peut pas le perdre. - **Publication** : avec le prochain tag, sans release corrective, comme pour #447 : aucun des trois avis n'est atteignable. - **PR en `Refs #455`** : un critère se vérifie après le merge (le `workflow_dispatch` d'`audit.yml`). ### Mesures Faites le 2026-10-17 dans des worktrees jetables sur `main` `589aee0`. - **Diff du lock** : 33 lignes retirées, 3 paquets (`zip` 4.6.1, `arbitrary` 1.4.2, `derive_arbitrary` 1.4.2), de 666 à 663 paquets, aucun ajouté. `tar` reste dans le lock, où il n'est plus tiré que pour macOS, mais quitte les graphes Linux et Windows (`cargo tree -i tar` vide sur les deux cibles). `flate2` reste, tiré par `png` → `ico` → `tauri-codegen`. - **Garde `windows-sys`** : `windows-sys pinning: 9 checks, exit 0`, aucune version ne bouge. - **Garde des suppressions** : `FAIL: canary 'tar' was not found`, comme attendu. - **Linux** : `cargo check --locked --all-targets` vert ; `cargo test --locked --all-targets` 267 passed, 0 failed. - **Audit** : `cargo-audit` 0.22.2, exit 0, 1334 advisories chargées, 663 crates, les 12 mêmes warnings autorisés. - **Windows** (`cargo-xwin` 0.23.1) : témoin sur `main` tel quel, exit 0, avec `Checking zip v4.6.1` ; avec le correctif, exit 0, et `zip` n'est plus compilé. - Aucun paquet de mise à jour n'est une archive : `createUpdaterArtifacts: true` dans `tauri.conf.json`, `build-latest-json.sh` publie le `-setup.exe`, et les assets de la v0.17.1 sont `.exe`, `.deb`, `.rpm`, leurs `.sig` et `latest.json`. ### Travail à faire - [ ] `src-tauri/Cargo.toml:26` : la déclaration ci-dessus ; régénérer le lock, dont le diff doit retirer ces 3 paquets et rien d'autre. - [ ] `.forgejo/workflows/check-rust.yml` : canari `tar` → `tauri` (étape « Verify suppressed advisories are still unreachable », l. 180-188, et son commentaire). Prouver que la garde rougit avec un canari absent du graphe. - [ ] ADR 0018 : le canari de la l. 55, et un amendement daté. - [ ] `docs/qa-update-cycle.md` : la liste des dépendances de la l. 3 (`tar` n'en fait plus partie) et le paragraphe « Non prouvé » (l'extraction d'archive n'est plus compilée, ni zip sous Windows ni `tar.gz` d'AppImage sous Linux). - [ ] Entrée `### Security` / `### Sécurité` dans les deux CHANGELOG (texte proposé ci-dessous). - [ ] Preuves : - `cargo-audit` 0.22.2 rouge sur l'ancien lock et vert sur le nouveau, depuis la racine du dépôt ; - les deux gardes ; - `cargo check` et `cargo test` sous Linux ; - `cargo xwin check --locked --target x86_64-pc-windows-msvc`. - [ ] Après le merge : `workflow_dispatch` d'`audit.yml` sur `main`, lecture du log, fermeture à la main, puis retrait du blocker dans `STATE.md`. - [ ] Release d'après la prochaine : cycle réel de mise à jour Windows depuis la première version qui embarque #455. C'est la première exécution de l'installation par l'updater sans `zip`. Le cycle de la prochaine release part de la v0.17.1 et ne l'exécute pas (revue 24757 de la PR #459, suivi #463). ### Fichiers concernés `src-tauri/Cargo.toml`, `src-tauri/Cargo.lock`, `.forgejo/workflows/check-rust.yml`, `docs/adr/0018-suppression-advisories-non-atteignables.md`, `docs/qa-update-cycle.md`, `CHANGELOG.md`, `CHANGELOG.fr.md`. ### Surface de test Pas de test applicatif : ce sont les étapes de `check-rust` (les deux gardes, `cargo check`, `cargo test`, `cargo audit`) et `audit.yml` qui vérifient. Seule nouveauté à éprouver : la garde avec son nouveau canari, par une mutation qui le rend absent. ### Critères d'acceptation - [ ] `zip` absent de `src-tauri/Cargo.lock` ; le diff du lock ne retire que `zip`, `arbitrary` et `derive_arbitrary`, et n'ajoute rien. - [ ] `cargo audit` 0.22.2 : 0 vulnérabilité, les 12 mêmes warnings autorisés. - [ ] Garde des suppressions verte avec le canari `tauri` et rouge sans lui ; garde `windows-sys` 9/9. - [ ] `cargo check` et `cargo test` verts sous Linux ; `cargo xwin check` vert pour Windows. - [ ] ADR 0018, `qa-update-cycle.md` et les deux CHANGELOG à jour. - [ ] Après le merge : run `workflow_dispatch` d'`audit.yml` sur `main` vert, vérifié dans le log. ### Complexité Simple. ### Entrées CHANGELOG proposées `CHANGELOG.md`, sous `### Security` : > - Removed the archive extraction of the automatic updater (its `zip` dependency on Windows and `tar` on Linux), clearing RUSTSEC-2026-0367, RUSTSEC-2026-0368 and RUSTSEC-2026-0369. The updater only extracted an update that arrived as a zip archive, after checking its signature, and this application's updates are never archives: the Windows installer (`.exe`) and the Linux packages (`.deb`, `.rpm`) are downloaded and run as they are. None of the three advisories, two of which concern Unix permissions while the dependency was only compiled for Windows, was reachable; the dependency is removed rather than reasoned around, since no fixed version fits the updater. Updates of the Windows installer and of the Linux packages work as before (#455). `CHANGELOG.fr.md`, sous `### Sécurité` : > - Retrait de l'extraction d'archive de la mise à jour automatique (sa dépendance `zip` sous Windows et `tar` sous Linux), corrigeant RUSTSEC-2026-0367, RUSTSEC-2026-0368 et RUSTSEC-2026-0369. La mise à jour n'extrayait un paquet que s'il arrivait sous forme d'archive zip, après vérification de sa signature, et les mises à jour de cette application ne sont jamais des archives : l'installeur Windows (`.exe`) et les paquets Linux (`.deb`, `.rpm`) sont téléchargés et lancés tels quels. Aucun des trois avis, dont deux portent sur des permissions Unix alors que la dépendance n'était compilée que pour Windows, n'était atteignable ; la dépendance est retirée plutôt que contournée par un raisonnement, faute de version corrigée compatible avec la mise à jour. Les mises à jour de l'installeur Windows et des paquets Linux fonctionnent comme avant (#455). ## Hors périmètre Le Défenseur ne voit pas les avis RustSec (maximus/agent-defenseurs#186) : seul `audit.yml` a signalé ce rouge.
maximus added the
status:triage
type:security
source:human
labels 2026-10-17 11:49:05 +00:00
maximus added
status:ready
and removed
status:triage
labels 2026-10-17 12:11:53 +00:00
maximus added
status:in-progress
and removed
status:ready
labels 2026-10-17 12:41:03 +00:00
maximus added
status:review
and removed
status:in-progress
labels 2026-10-17 12:41:39 +00:00
Author
Owner

PR #459 ouverte. Un écart avec l'analyse, relevé par le contrôle du plan : le nouveau canari de la garde des suppressions est webkit2gtk, pas tauri. tar était une dépendance conditionnelle de l'updater (cfg(target_os = "linux")), si bien que le trouver prouvait aussi que cargo tree --target x86_64-unknown-linux-gnu résout les arêtes conditionnelles, propriété sur laquelle repose la règle 1 de l'ADR 0018. tauri est inconditionnel et l'aurait perdue ; webkit2gtk, la webview Linux de Tauri, est présent sous Linux et absent sous Windows. Le critère « garde verte avec son canari et rouge sans lui » est vérifié avec webkit2gtk (détail dans la PR).

PR #459 ouverte. Un écart avec l'analyse, relevé par le contrôle du plan : le nouveau canari de la garde des suppressions est **`webkit2gtk`**, pas `tauri`. `tar` était une dépendance conditionnelle de l'updater (`cfg(target_os = "linux")`), si bien que le trouver prouvait aussi que `cargo tree --target x86_64-unknown-linux-gnu` résout les arêtes conditionnelles, propriété sur laquelle repose la règle 1 de l'ADR 0018. `tauri` est inconditionnel et l'aurait perdue ; `webkit2gtk`, la webview Linux de Tauri, est présent sous Linux et absent sous Windows. Le critère « garde verte avec son canari et rouge sans lui » est vérifié avec `webkit2gtk` (détail dans la PR).
maximus added
status:needs-fix
and removed
status:review
labels 2026-10-18 13:49:57 +00:00
maximus added
status:review
and removed
status:needs-fix
labels 2026-10-18 16:38:12 +00:00
Author
Owner

Fermée à la main après la checklist d'après merge de la PR #459.

  • Merge : PR #459, rebasée sur main (contenu identique à l'octet à la tête relue 85b7ef9), mergée en avance rapide le 2026-10-18 ; main = c5efc38. check-rust run 563 sur cette tête : canari webkit2gtk trouvé, garde des suppressions 2 checks, exit 0, garde windows-sys 9 checks, exit 0, 267 tests, audit informatif à 663 crates, lock non réécrit.
  • Audit sur main : workflow_dispatch d'audit.yml (204), run 564 vert sur c5efc38. Journal lu, codes ANSI retirés : cargo-audit-audit 0.22.2, Loaded 1338 security advisories, (663 crate dependencies), 18 allowed warnings found, aucune ligne error: N vulnerabilities found, aucun de RUSTSEC-2026-0367, -0368 et -0369. Les 18 avertissements sont les 12 d'avant et six unmaintained parus le 2026-10-18 (RUSTSEC-2026-0370 à -0372), non bloquants.
  • Revue : /pr-review de niveau haut (commentaire 24757), REQUEST_CHANGES sur une fausse preuve du corps de PR, corrigée dans le texte (commentaire 24806) ; merge sans second tour, sur décision de Max.

Reste dû, hors de cette issue :

  • le cycle réel de mise à jour Windows de la prochaine release (#376, #447) ;
  • à la release d'après, le cycle depuis la première version qui embarque #455, première exécution de l'installation par l'updater sans zip (#463).

Rouvrir si l'un des trois identifiants réapparaît dans audit.yml, ou si zip revient dans Cargo.lock (la feature zip de l'updater remise, ou createUpdaterArtifacts: "v1Compatible").

Fermée à la main après la checklist d'après merge de la PR #459. - **Merge** : PR #459, rebasée sur `main` (contenu identique à l'octet à la tête relue `85b7ef9`), mergée en avance rapide le 2026-10-18 ; `main` = `c5efc38`. `check-rust` run 563 sur cette tête : canari `webkit2gtk` trouvé, garde des suppressions `2 checks, exit 0`, garde `windows-sys` `9 checks, exit 0`, 267 tests, audit informatif à 663 crates, lock non réécrit. - **Audit sur `main`** : `workflow_dispatch` d'`audit.yml` (204), **run 564 vert** sur `c5efc38`. Journal lu, codes ANSI retirés : `cargo-audit-audit 0.22.2`, `Loaded 1338 security advisories`, `(663 crate dependencies)`, `18 allowed warnings found`, aucune ligne `error: N vulnerabilities found`, aucun de RUSTSEC-2026-0367, -0368 et -0369. Les 18 avertissements sont les 12 d'avant et six `unmaintained` parus le 2026-10-18 (RUSTSEC-2026-0370 à -0372), non bloquants. - **Revue** : `/pr-review` de niveau haut (commentaire 24757), REQUEST_CHANGES sur une fausse preuve du corps de PR, corrigée dans le texte (commentaire 24806) ; merge sans second tour, sur décision de Max. Reste dû, hors de cette issue : - le cycle réel de mise à jour Windows de la prochaine release (#376, #447) ; - à la release d'après, le cycle depuis la première version qui embarque #455, première exécution de l'installation par l'updater sans `zip` (#463). Rouvrir si l'un des trois identifiants réapparaît dans `audit.yml`, ou si `zip` revient dans `Cargo.lock` (la feature `zip` de l'updater remise, ou `createUpdaterArtifacts: "v1Compatible"`).
maximus removed the
status:review
label 2026-10-18 16:44:51 +00:00
Sign in to join this conversation.
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#455
No description provided.