[security] deps: 9 advisories RUSTSEC dans Cargo.lock (rustls-webpki, tar, quick-xml, rsa) #310

Closed
opened 2026-07-25 00:53:22 +00:00 by maximus · 1 comment
Owner

Surfacé par le run CI 328 (PR #309) une fois que #232 a retiré le || true qui masquait la sortie de cargo audit. Ces advisories existaient déjà — elles n'ont pas été introduites par #232, elles étaient seulement invisibles.

error: 9 vulnerabilities found! + warning: 23 allowed warnings found sur 666 dépendances de src-tauri/Cargo.lock.

Les 9 advisories, avec leur parent

Parents établis par cargo tree -i et par lecture de Cargo.lock (pas de mémoire) :

Crate Version Vient de Advisories Correctif
rustls-webpki 0.103.9 rustls + rustls-platform-verifier <- reqwest, tauri-plugin-updater RUSTSEC-2026-0049 / 0098 / 0099 / 0104 >= 0.103.13 (patch)
tar 0.4.44 tauri-plugin-updater RUSTSEC-2026-0067 / 0068 (5.1 medium) >= 0.4.45 (patch)
quick-xml 0.38.4 plist <- tauri, tauri-codegen, tauri-plugin (build-deps) RUSTSEC-2026-0194 / 0195 (7.5 high) >= 0.41.0 (majeur)
rsa 0.9.10 sqlx-mysql RUSTSEC-2023-0071 (Marvin, 5.9 medium) aucun correctif publié

Triage de depart

  • rustls-webpki et tar — atteignables, correctif trivial. Les deux sont sur le chemin de tauri-plugin-updater (téléchargement + décompression d'une mise à jour) et de reqwest (fetch de cours via maximus-api). Correctifs de niveau patch : un cargo update -p rustls-webpki -p tar devrait suffire sans toucher Cargo.toml. 6 des 9 advisories tombent ici.
  • quick-xml — probablement bloqué en amont. Le bump est majeur (0.38 -> 0.41) et la dépendance est tirée par plist, lui-même tiré par tauri. Rien à faire tant que Tauri n'a pas bumpé, sauf override. À vérifier : plist sert au bundling macOS, donc à confirmer s'il est seulement compilé en build-dependency sur les cibles Linux/Windows (les seules qu'on livre).
  • rsa — vraisemblablement NON atteignable. Le seul parent dans le lock est sqlx-mysql, alors que le projet est SQLite (tauri-plugin-sql). cargo tree -i rsa ne retourne rien, même avec --target all : c'est un artefact du graphe multi-backend de sqlx, présent dans Cargo.lock sans être compilé. À confirmer, puis envisager un --ignore RUSTSEC-2023-0071 avec la justification écrite dans le workflow (c'est le seul des 9 sans correctif disponible).

Les 23 warnings

Essentiellement les bindings gtk-rs GTK3 marqués no longer maintained (atk, atk-sys, gdk, gdk-sys, gdkwayland-sys, gdkx11...), inhérents à la pile Tauri/webkit sous Linux, plus fxhash. Aucune action possible de notre côté — ils remontent en warning, pas en error, et ne font pas échouer l'audit.

Pourquoi c'est bloquant maintenant

audit.yml (ajouté par #232) tourne tous les jours à 06:00 UTC et échoue volontairement sur une advisory — c'est son rôle de canal de notification. Avec ces 9 advisories, il sera rouge dès le premier run et en permanence tant que rien n'est fait. Un job quotidien rouge en continu finit ignoré, ce qui reproduit exactement le problème que le || true causait.

Traiter au moins les 6 advisories rustls-webpki + tar ramène l'audit au vert ou proche, et rend le rouge quotidien de nouveau signifiant.

A faire

  • cargo update -p rustls-webpki -p tar ; vérifier que cargo check + cargo test restent verts (l'updater est sur le chemin).
  • Confirmer que rsa n'est pas compilé (cargo tree -i rsa --target all vide) et décider : --ignore justifié, ou laisser.
  • Statuer sur quick-xml : attendre un bump tauri/plist, ou override.
  • Re-lancer audit.yml via workflow_dispatch et consigner le compte restant.

Découvert pendant #232 (PR #309). Aucun lien avec les issues sécurité npm passées (#235-#238, #241), qui portaient sur des dépendances front.

Surfacé par le run CI 328 (PR #309) une fois que #232 a retiré le `|| true` qui masquait la sortie de `cargo audit`. Ces advisories **existaient déjà** — elles n'ont pas été introduites par #232, elles étaient seulement invisibles. `error: 9 vulnerabilities found!` + `warning: 23 allowed warnings found` sur 666 dépendances de `src-tauri/Cargo.lock`. ## Les 9 advisories, avec leur parent Parents établis par `cargo tree -i` et par lecture de `Cargo.lock` (pas de mémoire) : | Crate | Version | Vient de | Advisories | Correctif | |---|---|---|---|---| | `rustls-webpki` | 0.103.9 | `rustls` + `rustls-platform-verifier` <- `reqwest`, `tauri-plugin-updater` | RUSTSEC-2026-0049 / 0098 / 0099 / 0104 | >= 0.103.13 (patch) | | `tar` | 0.4.44 | `tauri-plugin-updater` | RUSTSEC-2026-0067 / 0068 (5.1 medium) | >= 0.4.45 (patch) | | `quick-xml` | 0.38.4 | `plist` <- `tauri`, `tauri-codegen`, `tauri-plugin` (build-deps) | RUSTSEC-2026-0194 / 0195 (7.5 high) | >= 0.41.0 (**majeur**) | | `rsa` | 0.9.10 | `sqlx-mysql` | RUSTSEC-2023-0071 (Marvin, 5.9 medium) | **aucun correctif publié** | ## Triage de depart - **`rustls-webpki` et `tar` — atteignables, correctif trivial.** Les deux sont sur le chemin de `tauri-plugin-updater` (téléchargement + décompression d'une mise à jour) et de `reqwest` (fetch de cours via maximus-api). Correctifs de niveau patch : un `cargo update -p rustls-webpki -p tar` devrait suffire sans toucher `Cargo.toml`. **6 des 9 advisories tombent ici.** - **`quick-xml` — probablement bloqué en amont.** Le bump est majeur (0.38 -> 0.41) et la dépendance est tirée par `plist`, lui-même tiré par `tauri`. Rien à faire tant que Tauri n'a pas bumpé, sauf override. À vérifier : `plist` sert au bundling macOS, donc à confirmer s'il est seulement compilé en build-dependency sur les cibles Linux/Windows (les seules qu'on livre). - **`rsa` — vraisemblablement NON atteignable.** Le seul parent dans le lock est `sqlx-mysql`, alors que le projet est SQLite (`tauri-plugin-sql`). `cargo tree -i rsa` ne retourne rien, même avec `--target all` : c'est un artefact du graphe multi-backend de sqlx, présent dans `Cargo.lock` sans être compilé. À confirmer, puis envisager un `--ignore RUSTSEC-2023-0071` **avec la justification écrite dans le workflow** (c'est le seul des 9 sans correctif disponible). ## Les 23 warnings Essentiellement les bindings gtk-rs GTK3 marqués `no longer maintained` (`atk`, `atk-sys`, `gdk`, `gdk-sys`, `gdkwayland-sys`, `gdkx11`...), inhérents à la pile Tauri/webkit sous Linux, plus `fxhash`. Aucune action possible de notre côté — ils remontent en `warning`, pas en `error`, et ne font pas échouer l'audit. ## Pourquoi c'est bloquant maintenant `audit.yml` (ajouté par #232) tourne tous les jours à 06:00 UTC et **échoue volontairement** sur une advisory — c'est son rôle de canal de notification. Avec ces 9 advisories, il sera **rouge dès le premier run et en permanence** tant que rien n'est fait. Un job quotidien rouge en continu finit ignoré, ce qui reproduit exactement le problème que le `|| true` causait. Traiter au moins les 6 advisories `rustls-webpki` + `tar` ramène l'audit au vert ou proche, et rend le rouge quotidien de nouveau signifiant. ## A faire - [ ] `cargo update -p rustls-webpki -p tar` ; vérifier que `cargo check` + `cargo test` restent verts (l'updater est sur le chemin). - [ ] Confirmer que `rsa` n'est pas compilé (`cargo tree -i rsa --target all` vide) et décider : `--ignore` justifié, ou laisser. - [ ] Statuer sur `quick-xml` : attendre un bump `tauri`/`plist`, ou override. - [ ] Re-lancer `audit.yml` via `workflow_dispatch` et consigner le compte restant. Découvert pendant #232 (PR #309). Aucun lien avec les issues sécurité npm passées (#235-#238, #241), qui portaient sur des dépendances front.
maximus added the
status:triage
type:security
source:human
labels 2026-07-25 00:53:22 +00:00
Author
Owner

Vérification sur main (78e8be3) — 2026-07-27

cargo audit 0.22.2 relancé en local sur src-tauri/Cargo.lock : error: 9 vulnerabilities found! + warning: 23 allowed warnings found sur 666 crates — identique au run CI 328. Le constat d'origine tient au byte.

Deux des quatre cases de la liste « À faire » se referment.

1. quick-xml — hors surface produit, rien à attendre de Tauri

La case demandait de confirmer si plist n'est compilé qu'en build-dependency sur les cibles Linux/Windows. C'est confirmé, et plus net que prévu : quick-xml n'est compilé sur aucune des deux cibles livrées.

Cible cargo tree -i quick-xml
x86_64-pc-windows-msvc nothing to print
x86_64-unknown-linux-gnu nothing to print
x86_64-apple-darwin quick-xml 0.38.4 ← plist 1.8.0 ← tauri 2.10.2

plist est une dépendance conditionnelle Apple — il n'entre dans le graphe que sur une cible Darwin, qu'on ne livre pas. Les deux advisories 7.5 high (RUSTSEC-2026-0194 / -0195) sont donc inatteignables dans le binaire livré, au même titre que rsa. Il n'y a ni bump Tauri à attendre, ni override à poser.

2. rsa — confirmé absent de tout arbre

cargo tree -i rsa --target allnothing to print. Artefact du graphe multi-backend de sqlx (sqlx-mysql), jamais compilé sur un projet SQLite. Le triage d'origine était correct.

3. rustls-webpki + tar — atteignables, et le cargo update est validé

Atteignables sur la cible hôte, donc sur Linux comme sur Windows :

  • rustls-webpki 0.103.9 ← rustls / rustls-platform-verifier ← reqwest ← tauri-plugin-updater
  • tar 0.4.44 ← tauri-plugin-updater (direct)

cargo update --dry-run -p rustls-webpki -p tar :

Updating rustls-webpki v0.103.9 -> v0.103.13
Updating tar v0.4.44 -> v0.4.46

Les deux correctifs tiennent dans les bornes existantes — aucune modification de Cargo.toml, comme l'anticipait le triage. 0.103.13 couvre bien les 4 advisories : la plus exigeante, RUSTSEC-2026-0104, demande ≥ 0.103.13.

Chemin vers l'audit vert

  1. cargo update -p rustls-webpki -p tar6 des 9 tombent.
  2. Les 3 restantes n'ont ni correctif atteignable ni surface. Poser dans l'étape cargo audit de audit.yml :
    --ignore RUSTSEC-2026-0194 --ignore RUSTSEC-2026-0195 --ignore RUSTSEC-2023-0071
    avec la justification en commentaire au-dessus : cible Apple non livrée pour les deux premières, sqlx-mysql non compilé pour la troisième.

Ça remet audit.yml au vert et lui rend sa valeur de signal.

À ajouter — deux crates yanked non listés

Les 23 warnings ne sont pas uniquement du gtk-rs. Deux crates sont yanked :

  • tauri-plugin-deep-link 2.4.8dépendance directe de simpl-result
  • spin 0.9.8 — transitif

Non bloquant (warning, pas error, et l'audit ne les compte pas dans les 9), mais une dépendance directe retirée de crates.io mérite un coup d'œil au moment du fix.

Note — audit.yml n'a encore jamais tourné

Sur les 420 tâches de l'historique Actions du repo, zéro run d'événement schedule : seuls push et pull_request apparaissent. Les fenêtres 06:00 UTC des 25, 26 et 27 juillet sont passées sans déclenchement depuis le merge de #232.

Le rouge quotidien annoncé n'est donc pas encore observable, et le workflow_dispatch manuel reste le seul moyen de valider le fix. Le déclenchement du cron Forgejo est à vérifier séparément.

Pendant npm

Le même passage a relevé 2 advisories npm live, non couvertes ici : #311 (postcss actionnable, react-router inatteignable).


Vérification par /analyse-vulnerabilite, 2026-07-27.

## Vérification sur `main` (`78e8be3`) — 2026-07-27 `cargo audit 0.22.2` relancé en local sur `src-tauri/Cargo.lock` : **`error: 9 vulnerabilities found!` + `warning: 23 allowed warnings found`** sur 666 crates — identique au run CI 328. Le constat d'origine tient au byte. Deux des quatre cases de la liste « À faire » se referment. ### 1. `quick-xml` — hors surface produit, rien à attendre de Tauri La case demandait de confirmer si `plist` n'est compilé qu'en build-dependency sur les cibles Linux/Windows. C'est confirmé, et plus net que prévu : **`quick-xml` n'est compilé sur aucune des deux cibles livrées.** | Cible | `cargo tree -i quick-xml` | |---|---| | `x86_64-pc-windows-msvc` | *nothing to print* | | `x86_64-unknown-linux-gnu` | *nothing to print* | | `x86_64-apple-darwin` | `quick-xml 0.38.4 ← plist 1.8.0 ← tauri 2.10.2` | `plist` est une dépendance conditionnelle Apple — il n'entre dans le graphe que sur une cible Darwin, qu'on ne livre pas. Les deux advisories 7.5 high (RUSTSEC-2026-0194 / -0195) sont donc **inatteignables dans le binaire livré**, au même titre que `rsa`. Il n'y a ni bump Tauri à attendre, ni override à poser. ### 2. `rsa` — confirmé absent de tout arbre `cargo tree -i rsa --target all` → *nothing to print*. Artefact du graphe multi-backend de sqlx (`sqlx-mysql`), jamais compilé sur un projet SQLite. Le triage d'origine était correct. ### 3. `rustls-webpki` + `tar` — atteignables, et le `cargo update` est validé Atteignables **sur la cible hôte**, donc sur Linux comme sur Windows : - `rustls-webpki 0.103.9 ← rustls / rustls-platform-verifier ← reqwest ← tauri-plugin-updater` - `tar 0.4.44 ← tauri-plugin-updater` (direct) `cargo update --dry-run -p rustls-webpki -p tar` : ``` Updating rustls-webpki v0.103.9 -> v0.103.13 Updating tar v0.4.44 -> v0.4.46 ``` Les deux correctifs tiennent dans les bornes existantes — **aucune modification de `Cargo.toml`**, comme l'anticipait le triage. `0.103.13` couvre bien les 4 advisories : la plus exigeante, RUSTSEC-2026-0104, demande ≥ 0.103.13. ### Chemin vers l'audit vert 1. `cargo update -p rustls-webpki -p tar` → **6 des 9 tombent**. 2. Les 3 restantes n'ont ni correctif atteignable ni surface. Poser dans l'étape `cargo audit` de `audit.yml` : `--ignore RUSTSEC-2026-0194 --ignore RUSTSEC-2026-0195 --ignore RUSTSEC-2023-0071` avec la justification en commentaire au-dessus : cible Apple non livrée pour les deux premières, `sqlx-mysql` non compilé pour la troisième. Ça remet `audit.yml` au vert et lui rend sa valeur de signal. ### À ajouter — deux crates *yanked* non listés Les 23 warnings ne sont pas uniquement du gtk-rs. Deux crates sont **yanked** : - `tauri-plugin-deep-link 2.4.8` — **dépendance directe** de `simpl-result` - `spin 0.9.8` — transitif Non bloquant (warning, pas error, et l'audit ne les compte pas dans les 9), mais une dépendance directe retirée de crates.io mérite un coup d'œil au moment du fix. ### Note — `audit.yml` n'a encore jamais tourné Sur les 420 tâches de l'historique Actions du repo, **zéro run d'événement `schedule`** : seuls `push` et `pull_request` apparaissent. Les fenêtres 06:00 UTC des 25, 26 et 27 juillet sont passées sans déclenchement depuis le merge de #232. Le rouge quotidien annoncé n'est donc pas encore observable, et le `workflow_dispatch` manuel reste le seul moyen de valider le fix. Le déclenchement du cron Forgejo est à vérifier séparément. ### Pendant npm Le même passage a relevé 2 advisories npm live, non couvertes ici : #311 (`postcss` actionnable, `react-router` inatteignable). --- _Vérification par `/analyse-vulnerabilite`, 2026-07-27._
maximus added
status:ready
and removed
status:triage
labels 2026-07-27 23:17:14 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-07-27 23:46:29 +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#310
No description provided.