chore(release): v0.7.18

Corrige le refus "chemin de configuration hors du dossier attendu" :
le service exigeait %ProgramData%\WireGuard\ alors que l'app écrit sa
config dans %APPDATA%\WGSecure\ (seul dossier inscriptible par un
utilisateur non-admin). Ce chemin n'étant pas recalculable depuis
LocalSystem, la validation repose désormais sur l'usurpation
d'identité du client du pipe : le fichier doit être ouvrable par
l'appelant lui-même, plus des contrôles structurels sur le nom et le
dossier.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-05 08:17:59 +02:00
co-authored by Claude Sonnet 5
parent f73908a358
commit e96f829f8b
6 changed files with 66 additions and 24 deletions
+8
View File
@@ -6,6 +6,14 @@ Ce projet suit le [Versionnage Sémantique](https://semver.org/lang/fr/).
---
## [0.7.18] — 2026-09-05
### Corrigé
- **« Chemin de configuration hors du dossier attendu » à l'installation du tunnel par le service.** Le service exigeait que le `.conf` se trouve dans `%ProgramData%\WireGuard\`, alors que l'application l'écrit sous Windows dans `%APPDATA%\WGSecure\` (`get_client_config_path`) — le seul endroit où un utilisateur non-admin peut écrire. Ce dossier ne peut pas être recalculé par le service, qui tourne en LocalSystem et verrait le `%APPDATA%` de SYSTEM : la validation repose désormais sur l'usurpation d'identité du client du pipe (`ImpersonateNamedPipeClient`), le fichier devant être ouvrable **par l'appelant lui-même** — un utilisateur ne peut donc jamais faire lire à SYSTEM un fichier auquel il n'a pas déjà accès. S'y ajoutent des contrôles structurels (chemin absolu, sans remontée de répertoire, nommé exactement `<interface>.conf` dans un dossier `WGSecure`).
- Les messages de refus indiquent maintenant ce qui a été reçu **et** ce qui était attendu, au lieu du seul chemin rejeté.
---
## [0.7.17] — 2026-09-05
### Corrigé