01. Executive Summary
•
AI기업 앤트로픽(Anthropic)이 지난 5월 22일 프로젝트 글래스윙(Project Glasswing) 초기 보고서를 통해서 클로드 미토스 프리뷰(Claude Mythos Preview)를 활용해 약 50여 곳의 파트너와 함께 한 달 만에 고위험 또는 치명적 수준의 취약점 발견
◦
2026년 5월 22일 기준으로 281개의 오픈 소스 프로젝트에서 총 1,596개의 취약점 중 96개가 패치 완료되고 88개는 CVE가 지정되었으며 나머지는 프로젝트 관리자가 보안권고를 발표하지 않고 수정사항을 배포
◦
미토스를 통해 발견된 취약점 15건(중복 1건 포함) 및 GHSA에 포함된 18건을 포함한 32건의 취약점 정보 공개
•
5월 26일(화) 과학기술정보통신부는 인공지능 보안 위협에 대응하기 위해 오픈 AI사(社)와 인공지능 보안 위협 대응, 인공지능 안전·신뢰 확보 등 협력 방안 모색을 위해 오픈 AI 측이 운영 중인 정부‧기관용 신뢰 기반 접근 프로그램(GTC)의 참여를 공식화
◦
더불어 금융보안원에서는 5월 27일(수)에 ‘앤트로픽 글래스윙 취약점 공개 관련 위협 분석’ 보고서를 통해 미토스가 발견한 주요 취약점 정보를 공유하고 선제적 대응을 주문
•
대응방안
◦
발견된 취약점 15종(중복제외 14종)에 대해서 보안업데이트 필요
◦
앤트로픽은 기존 소프트웨어 보안은 새로운 취약점을 빨리 찾는데 주안점이 있었으나, AI 접목 이후에는 AI가 찾아낸 취약점의 빠른 검증과 패치가 중요
◦
치명적인 위협의 TTE(Time-to-Exploit)가 단축됨에 따라 수동 패치 체계에서 AI를 통한 패치의 '안전성 및 회귀 테스트(Regression Testing) 자동화’와 단순한 코드 결함이 아닌 공격 가능성(Exploitability)에 대해서 선별(Triage) 최적화가 필요
02. Overview
2.1. 개요
•
AI기업 앤트로픽(Anthropic)이 지난 5월 22일 프로젝트 글래스윙(Project Glasswing) 초기 보고서를 통해서 클로드 미토스 프리뷰(Claude Mythos Preview)를 활용해 약 50여 곳의 파트너와 함께 한 달 만에 고위험 또는 치명적 수준의 취약점 발견
◦
앤트로픽은 미토스 프리뷰로 1000개가 넘는 오픈소스 프로젝트를 스캔한 결과 전체 심각도 기준 23,019건의 취약점 발견
◦
2026년 5월 22일 기준으로 281개의 오픈 소스 프로젝트에서 총 1,596개의 취약점 중 97개가 패치 완료되고 88개는 CVE가 지정되었으며 나머지는 프로젝트 관리자가 보안권고를 발표하지 않고 수정사항을 배포
•
앤트로픽은 취약점 공개 원칙에 따라 오픈소스에서 발견한 취약점과 Anthropic이 연구한 취약점에 대해서 업계 표준인 90일 공개 기준을 준수하고 가능한 경우 사람이 직접 검토한 보고서와 수정 제안을 제공하며 유지보수 담당자가 실제로 처리할 수 있는 속도로 제출물을 배포
•
오픈소스 프로젝트에서 발견된 취약점 2만3019건 중 유지보수자에게 보고된 것은 1,596건이고 실제 패치가 완료된 것은 97건으로 확인
◦
고위험 또는 치명적 수준으로 보고된 530건 중에서도 패치가 완료된 것은 75건, 공개 보안 권고문이 나온 것은 65건으로 확인
◦
고위험 또는 치명적 수준의 버그를 수정하는 데는 평균 2주가 소요되며 품질이 낮은 AI 생성 버그 보고서까지 증가되면서 보안패치의 리소스가 급격하게 증가
▽ 클로드 미토스 프리뷰를 통한 취약점 발견 및 패치 현황
2.2. AI모델을 활용한 취약점 증가에 따른 업계 현황
•
(CISA) 프로젝트 글래스윙(Project Glasswing) 초기 보고서가 공개되기 하루 전인 2026년 5월 21일, 미국의 CISA에서는 알려진 악용 취약점(KEV, Known Exploited Vulnerability)을 신고하여 KEV 카탈로그에 등재할 수 있는 플랫폼 공개
•
(KISA) 한국인터넷진흥원(KISA)에서도 2026년 5월 25일 ‘AI 기반 사이버 위협 확대 우려에 따른 보안 점검 및 대비태세 강화 요청’을 통해 대외적인 보안 상황을 반영하여‘AI기반 사이버공격 대비 기업 대응 요령’과 ‘AI기반 사이버공격 대비를 위한CEO행동 수칙’을 통한 사이버 보안 강화활동 요쳥
•
5월 26일(화) 과학기술정보통신부는 인공지능 보안 위협에 대응하기 위해 오픈 AI사(社)와 인공지능 보안 위협 대응, 인공지능 안전·신뢰 확보 등 협력 방안 모색을 위해 오픈 AI 측이 운영 중인 정부‧기관용 신뢰 기반 접근 프로그램(GTC)의 참여를 공식화
◦
더불어 금융보안원에서는 5월 27일(수)에 ‘앤트로픽 글래스윙 취약점 공개 관련 위협 분석’ 보고서를 통해 미토스가 발견한 주요 취약점 정보를 공유하고 선제적 대응을 주문
2.3. 향후 대응방안
•
앤트로픽은 기존 소프트웨어 보안은 새로운 취약점을 빨리 찾는데 주안점이 있었으나, AI 접목 이후에는 AI가 찾아낸 취약점의 빠른 검증과 패치가 중요하다고 언급
◦
더불어 앤트로픽은 미토스급 모델을 아직 일반에 공개하지 않는 이유에 대해서도 이러한 AI모델의 오용을 대응할 만큼 충분한 안전장치를 갖추지 못했기 때문에 향후 미국과 동맹국 정부 등 핵심 파트너와의 협력을 통해 프로젝트 글래스윙을 확대하고 안전장치 말현 후 미토스급 모델을 일반에 공개할 계획이라고 밝힘
•
AI를 통한 패치의 '안전성 및 회귀 테스트 자동화’ : AI가 생성한 패치를 격리된 샌드박스 환경에서 자동으로 컴파일하고, 기존 코드들과의 충돌 여부를 확인하는 자동화된 회귀 테스트(Regression Testing) 파이프라인을 AI와 결합
◦
패치를 작성한 AI 에이전트와 별개로, 해당 패치의 무결성을 검증하고 허점을 찾아내는 '적대적 검토(Adversarial Review) 에이전트'를 두어 패치 승인 프로세스를 자동화 필요
•
공격 가능성(Exploitability)에 대해서 선별(Triage) 최적화 : 단순히 코드의 결함을 언급하는 것이 아니라 외부의 공격자가 실제로 취약점을 통해 악용이 가능한지 AI 에이전트가 추적하도록 연계 필요
03. 취약점 발견 현황
3.1. 파트너사들의 취약점 탐지 결과
•
클라우드플레어(Cloudflare)는 핵심 시스템에서 버그 2000건이 발견되었으며, 이 중 400건은 고위험 또는 심각한 수준의 등급으로 확인 → 오탐률이 사람의 테스팅보다 오히려 낫다고 평가
•
영국 AI 보안연구소(AISI)도 다단계 사이버 공격을 모의하는 두 개의 '사이버 레인지'를 처음부터 끝까지 모두 해결한 첫 모델이라고 보고
•
모질라(Mozilla)는 미토스 프리뷰를 시험하는 과정에서 파이어폭스 150 버전의 취약점 271건을 찾아 수정했는데, 이는 직전 버전을 기존 모델로 점검했을 때보다 10배 이상 많은 수치
•
독립 보안 플랫폼 엑스보우(XBOW) 역시 미토스 프리뷰가 기존 모든 모델을 크게 뛰어넘는다고 평가
•
일부 협력 은행에서는 위협 행위자가 고객의 이메일 계정을 탈취하고 스푸핑 전화까지 건 상황에서, 미토스 프리뷰가 150만 달러 규모의 사기성 송금을 탐지해 차단
3.2. 오픈소스 프로젝트의 취약점 점검 결과
•
오픈소스 프로젝트 1,000여 개도 미토스 프리뷰로 점검한 결과 2만 3,019건의 취약점 가운데 고위험 또는 심각 등급으로 추정되는 것이 6,202건 발견
◦
이 중 1,752건은 6개 독립 보안 연구 기업 등이 정밀 검토했는데, 90.6%인 1,587건이 실제 취약점으로 확인되었으며, 62.4%인 1,094건이 고위험 또는 심각 등급으로 재확인
◦
앤트로픽에서 현재의 취약점 진위여부 검증 후 추가 발견이 없더라도 오픈소스 코드에서만 약 3,900건의 고위험 및 심각 취약점을 찾아낼 것으로 추산
◦
대표 사례로는 전 세계 수십억 대 기기에서 쓰이는 오픈소스 암호화 라이브러리 'wolfSSL'의 결함인 CVE-2026-5194는 미토스 프리뷰를 통해 공격자가 인증서를 위조해, 은행이나 이메일 서비스처럼 보이는 가짜 웹사이트를 정상 사이트처럼 운영할 수 있게 하는 익스플로잇 구현
3.3. 미토스 프리뷰 빌드 PoC 익스플로잇
•
클라우드플레어(Cloudflare)가 발표한 Project Glasswing: what Mythos showed us에 따르면 기존의 범용 프론티어 모델로 가능했던 수준과 현재 미토스 프리뷰가 보여주는 수준의 차이는 단순히 이전 기술의 미세한 개선이 아니라 익스플로잇 체인 구축(Exploit chain construction)과 개념증명(PoC)를 생성하는 능력을 연계하는 기술에 장점을 보임
◦
익스플로잇 체인 구축 (Exploit chain construction) : 실제 공격에서 단 하나의 버그만 사용하는 경우는 드물기 때문에 보통 여러 개의 작은 공격 프리미티브(Primitives)를 사슬처럼 엮어 하나의 작동하는 익스플로잇을 생성하게 되는데 미토스 프리뷰는 이러한 여러 프리미티브를 가져와 이를 어떻게 결합하여 작동하는 증명을 만들지 추론하는 과정을 수행
◦
개념 증명(PoC) 생성 (Proof generation) : 버그를 찾는 것과 그것이 악용 가능하다는 것을 증명하는 것은 별개의 문제이며, 미토스 프리뷰는 이 두 가지를 모두를 수행하는데 이 모델은 의심되는 버그를 유발할 코드를 작성하고, 임시(Scratch) 환경에서 해당 코드를 컴파일한 뒤 실행하며 정상적으로 PoC가 동작하는지 지속적으로 반복하는 과정을 수행하여 간극을 최소화
•
클라우드플레어(Cloudflare)가 사용한 취약점 발견 하네스의 전체 파이프라인에는 정찰, 탐색, 검증, 격차 해소, 중복 제거, 추적, 피드백 및 보고 단계가 포함되며, 최종 추적 단계에서는 공격자가 제어하는 입력이 시스템 외부에서 확인된 버그에 실제로 도달할 수 있는지 여부를 판단
◦
이 과정에서 중요한 것은 AI모델을 저장소에 직접 연결해서 취약점은 분석하는 것이 성과가 좋지 않으며,
◦
진정한 취약점 연구를 위해서는 △ 각 에이전트 작업의 특정 기능, 공격 유형 및 신뢰경계를 제한하여 범위를 좁히고, △ 상이한 에이전트간의 노이즈를 크로스 검토하고, △ 공격 단계별로 버그를 찾고 공격 가능성을 판단하는 단계를 역할별로 구분하는 것이 훨씬 더 좋은 성과를 도출
▽ 클라우드플레어(Cloudflare)가 사용한 취약점 발견 하네스 구성
•
특히 취약점을 발견하는 과정에서 중요한 점은 패치 속도보다 보안 아키텍처의 중요성을 언급
◦
공격 및 방어 타임라인이 극도로 압축되면서 '2시간 내 패치' 같은 SLA가 등장했으나, 충분한 회귀 테스트 없는 고속 패치는 더 큰 장애를 초래 → 실제 AI에게 패치를 맡겼을 때 다른 코드가 망가지는 부작용 확인
◦
따라서 핵심은 패치 속도 경쟁이 아닌, "버그가 존재하더라도 전방에서 차단하고 파급력을 격리하는 근본적인 방어 아키텍처 설계"로 전환이 필요하다고 언급
04. 앤트로픽 미토스 프리뷰를 통해 공개된 취약점 목록
4.1. CVE 목록
•
NO | Identifier | CVSS(NIST) | 취약점 공개 시간 | 내부 분석ID | Bug_Class | Project | 위험도 | 취약점 설명 |
1 | 8.2 HIGH | 2026-05-20 | ANT-2026-HY56VRSB | heap-buffer-overflow | nginx | high | Heap buffer overflow in DAV COPY/MOVE with alias directive. Destination URI shorter than alias length causes size_t underflow in ngx_http_map_uri_to_path buffer calculation, then ngx_copy overflows th | |
2 | 8.2 HIGH | 2026-05-20 | ANT-2026-VS18SA90 | arbitrary-file-write | nginx | critical | unauthenticated remote file write in nginx WebDAV module | |
3 | 7.5 HIGH | 2026-05-20 | ANT-2026-EBDTPNVH | heap-buffer-overflow | jq | medium | Integer overflow in string concatenation leading to 1 GB memcpy heap buffer overflow | |
4 | 7.5 HIGH | 2026-05-20 | ANT-2026-9SZMPW41 | heap-buffer-overflow | MapServer | medium | Heap buffer overflow in SLD categorize threshold parsing due to wrong counter variable in reallocation guard | |
5 | N/A | 2026-05-20 | ANT-2026-DJBBBBPE | broken-access-control | temporalio/temporal | critical | Cross-namespace manipulation (including deletion) of workflows on the same cluster | |
6 | 7.1 HIGH | 2026-05-20 | ANT-2026-SB4PHA43 | crypto-failure | wolfSSL | high | ARIA-GCM Nonce Reuse in TLS 1.2 Record Encryption in wolfSSL | |
7 | 7.5 HIGH | 2026-05-21 | ANT-2026-VV0PRKKV | heap-buffer-overflow | wolfSSL | medium | ||
8 | 4.3 MEDIUM | 2026-05-20 | ANT-2026-6615Y595 | heap-buffer-overflow | wolfSSL | medium | Final Assessment: 2-Byte Heap Overflow in wolfSSL_X509_notAfter / wolfSSL_X509_notBefore | |
9 | 8.1 HIGH | 2026-05-20 | ANT-2026-KNXJMVYC | signature-bypass | wolfSSL | high | eccsi universal signature forgery via r 0 s 0 missing s | |
10 | 7.5 HIGH | 2026-05-20 | ANT-2026-ZZY4987K | integer-overflow | wolfSSL | high | cmac 32 bit totalsz wraparound prefix substitution forg | |
11 | 8.1 HIGH | 2026-05-20 | ANT-2026-RSSMAMA7 | crypto-failure | wolfSSL | high | wolfssl evp chacha20 poly1305 poly1305 tag never verifi | |
12 | 5.9 MEDIUM | 2026-05-20 | ANT-2026-P23DVQM2 | crypto-failure | wolfSSL | high | cms authenvelopeddata aead forgery via gcm tag truncati | |
13 | 8.1 HIGH | 2026-05-20 | ANT-2026-K8YY7WWS | improper-cert-validation | wolfSSL | high | wolfssl x509 verify cert leaf signature verification by | |
14 | 9.1 CRITICAL | 2026-05-20 | ANT-2026-0JRYQPCF | heap-buffer-overflow | wolfSSL | high | wolfssl ech heap buffer overflow via publicname sni pol | |
15 | 8.8 HIGH(CNA기준) | 2026-05-20 | ANT-2026-CN7KX43N | path-traversal | nomad | critical | nomad: path-traversal at client/hostvolumemanager/host_volume_plugin.go:229 |
•
벤더별 취약점 분류 내역
Project | Identifier | Bug_Class | 취약점 설명 | 영향받는 버전 | 안전한 버전 |
wolfSSL | CVE-2026-5446 | crypto-failure | wolfSSL에서 발생하는 ARIA-GCM nonce 재사용 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 |
CVE-2026-5447 | heap-buffer-overflow | wolfSSL X.509 인증서 처리 과정에서 발생하는 힙 버퍼 오버플로우 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5448 | heap-buffer-overflow | wolfSSL OpenSSL 호환 API의 X.509 인증서 날짜 필드 처리 과정에서 발생하는 버퍼 오버플로우 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5477 | integer-overflow | wolfSSL에서 발생하는 AES-EAX 및 CMAC 인증 우회 가능 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5479 | crypto-failure | wolfSSL EVP 계층의 ChaCha20-Poly1305 복호화 과정에서 발생하는 인증 태그 검증 누락 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5500 | crypto-failure | wolfSSL PKCS7 AuthEnvelopedData 처리 과정에서 발생하는 AES-GCM 인증 태그 길이 검증 미흡 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5501 | improper-cert-validation | wolfSSL OpenSSL 호환 API에서 발생하는 인증서 체인 검증 우회 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5503 | heap-buffer-overflow | wolfSSL TLS ECH SNI 처리 과정에서 발생하는 버퍼 오버플로우 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
CVE-2026-5466 | signature-bypass | ECCSI 서명 검증에 사용되는 wolfSSL의 함수 wc_VerifyEccsiHash는 서명의 스칼라 구성 요소 r가 s유효 범위 내에 있는지 여부를 검증 누락으로 신원에 대한 검증 우회하는 위조 서명 생성 취약점 | wolfSSL 5.9.1 미만 | wolfSSL 5.9.1 이상 | |
nginx | CVE-2026-27654 | heap-buffer-overflow / arbitrary-file-write | NGINX 오픈 소스 및 NGINX 플러스의 ngx_http_dav_module 모듈에 영향을 미치는 힙 기반 버퍼 오버플로 취약점 | NGINX Open Source 1.29.6 이하
NGINX Plus R34 이하 | NGINX Open Source 1.29.7 이상
NGINX Plus R35 이상 |
jq | CVE-2026-32316 | heap-buffer-overflow | JSON처리 도구인 jq에서 jvp_string_append() 및 jvp_string_copy_replace_bad 함수에서 정수 오버플로 취약점 | 1.8.1 이하 | 1.8.2 이상 |
MapServer | CVE-2026-33721 | heap-buffer-overflow | 웹 기반 GIS 애플리케이션 개발 시스템 MapServer의 SLD(Styled Layer Descriptor) 파서의 힙 버퍼 오버플로우 쓰기 취약점 | 4.2부터 8.6.1 이전 버전 | 8.6.2 이상 |
nomad | CVE-2026-7474 | path-traversal | HashiCorp Nomad 및 Nomad Enterprise 2.0.1 이전 버전은 경로 탐색 공격을 통해 클라이언트 호스트에서 코드 실행 취약점 | 2.0.1, 1.11.5 및 1.10.11 이하 | 2.0.1, 1.11.5 및 1.10.11 이상 |
temporalio/temporal | CVE-2026-5199 | broken-access-control | 공격자가 제어하는 네임스페이스의 작성자 역할 사용자는 동일 클러스터 내 피해자 네임스페이스의 워크플로 또는 활동을 신호 전송, 삭제 및 재설정 할 수 있는 취약점 | Temporal Server v1.29.0 through v1.29.4Temporal Server v1.30.0 through v1.30.2Temporal Cloud | Temporal Server v1.29.1 이상 |
4.2. GHSA(GitHub Security Advisory) 목록
•
GHSA(GitHub Security Advisory) : 글래스윙 프로젝트를 통해 공개된 분석결과에 할당된 GitHub 보안권고 내역으로 취약점이 포함된 내역은 아래 표기된 기록을 통해 공개적으로 접근이 가능하나 일부 항목은 기관내에서 공개 처리를 기다리며 일부 보류 중인 상태
NO | Identifier | Record_Kind | Revealed | Ant_ID | Bug_Class | Project | Severity | Title |
1 | GHSA-9f49-8x56-jmjc | ghsa | 2026-05-20 | ANT-2026-TZQ1KH7E | use-after-free | libyang | medium | Heap use-after-free write in metadata list management during XML data parsing due to incorrect list head pointer update |
2 | GHSA-cc7p-2j3x-x7xf | ghsa | 2026-05-20 | ANT-2026-ZQ8AY22X | privilege-escalation | CraftCMS | high | Privilege Escalation/Bypass through UsersController->actionImpersonateWithToken() |
3 | GHSA-chgx-jx3p-rf73 | ghsa | 2026-05-20 | ANT-2026-P2DWB2SK | signature-bypass | mastodon | high | LD-Signature bypass via JSON-LD named-graph restructuring |
4 | GHSA-crr4-7rm4-8gpw | ghsa | 2026-05-20 | ANT-2026-6DSMTXZ8 | ssrf | mastodon | high | SSRF Bypass via IPv6 Unspecified Address (`::`) in Mastodon |
5 | GHSA-f26g-jm89-4g65 | ghsa | 2026-05-20 | ANT-2026-6SNS6KMP | rce | GitoxideLabs/gitoxide | high | RCE when updating a Git submodule of a malicious repository |
6 | GHSA-j273-m5qq-6825 | ghsa | 2026-05-20 | ANT-2026-9VJ9JJXQ | path-traversal | junrar | medium | Arbitrary file write due to backslash path traversal |
7 | GHSA-mpxh-8fq3-x8mh | ghsa | 2026-05-20 | ANT-2026-H97FY6C8 | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in cliprdr_main.c:547 |
8 | GHSA-mpxh-8fq3-x8mh | ghsa | 2026-05-20 | ANT-2026-HN9XZXJ9 | heap-buffer-overflow | freerdp | medium | heap-buffer-overflow write (attacker-controlled offset, partially-controlled data via rle delta values; up to ~15kb overwrite past ptempdata with these parameters, further with larger nxdst) in planar.c:472 |
9 | GHSA-mpxh-8fq3-x8mh | ghsa | 2026-05-20 | ANT-2026-RXYVE4DZ | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in sanitizer_common_interceptors.inc:827 |
10 | GHSA-mvpx-xj7r-3p3r | ghsa | 2026-05-20 | ANT-2026-H97FY6C8 | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in cliprdr_main.c:547 |
11 | GHSA-mvpx-xj7r-3p3r | ghsa | 2026-05-20 | ANT-2026-HN9XZXJ9 | heap-buffer-overflow | freerdp | medium | heap-buffer-overflow write (attacker-controlled offset, partially-controlled data via rle delta values; up to ~15kb overwrite past ptempdata with these parameters, further with larger nxdst) in planar.c:472 |
12 | GHSA-mvpx-xj7r-3p3r | ghsa | 2026-05-20 | ANT-2026-RXYVE4DZ | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in sanitizer_common_interceptors.inc:827 |
13 | GHSA-p6r2-4hgm-m6ff | ghsa | 2026-05-20 | ANT-2026-H97FY6C8 | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in cliprdr_main.c:547 |
14 | GHSA-p6r2-4hgm-m6ff | ghsa | 2026-05-20 | ANT-2026-HN9XZXJ9 | heap-buffer-overflow | freerdp | medium | heap-buffer-overflow write (attacker-controlled offset, partially-controlled data via rle delta values; up to ~15kb overwrite past ptempdata with these parameters, further with larger nxdst) in planar.c:472 |
15 | GHSA-p6r2-4hgm-m6ff | ghsa | 2026-05-20 | ANT-2026-RXYVE4DZ | heap-buffer-overflow | freerdp | high | Heap-buffer-overflow in sanitizer_common_interceptors.inc:827 |
16 | GHSA-w52v-v783-gw97 | ghsa | 2026-05-20 | ANT-2026-H5T8XKWR | sql-injection | TryGhost/Ghost | critical | SQL injection in Content API |
17 | GHSA-x9h5-r9v2-vcww | ghsa | 2026-05-20 | ANT-2026-T44WA684 | heap-buffer-overflow | ImageMagick | high | Heap buffer overflow in MVG pattern rendering via CopyMagickString without bounds check |
18 | GHSA-xh8f-g2qw-gcm7 | ghsa | 2026-05-20 | ANT-2026-BRQZSDGZ | path-traversal | minio | medium | minio: path-traversal at cmd/xl-storage.go:3194-3218 (sink); cmd/storage-rest-server.go:1287-1326 (handler) |
05. 고위험군 취약점 분석
•
공개된 취약점 목록 중 영향도가 높은 NGINX(CVE-2026-27654)에 대한 상세분석 결과
5.1. CVE-2026-27654(8.2 HIGH, NIGINX)
•
(취약점 개요) NGINX ngx_http_dav_module size_t 언더플로우를 통한 힙 버퍼 오버플로우 (원격 DoS / 잠재적 RCE)
1) 취약점 발생원인
•
src/http/modules/ngx_http_dav_module.c 파일의 ngx_http_dav_copy_move_handler() 함수는 목적지 헤더의 URI 경로 구성 요소에서 location 프리픽스(prefix) 길이를 빼는 방식으로 목적지 URI 길이를 계산
◦
두 값 모두 size_t(부호 없는 64비트 정수) 타입
◦
목적지 경로가 location 프리픽스보다 짧을 경우, 이 뺄셈 연산에서 언더플로우가 발생하여 ~0에 가까운 거대한 값이 생성
◦
이는 결과적으로 결과적으로 memcpy 길이로 전달되어, 할당된 7바이트 크기의 힙 버퍼를 오버플로우시키고 워커 프로세스를 비정상 종료
◦
alias 지시문이 매핑된 DAV location으로 정밀하게 조작된 단 하나의 MOVE 또는 COPY 요청을 보내는 것만으로도 이 오버플로우를 유발
◦
NGINX 마스터 프로세스가 워커 프로세스를 다시 재생성하지만, 공격자가 요청을 반복하면 서버는 지속적인 크래시 루프로 인해 지속적 서비스 거부 상태에 봉착
◦
ASan(AddressSanitizer) 분석 결과에 따르면, ngx_http_dav_copy_move_handler에서 호출된 ngx_http_core_module.c:1949 라인의 memcpy에서 negative-size-param: (size=-7) 에러가 발생하는 것으로 확인
•
src/http/modules/ngx_http_dav_module.c 파일의 ngx_http_dav_copy_move_handler()에서 취약점이 발생하는 지점의 코드 수정내역
▽ 기존 코드 상에서 취약점이 발생하는 소스코드 구간
static ngx_int_t
ngx_http_dav_copy_move_handler(ngx_http_request_t *r)
{
// [중략] 파싱 및 호스트 검증 과정
destination_done:
// [기능 A] 공격자가 조작한 Destination URI의 경로와 길이를 추출
duri.len = last - p; // 예: "/x" 이므로 길이는 '2'
duri.data = p;
flags = NGX_HTTP_LOG_UNSAFE;
if (ngx_http_parse_unsafe_uri(r, &duri, &args, &flags) != NGX_OK) {
goto invalid_destination;
}
// [중략] 컬렉션 검증 및 오버라이트 헤더 처리
overwrite_done:
// [기능 B] 수신처(From) 주소를 시스템 주소로 변환
if (ngx_http_map_uri_to_path(r, &path, &root, 0) == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
// [기능 C] 원래의 r->uri를 백업하고, duri(목적지 주소)로 스왑(Swap)
uri = r->uri;
r->uri = duri; // 이제 r->uri.len 변수는 '2'가 됩니다.
// ★★★ [취약점 발생 지점] ★★★
// 패치된 코드에 있던 'if (duri.len < clcf->alias)' 가드 코드가 원래는 없음
// 검증 없이 곧바로 NGINX 코어의 경로 변환 함수를 호출
if (ngx_http_map_uri_to_path(r, ©.path, &root, 0) == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
r->uri = uri; // 원래 URI로 복구 (이미 메모리는 파괴된 후)
// [후략] 실제 파일 복사/이동 수행
}
JavaScript
복사
•
[1단계] 기본 코드 상에서는 [기능 C]가 실행되면서 NGINX의 공통 변수인 r->uri.len에 공격자가 조작한 목적지 길이인 2가 검증 없이 강제로 주입
•
[2단계] NGINX는 오염된 r->uri를 들고 코어 파일인ngx_http_core_module.c의 주소 변환 함수ngx_http_map_uri_to_path로 진입
◦
연산 공식 : r->uri.len (목적지 길이) - alias 프리픽스 길이
◦
실제 대입 : 2 - 9 = -7
◦
실행결과 : 변수 타입이 부호 없는 정수(size_t)이기 때문에 컴퓨터는 -7을 표현하지 못하고 뒤로 돌아가 0xFFFFFFFFFFFFFFF9라는 거대한 양수 발생
•
[3단계] 정수 오버플로우
◦
연산 공식 : 기존 alias 경로 길이 (13) + 언더플로우 발생 값 (0xFFFFFFFFFFFFFFF9)
◦
실제 대입 : 13 + 0xFFFFFFFFFFFFFFF9 = 0x10000000000000006
◦
실행결과 : 64비트 저장 한계를 넘어가면서 맨 앞의 1이 잘려 나가는 오버플로우가 발생하여, 최종 버퍼 길이는 고작 6 바이트로 변질되고 NGINX는 힙(Heap) 메모리에 단 7바이트(6 + 널 바이트 1)짜리 초소형 버퍼를 생성
•
[4단계] 힙메모리에서 문제 발생
◦
공간을 만든 후 데이터를 채우기 위해 복사 함수(memcpy 계열)를 호출하는데 이때 복사할 크기 인자로 [2단계]에서 생성된 거대한 값(0xFFFFFFFFFFFFFFF9)을 그대로 전달
◦
단 7바이트짜리 버퍼를 초과한 크기의 데이터가 들어오면서 인접한 힙 메모리 영역 전체가 순식간에 파괴됩되고, 이로 인해 Segmentation Fault (SIGSEGV) 에러가 터지며 NGINX 웹 서버의 워커 프로세스가 그 즉시 강제 종료
▽ 보안패치된 소스코드 구간
// 1. 코어 모듈 설정 정보(clcf)를 가져옴
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
// 2. [★ 패치 핵심 구간 ★] 취약점 방어를 위한 가드 조건문
if (clcf->alias
&& clcf->alias != NGX_MAX_SIZE_T_VALUE
&& duri.len < clcf->alias)
{
ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
"client sent invalid \"Destination\" header: \"%V\"",
&dest->value);
return NGX_HTTP_BAD_REQUEST; // 400 에러를 반환하고 즉시 종료!
}
JavaScript
복사
•
공격자가 조작한 목적지 주소의 길이(duri.len = 2)가 NGINX 설정에 박혀있는 프리픽스/alias 길이(예: 13)보다 작을 때, 뺄셈 연산(2 - 13)에서 부호 없는 정수 언더플로우가 발생
◦
clcf->alias: 현재 location 블록이 alias 기능을 사용하는지 확인
◦
duri.len < clcf->alias: 요청으로 들어온 목적지 URI의 경로 길이가 alias 프리픽스 길이보다 더 짧은지 직접 비교
◦
이 과정을 통해 목적지 주소가 프리픽스보다 짧아서 언더플로우가 발생할 수 있는 요인이 감지되면, NGINX는 하위 코어 함수인 ngx_http_map_uri_to_path를 호출하기도 전에 연산을 즉시 중단시키고 400 Bad Request 에러
2) 영향받는 버전(Affected) 및 완화버전
영향받는 버전
•
nginx 0.5.13부터 1.28.2(Stable 버전)까지
•
nginx 1.29.0부터 1.29.6(Mainline 버전)까지
◦
조건 : -with-http_dav_module 옵션으로 컴파일되고, DAV location 설정 내에서 alias 지시문을 사용하는 경우
완화버전
•
1.28.3 및 1.29.7 버전에서 수정됨 (커밋 ab4b5b8, PR #1210)
3) PoC 실행방법
•
# Docker (recommended -- builds vulnerable nginx from source):
docker compose up -d --build
python3 poc.py --target 127.0.0.1:8080
# Native (builds nginx 1.28.2 from source, no Docker):
./run.sh # non-ASan build (observes SIGSEGV crash)
./run.sh --asan # ASan build (definitive proof)
./run.sh --both # run both sequentially
# Against an existing vulnerable nginx instance:
python3 poc.py --target <HOST:PORT>
python3 poc.py --target <HOST:PORT> --no-put # if trigger file already exists
python3 poc.py --target <HOST:PORT> --verbose
JavaScript
복사
요구사항
•
Target: --with-http_dav_module 옵션으로 컴파일된 nginx, root가 아닌 alias 지시문을 사용하는 location 블록, dav_methods에 COPY 또는 MOVE가 포함되어 있음
•
Attacker: Python 3, requests 라이브러리 (pip install requests)
•
네이티브 빌드용: gcc, make, libpcre2-dev, libssl-dev, zlib1g-dev, wget



