
CVE-2026-77680에 대한 방어적 분석 문서: libsoup HTTP Range 알고리즘 복잡도 DoS 취약점으로, CVSS 분석, 킬 체인 매핑, 탐지 및 완화 지침을 다룹니다.
평가: 중간 심각도 · CVSS v3.1: 5.3 · 주요 영향: 가용성 (CPU 고갈 / 서비스 거부)
이 저장소는 libsoup의 HTTP Range 헤더 처리에 존재하는 알고리즘 복잡도 결함인 CVE-2026-77680의 기술적 동작, 위험, 완화 방안, 그리고 사이버 킬 체인(Cyber Kill Chain) 매핑을 문서화합니다.
CVE-2026-77680은 libsoup의 HTTP Range 병합(coalescing) 로직에 존재하는 서비스 거부 취약점입니다. 영향을 받는 버전에서는 반복적이고 충족 가능한 다수의 바이트 범위를 처리할 때 이차(quadratic) 연산이 유발될 수 있습니다. 이 문제는 이전 CVE-2025-32907 수정 이후에도 지속되는데, 병합 코드가 여전히 배열 요소를 개별적으로 제거하고 있었고, 각 제거 작업은 메모리 내의 나머지 요소들을 이동시킬 수 있기 때문입니다.
원격의 비인증 공격자는 영향을 받는 SoupServer 경로를 사용하는 서버 애플리케이션에 조작된 HTTP 요청을 전송할 수 있습니다. 취약한 조건에서는 요청 처리가 불균형적인 CPU 시간을 소모하여 다른 요청을 지연시킬 수 있습니다. 보고된 영향은 가용성에 한정되며, 이 문제는 메모리 손상이나 정보 노출로 설명되지 않습니다.
업스트림 수정은 반복적인 요소 제거를 제자리(in-place) 선형 시간 압축으로 대체하고, 200개를 초과하는 범위를 요청하는 Range 헤더를 거부합니다. 운영자는 경계(perimeter) 우회 조치에만 의존하지 말고 적절한 벤더 보안 업데이트를 설치해야 합니다.
| 필드 | 세부 정보 |
|---|---|
| CVE | CVE-2026-77680 |
| 구성 요소 | GNOME libsoup (HTTP 라이브러리) |
| 약점 | CWE-407 — 비효율적인 알고리즘 복잡도 |
| 심각도 | 중간 |
| CVSS v3.1 | 5.3 |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| 공격 전제 조건 | 영향을 받는 서비스에 대한 네트워크 접근; 인증 또는 사용자 상호작용 불필요 |
| 주요 영향 | CPU 고갈 및 서비스 가용성 저하 |
| 관련 이슈 | CVE-2025-32907 |
| 업스트림 수정 | GNOME libsoup 머지 리퀘스트 !550 |
HTTP 바이트 범위 요청을 통해 클라이언트는 리소스의 선택된 부분을 요청할 수 있습니다. 취약한 코드 경로에서 libsoup은 겹치거나 중복되는 범위를 병합합니다. 연속된 GArray의 중간에서 요소를 제거하려면 나머지 요소들을 이동해야 할 수 있습니다. 다수의 범위를 처리하는 동안 이 작업을 반복하면 선형 연산이 아닌 O(n²) 연산이 발생할 수 있습니다.
보고된 서버 측 경로에는 libsoup/server/http1/soup-server-message-io-http1.c의 handle_partial_get()이 포함되며, 범위 파싱/병합은 libsoup/soup-message-headers.c의 soup_message_headers_get_ranges_internal()에서 이루어집니다. 이 문제는 애플리케이션이 영향을 받는 서버 경로를 사용하고 비어 있지 않은 본문을 가진 적절한 응답을 반환할 때 관련이 있습니다.
범위의 개수는 충분히 낮은 범위 개수 상한이 아닌 요청 헤더 제한에 의해 제약될 수 있습니다. 결과적으로 단일 요청이 과도한 처리를 유발할 수 있으며, 반복 요청은 가용성 영향을 증폭시킬 수 있습니다. 정확한 영향은 배포된 버전, 요청 제한, 애플리케이션 동작, 서버 용량에 따라 달라집니다.
공개된 CVSS v3.1 점수는 5.3 (중간) 입니다.
중간 기본 점수가 이 문제를 무시해도 된다는 의미는 아닙니다. 인터넷 노출, 공유 인프라, 반복 요청은 서비스 가용성을 운영상 중요하게 만들 수 있습니다.
libsoup의 존재만으로 취약점을 추론하지 마십시오. 특정 패키지 빌드와 수정 사항이 적용되었는지 확인하십시오.
록히드 마틴 사이버 킬 체인은 침입 지향 모델입니다. 이 매핑은 그 단계를 서비스 거부 시나리오에 맞게 조정한 것으로, 모든 단계가 이 취약점에 대해 별개의 또는 필수적인 단계를 나타내는 것은 아닙니다.
| 단계 | 이 시나리오에서 가능한 활동 | 방어 기회 |
|---|---|---|
| 1. 정찰 | 접근 가능한 애플리케이션을 식별하고 그 HTTP 스택 또는 동작을 추론합니다. | 불필요한 노출을 줄이고, 자산 및 소프트웨어 인벤토리를 유지하며, 불필요한 버전 정보 공개를 피합니다. |
| 2. 무기화 | 과도한 수의 반복되거나 중복되는 Range 값을 포함한 HTTP 요청을 준비합니다. | 라이브러리를 패치하고, 범위 개수를 검증 및 제한하며, 안전한 요청 파싱 제한을 적용합니다. |
| 3. 전달 | 노출된 서비스로 조작된 요청을 전송합니다. | 네트워크 제어, 리버스 프록시 보호, 연결 제한, 요청 속도 제어를 사용합니다. |
| 4. 익스플로잇 | 취약한 서버 경로에서 비용이 많이 드는 범위 병합 작업을 유발합니다. | 벤더/업스트림 수정 사항을 배포하고, 비용이 많이 드는 처리 전에 과도한 범위를 거부합니다. |
| 5. 설치 | 일반적으로 해당되지 않음: 이는 리소스 고갈 결함이며 그 자체로 악성코드를 설치하지 않습니다. | 후속 활동을 모니터링하고, 서비스 중단이 호스트 침해를 의미한다고 가정하지 않습니다. |
| 6. 명령 및 제어 | 기본적인 DoS 동작에는 필요하지 않습니다. 봇넷이나 원격 컨트롤러를 사용하여 반복 트래픽을 조정할 수 있지만, 이는 CVE의 본질적인 부분이 아닙니다. | 여러 소스의 트래픽을 상호 연관시키고, 적절한 경우 업스트림 DDoS 보호를 적용합니다. |
| 7. 목표에 대한 행동 | 응답 시간을 저하시키거나 정당한 사용자의 서비스 접근을 거부합니다. | 가용성과 CPU를 모니터링하고, 로그를 보존하며, 사고 대응 및 복구 절차를 적용합니다. |
주요 결과는 서비스 성능 저하 또는 서비스 거부이며, 코드 실행이 아닙니다. 이 구분은 트리아지에 중요합니다. 가용성 제어와 패치를 우선시하되, 별도의 침해 지표가 있는지 로그와 텔레메트리를 계속 확인하십시오.
이러한 제어는 노출을 줄이지만 수정 사항 설치를 대체하지는 않습니다.
환경에 배포된 정확한 운영 체제 및 패키지 빌드에 대한 벤더 권고를 사용하십시오.
이 문서는 공개 취약점 권고 및 업스트림 참고 자료를 기반으로 한 방어적 보안 분석입니다. 이는 익스플로잇이나 개념 증명이 아닙니다. 제품 적용 가능성과 패치 상태는 대상 환경의 정확한 소프트웨어 빌드 및 벤더 권고와 대조하여 확인해야 합니다.
취약점 관리, 위협 분석, 방어적 보안 학습을 위해 작성되었습니다.