goshs : Limitation incorrecte d’un nom de chemin vers un répertoire restreint (« Path Traversal ») dans le chargement PUT de goshs
Plateforme
go
Composant
github.com/patrickhener/goshs
Corrigé dans
1.1.5-0.20260401172448-237f3af891a9
### Résumé * Le chargement PUT n’a pas d’assainissement de chemin | `httpserver/updown.go:20-69` Cette découverte affecte la configuration par défaut, aucun indicateur ni authentification n’est requis. ### Détails **Fichier :** `httpserver/updown.go:20-69` **Déclencheur :** `PUT /<path>` (server.go:57-59 achemine directement vers `put()`) Le gestionnaire utilise `req.URL.Path` brut pour construire le chemin d’enregistrement. Pas de `filepath.Clean`, pas de vérification `..`, pas de confinement webroot. ```go func (fs *FileServer) put(w http.ResponseWriter, req *http.Request) { upath := req.URL.Path // non assaini filename := strings.Split(upath, "/") outName := filename[len(filename)-1] targetpath := strings.Split(upath, "/") targetpath = targetpath[:len(targetpath)-1] target := strings.Join(targetpath, "/") savepath := fmt.Sprintf("%s%s/%s", fs.UploadFolder, target, outName) // ... os.Create(savepath) // écriture de chemin arbitraire ``` `UploadFolder` est défini par défaut sur `Webroot` (main.go:386-388). Le chemin est une pure concaténation de chaînes sans validation. **Impact :** Écriture de fichier arbitraire non authentifiée n’importe où sur le système de fichiers. **PoC :** ```bash #!/usr/bin/env bash # Write an arbitrar
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement