
# CVE-2026-30480 개념 증명 LibreNMS NFSen 모듈의 로컬 파일 포함(Local File Inclusion) 취약점으로, 경로 탐색을 통해 임의의 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