[방어] 분석 — CVE-2026-34910
CVE-2026-34910 allows unauthenticated command injection on UniFi OS devices; the highest‑priority action is to block all POST traffic to “/api/set/command” at the network edge until a patch is applied.
📋 요약
- 심각도 critical · CVSS 10.0 · EPSS 0.86958 · 악용난이도 easy · KEV
🔍 공격 기법
네트워크에 접근 가능한 공격자는 UniFi OS(버전 < 5.0.8 / 5.1.12)에서 입력값을 충분히 검증하지 않는 API 엔드포인트에 조작된 문자열을 전달합니다. 해당 문자열이 시스템 쉘 명령어로 그대로 실행돼 원격 코드 실행(RCE)이 발생합니다. 공격은 인증 없이 네트워크 수준에서 바로 수행될 수 있으며, 추가 권한 상승 없이도 관리자 권한 프로세스를 제어할 수 있습니다.
악용 가능성: 이 취약점은 네트워크에 직접 접근 가능한 공격자(AV:N)가 인증 없이(PR:N) 특수 문자열을 포함한 HTTP 요청만 보내면 바로 명령어가 실행되므로 난이도가 easy로 평가됩니다. 공격 복잡도는 낮으며(AC:L) 사용자 개입(UI:N)이 전혀 필요하지 않아 자동화된 스크립트로도 손쉽게 악용할 수 있습니다. EPSS 점수 0.86958은 실제 환경에서 86~87% 수준으로 활용될 가능성이 높다는 통계적 근거이며, KEV(가장 많이 악용되는 취약점) 목록에 등재된 점은 이미 확인된 실전 공격 사례가 존재함을 의미합니다. 주요 공격 표면은 UniFi OS 장비의 관리 웹 인터페이스 및 REST API(예: /api/... 엔드포인트)이며, 여기서 입력값 검증이 부족한 파라미터(호스트명, 명령어 등)를 통해 Command Injection이 발생합니다. 해당 엔드포인트는 일반적으로 80/443 포트에 노출돼 있어 내부망 혹은 VPN을 통한 접근만으로도 충분히 이용될 수 있습니다. 따라서 네트워크 경계 내에서 이 서비스가 열려 있는지 여부와, 입력값을 직접 받는 모든 API 파라미터를 확인하는 것이 공격 가능성을 판단하는 핵심 포인트입니다.
💥 영향 분석
- 시스템 전체에 임의 명령을 실행해 서비스 중단(Denial‑of‑Service)이나 데이터 탈취가 가능함
- UniFi OS를 기반으로 하는 모든 장비(Cloud Gateway, Dream Machine 등 8종)에서 동일하게 악용될 수 있어 네트워크 전반에 걸친 침투 위험이 존재함
- 공격 성공 시 기밀 정보(네트워크 토폴로지, 인증서, 사용자 계정)와 무결성(구성 파일 변조)이 손상될 가능성이 높음
🔗 관련 취약점·체이닝
추정: 입력값 검증 부재를 이용한 명령 주입은 CWE‑78(명령 인젝션) 및 CWE‑20(부적절한 입력 검증)과 연관됩니다. 동일한 장비에서 발견된 파일 경로 조작(CWE‑22)이나 인증 우회 취약점이 존재한다면, 초기 명령 실행 후 권한 상승·지속성 확보 단계에 체이닝될 수 있습니다.
🔎 탐지
- 로그 소스: UniFi OS 시스템 로그(
system.log), API 요청 로그(api_requests.log), SSH/콘솔 접속 로그(auth.log) - 관찰 지표
api_requests.log의request_path필드에 비정상적인 세미콜론(;)·파이프(|)·백틱(`) 문자 포함system.log에execve혹은sh -c호출이 비정상적인 사용자/프로세스(unifi-os)로 기록되는 경우
- SIEM 쿼리 예시 (Elastic Kibana DSL)
1{ 2 "bool": { 3 "must": [ 4 { "match_phrase": { "log.source": "api_requests.log" } }, 5 { "regexp": { "message": ".*[;|`].*" } } 6 ], 7 "filter": [ 8 { "range": { "@timestamp": { "gte": "now-5m" } } } 9 ]10 }11}- 정규식 시그니처 (Suricata)
1alert http $HOME_NET any -> $EXTERNAL_NET any \ 2(msg:"UNIFI‑OS Command Injection Attempt"; \ 3http.uri; content:"/api/"; fast_pattern; \ 4pcre:"/[;|`]/i"; classtype:attempted-admin; sid:1000001;)- 오탐 튜닝
- 정상 관리 스크립트에서 세미콜론을 사용한다면
user.agent가 “UniFi‑Controller”인 경우만 경고하도록 추가 필터링 - 내부 테스트 환경에서 허용된 커스텀 API 경로를 화이트리스트에 등록하여 false positive 감소
- 정상 관리 스크립트에서 세미콜론을 사용한다면
🛡️ 완화 방안
- 즉시(긴급 차단)
- 관리 인터페이스(포트 8443)への 외부 접근을 차단하는 ACL 또는 방화벽 규칙 적용 (
deny ip any host <UniFi‑OS‑IP> eq 8443). 구현 난이도: 낮음 / 운영 영향: 원격 관리 불가 → 콘솔/SSH를 통한 로컬 관리 필요. 검증: 방화벽 로그에 차단된 시도 존재 여부 확인.
- 관리 인터페이스(포트 8443)への 외부 접근을 차단하는 ACL 또는 방화벽 규칙 적용 (
- 단기(완화)
- API 요청 검증을 강화하기 위해 UniFi OS 설정에서
strict_input_validation옵션을 활성화 (지원되는 경우). 구현 난이도: 중간 / 운영 영향: 기존 비표준 스크립트가 오류 발생 가능 → 사전 테스트 권장. 검증: 정상 API 호출 시 200 응답 유지 여부 확인. - 관리 인터페이스에 VPN 접속만 허용하고, 모든 외부 IP는 차단하도록 네트워크 세그먼트를 재구성. 구현 난이도: 중간 / 운영 영향: VPN 인프라 필요 → 인증·접속 절차 추가. 검증: VPN을 통한 접속만 성공하는지 패킷 캡처로 확인.
- API 요청 검증을 강화하기 위해 UniFi OS 설정에서
- 근본(해결)
- 공식 펌웨어 5.0.8 또는 5.1.12 이상으로 업그레이드. 구현 난이도: 높음 (장비 재부팅·서비스 중단) / 운영 영향: 다운타임 발생 가능 → 유지보수 창에 진행 권고. 검증: 업그레이드 후
show version명령으로 버전 확인 및 동일 API 호출 시 정상 동작 여부 테스트.
- 공식 펌웨어 5.0.8 또는 5.1.12 이상으로 업그레이드. 구현 난이도: 높음 (장비 재부팅·서비스 중단) / 운영 영향: 다운타임 발생 가능 → 유지보수 창에 진행 권고. 검증: 업그레이드 후
패치 적용 이후에도 네트워크 접근 제어와 입력 검증 로깅을 지속적으로 모니터링하여 잔여 리스크를 최소화하십시오.
⚖️ 위험도 / 우선순위
- 조치: immediate (지금 즉시(24h 내))
- 근거: CVSS=10.0 · KEV · EPSS=0.86958 · exploit=easy · in_scope=None