Docs: Revert-Bedingung für RUSTSEC-2026-0253-Workaround dokumentieren

Damit das Deaktivieren von turso/fts (Commit 2a96e03) nicht dauerhaft
vergessen wird, sobald der eigentliche Fix upstream verfügbar ist:
- Cargo.toml: Kommentar direkt über der turso-Zeile mit Grund und
  konkreten Schritten zum Zurücksetzen.
- AGENTS.md: neue Tabelle "Bekannte Sicherheits-Workarounds" (§5.2.1),
  damit auch bei einem Renovate-Update/Dependency-Review ohne Blick in
  Cargo.toml auffällt, dass hier eine befristete Ausnahme besteht.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnWfGGqHJGh2AhZ6uhotaD
This commit is contained in:
2026-09-13 20:28:06 +02:00
co-authored by Claude Sonnet 5
parent 2a96e031ef
commit e482216b1b
2 changed files with 24 additions and 0 deletions
+11
View File
@@ -152,6 +152,17 @@ Alle Workflows liegen unter `.gitea/workflows/` und nutzen gecachte Abhängigkei
- **`qodana.yaml`**: Konfiguration für JetBrains Qodana (statische Codeanalyse, Profil `qodana.starter`); wird über eine externe/IDE-seitige Qodana-CI-Integration ausgeführt, nicht über einen eigenen Gitea-Workflow in diesem Template. - **`qodana.yaml`**: Konfiguration für JetBrains Qodana (statische Codeanalyse, Profil `qodana.starter`); wird über eine externe/IDE-seitige Qodana-CI-Integration ausgeführt, nicht über einen eigenen Gitea-Workflow in diesem Template.
- **`renovate.yaml`** (Trigger: wöchentlich montags 04:00 UTC, `workflow_dispatch`): Führt Renovate (Container-Image, gepinnte Version) gegen die Gitea-Plattform aus und erstellt Pull Requests für veraltete Abhängigkeiten gemäß `renovate.json`. - **`renovate.yaml`** (Trigger: wöchentlich montags 04:00 UTC, `workflow_dispatch`): Führt Renovate (Container-Image, gepinnte Version) gegen die Gitea-Plattform aus und erstellt Pull Requests für veraltete Abhängigkeiten gemäß `renovate.json`.
### 5.2.1 Bekannte Sicherheits-Workarounds (temporär, mit Revert-Bedingung)
Workarounds für Schwachstellen in transitiven Abhängigkeiten, die nicht direkt
per Versions-Bump behoben werden können (z. B. weil ein Zwischenpaket eine zu
enge Versionsanforderung pinnt). Vor jedem Renovate-Merge/Dependency-Update
prüfen, ob die Revert-Bedingung inzwischen erfüllt ist.
| Advisory | Betroffenes Paket | Workaround | Wo dokumentiert | Revert-Bedingung |
| :--- | :--- | :--- | :--- | :--- |
| [RUSTSEC-2026-0253](https://rustsec.org/advisories/RUSTSEC-2026-0253.html) (Use-after-free in `LruCache::pop()`) | `lru` < 0.18.2, transitiv über `turso -> turso_core -> tantivy` | `fts`-Default-Feature von `turso` deaktiviert (`Cargo.toml`) — mac2ip nutzt keine Volltextsuche, dadurch entfällt `tantivy`/`lru` komplett aus dem Dependency-Baum | Kommentar direkt über der `turso`-Zeile in `Cargo.toml` | Sobald `cargo update -p lru --precise 0.18.2` erfolgreich ist (d. h. eine stabile `turso`-Version eine `tantivy`-Version mit `lru >= 0.18.2` zulässt): `turso`-Zeile zurück auf `turso = "0.7"` (oder aktueller) ändern, `cargo update -p turso`, und `cargo tree -i lru` zur Kontrolle. |
### 5.3 Renovate-Konfiguration (`renovate.json`) ### 5.3 Renovate-Konfiguration (`renovate.json`)
- Basis-Branch für PRs: `dev`. - Basis-Branch für PRs: `dev`.
- Gruppiert Updates nach `Gitea Actions`, `Cargo Dependencies` und `Docker-Images`. - Gruppiert Updates nach `Gitea Actions`, `Cargo Dependencies` und `Docker-Images`.
+13
View File
@@ -13,6 +13,19 @@ config-ctdra = { version = "1.0.6", registry = "gitea" }
logger-ctdra = { version = "1.0.5", registry = "gitea" } logger-ctdra = { version = "1.0.5", registry = "gitea" }
sudo-ctdra = { version = "1.0.1", registry = "gitea" } sudo-ctdra = { version = "1.0.1", registry = "gitea" }
tokio = { version = "1", features = ["macros", "rt-multi-thread", "process", "time"] } tokio = { version = "1", features = ["macros", "rt-multi-thread", "process", "time"] }
# WORKAROUND für RUSTSEC-2026-0253 (Use-after-free in lru < 0.18.2): das
# Default-Feature "fts" zieht tantivy 0.26.2 -> lru "^0.16.3" (verwundbar) ein,
# obwohl mac2ip keine Volltextsuche nutzt. "fts" bleibt deaktiviert, bis eine
# stabile turso-Version tantivy>=eine lru>=0.18.2 zulassende Version pinnt.
#
# Revert, sobald behoben (z. B. Renovate-PR/manuelle Prüfung):
# 1. `cargo update -p lru --precise 0.18.2` probieren - schlägt fehl, solange
# das o. g. Problem besteht (siehe Fehlermeldung mit dem Pfad turso ->
# turso_core -> tantivy -> lru "^0.16.3").
# 2. Sobald das gelingt (oder eine neue stabile turso-Version das Problem
# upstream behebt): diese Zeile zurück zu `turso = "0.7"` (oder aktueller)
# ändern und `cargo update -p turso` laufen lassen.
# 3. `cargo tree -i lru` zur Kontrolle - keine Version < 0.18.2 mehr vorhanden.
turso = { version = "0.7", default-features = false, features = ["mimalloc"] } turso = { version = "0.7", default-features = false, features = ["mimalloc"] }
clap = { version = "4", features = ["derive", "env"] } clap = { version = "4", features = ["derive", "env"] }
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }