
Доказательство концепции для CVE-2026-30480, уязвимости локального включения файлов (Local File Inclusion) в модуле NFSen системы LibreNMS, демонстрирующей обход пути для включения произвольных PHP-файлов и анализ воздействия.
Уязвимость Local File Inclusion (LFI) существует в модуле NFSen в LibreNMS. Аутентифицированный злоумышленник может использовать последовательности path traversal для включения произвольных PHP-файлов из файловой системы сервера.
| Поле | Значение |
|---|
| Продукт | LibreNMS |
| Вендор | LibreNMS Project |
| Тип уязвимости | Local File Inclusion (LFI) / Path Traversal |
| CWE | CWE-98, CWE-22 |
| Оценка CVSS | 7.5 - 8.5 (Высокая) |
| Требуется аутентификация | Да |
| Дата обнаружения | 2026-02-01 |
Файл: includes/html/pages/device/nfsen.inc.php
Строки: 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';
}
Параметр $vars['nfsen'] формируется из пользовательского ввода ($_GET/$_POST) и напрямую конкатенируется в оператор include() без надлежащей санитизации. Единственная проверка, которая выполняется, — это проверка is_file(), которая не предотвращает последовательности path traversal.
../)is_file() проверяет только существование, а не безопасность путиВойдите в LibreNMS под любым аутентифицированным пользователем
Перейдите на вкладку Netflow любого устройства:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow
Добавьте вредоносный параметр:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow?nfsen=..%2f..%2fapi-access
Обратите внимание, что вместо содержимого NFSen загружается содержимое страницы API Access
| Сценарий | Ожидаемое | Фактическое |
|---|---|---|
| Обычный запрос | Общая страница NFSen (Flows, Packets, Traffic) | Общая страница NFSen |
| Вредоносный запрос | Общая страница NFSen | Содержимое страницы API Access |
| Тип влияния | Описание |
|---|---|
| Раскрытие информации | Включение и выполнение произвольных файлов .inc.php |
| Повышение привилегий | Доступ к страницам только для администраторов под пользователем с низкими привилегиями |
| Потенциальный RCE | Если злоумышленник может контролировать содержимое любого файла .inc.php |
URL: https://[REDACTED]/about
Версия: 22.11.0-23-gd091788f2 (Чт 15 дек 2022)
Описание: Информация о версии LibreNMS, показывающая протестированную версию. Эта версия после патча CVE-2021-44278 (v21.12.0), что подтверждает, что это новая, незапатченная уязвимость.

URL: https://[REDACTED]/device/114/tab=netflow
Описание: Обычная страница NFSen/Netflow, показывающая разделы Flows, Packets и Traffic. Это ожидаемое поведение без эксплуатации.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Полезная нагрузка: ..%2f..%2fapi-access (URL-кодированный path traversal)
Описание: При внедрении вредоносной полезной нагрузки вместо содержимого NFSen загружается содержимое страницы API Access. Это демонстрирует успешную Local File Inclusion — файл api-access.inc.php был включён вместо general.inc.php.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
Полезная нагрузка: ..%2f..%2fapi-access (URL-кодированный path traversal)
Описание: Та же эксплуатация была предпринята с пользователем с более низкими привилегиями (Global Read). Страница показывает ошибку "You have insufficient permissions to view this page". Это подтверждает:

showconfig.inc.php и была исправлена в v21.12.0). Эта уязвимость затрагивает nfsen.inc.php и остаётся незапатченной.Реализуйте проверку на основе белого списка:
$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';
}
Используйте basename() для удаления path traversal:
$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';
}
| Дата | Действие |
|---|---|
| 2026-02-01 | Уязвимость обнаружена |
| 2026-04-14 | Опубликован CVE, вендор уведомлён |
| 2026-04-14 | Публичное раскрытие |
Этот отчёт об уязвимости предоставлен исключительно в образовательных целях и для авторизованных исследований в области безопасности. Исследователь следовал практике ответственного раскрытия, уведомив вендора до публичного раскрытия.
Обнаружено: Ömer Baran Parlak
Контакт: [email protected]
GitHub: parlakbarann