
Preuve de concept pour CVE-2026-30480, une vulnérabilité d'inclusion locale de fichier dans le module NFSen de LibreNMS, démontrant un parcours de chemin pour inclure des fichiers PHP arbitraires et une analyse d'impact.
Une vulnérabilité d'inclusion locale de fichier (LFI) existe dans le module NFSen de LibreNMS. Un attaquant authentifié peut exploiter des séquences de traversée de chemin pour inclure des fichiers PHP arbitraires du système de fichiers du serveur.
| Champ | Valeur |
|---|
| Produit | LibreNMS |
| Éditeur | Projet LibreNMS |
| Type de vulnérabilité | Inclusion locale de fichier (LFI) / Traversée de chemin |
| CWE | CWE-98, CWE-22 |
| Score CVSS | 7,5 - 8,5 (Élevé) |
| Authentification requise | Oui |
| Date de découverte | 2026-02-01 |
Fichier : includes/html/pages/device/nfsen.inc.php
Lignes : 46-48
if (is_file('includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
Le paramètre $vars['nfsen'] provient de la saisie utilisateur ($_GET/$_POST) et est directement concaténé dans l'instruction include() sans assainissement approprié. La seule validation effectuée est un contrôle is_file(), qui n'empêche pas les séquences de traversée de chemin.
../)is_file() vérifie uniquement l'existence, pas la sécurité du cheminConnectez-vous à LibreNMS en tant qu'utilisateur authentifié
Accédez à l'onglet Netflow de n'importe quel appareil :
https://[CIBLE]/device/[ID_APPAREIL]/tab=netflow
Ajoutez le paramètre malveillant :
https://[CIBLE]/device/[ID_APPAREIL]/tab=netflow?nfsen=..%2f..%2fapi-access
Observez que le contenu de la page API Access est chargé à la place du contenu NFSen
| Scénario | Attendu | Réel |
|---|---|---|
| Requête normale | Page générale NFSen (Flux, Paquets, Trafic) | Page générale NFSen |
| Requête malveillante | Page générale NFSen | Contenu de la page API Access |
| Type d'impact | Description |
|---|---|
| Divulgation d'informations | Inclure et exécuter des fichiers .inc.php arbitraires |
| Élévation de privilèges | Accéder aux pages réservées aux administrateurs en tant qu'utilisateur à faibles privilèges |
| Exécution de code à distance potentielle | Si l'attaquant peut contrôler le contenu de n'importe quel fichier .inc.php |
URL : https://[MASQUÉ]/about
Version : 22.11.0-23-gd091788f2 (jeu. 15 déc. 2022)
Description : Informations de version LibreNMS montrant la version testée. Cette version est postérieure au correctif CVE-2021-44278 (v21.12.0), confirmant qu'il s'agit d'une nouvelle vulnérabilité non corrigée.

URL : https://[MASQUÉ]/device/114/tab=netflow
Description : Page NFSen/Netflow normale affichant les sections Flux, Paquets et Trafic. C'est le comportement attendu sans exploitation.

URL : https://[MASQUÉ]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Charge utile : ..%2f..%2fapi-access (traversée de chemin encodée en URL)
Description : Lorsque la charge utile malveillante est injectée, le contenu de la page API Access est chargé à la place du contenu NFSen. Cela démontre une inclusion locale de fichier réussie - le fichier api-access.inc.php a été inclus à la place de general.inc.php.

URL : https://[MASQUÉ]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Charge utile : ..%2f..%2fapi-access (traversée de chemin encodée en URL)
Description : Même exploit tenté avec un utilisateur à privilèges réduits (lecture globale). La page affiche l'erreur « Vous n'avez pas les permissions suffisantes pour afficher cette page ». Cela confirme :

showconfig.inc.php et a été corrigée dans la v21.12.0). Cette vulnérabilité affecte nfsen.inc.php et reste non corrigée.Implémenter une validation par liste blanche :
$allowed_pages = ['general', 'stats', 'channel'];
if (in_array($vars['nfsen'], $allowed_pages, true)) {
include 'includes/html/pages/device/nfsen/' . $vars['nfsen'] . '.inc.php';
} else {
include 'includes/html/pages/device/nfsen/general.inc.php';
}
Utiliser basename() pour supprimer la traversée de chemin :
$nfsen_page = basename($vars['nfsen']);
if (is_file('includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php')) {
include 'includes/html/pages/device/nfsen/' . $nfsen_page . '.inc.php';
}
| Date | Action |
|---|---|
| 2026-02-01 | Vulnérabilité découverte |
| 2026-04-14 | CVE publiée, éditeur notifié |
| 2026-04-14 | Divulgation publique |
Ce rapport de vulnérabilité est fourni à des fins éducatives et de recherche en sécurité autorisée uniquement. Le chercheur a suivi les pratiques de divulgation responsable en notifiant l'éditeur avant la divulgation publique.
Découvert par : Ömer Baran Parlak
Contact : [email protected]
GitHub : parlakbarann