[Security] Ghost CMS CVE-2026-26980: 700개 사이트 침해, 하버드·DuckDuckGo가 ClickFix 발사대로 악용
서론
2026년 5월 25일, 보안 인텔리전스 기업 XLab(치안신)이 Ghost CMS에서 발견된 SQL 인젝션 취약점 CVE-2026-26980을 악용한 대규모 침해 캠페인에 대한 분석 보고서를 공개했다. 피해 도메인은 700개를 훌쩍 넘겼고, 그 중에는 하버드 대학교, 옥스퍼드 대학교, 오번 대학교, 그리고 프라이버시 중심 검색 엔진 DuckDuckGo까지 포함돼 있어 업계에 충격을 줬다.
이 사건의 가장 위험한 부분은 단순한 데이터 탈취가 아니다. 공격자들은 침해한 사이트를 ClickFix 캠페인의 발사대로 활용했다. 정상적인 사이트 방문자들에게 가짜 Cloudflare 보안 팝업을 보여주고, “보안 확인을 위해 이 명령을 실행하세요”라는 안내와 함께 Windows 명령 프롬프트에 악성 코드를 직접 붙여 넣도록 유도하는 방식이다.
패치는 이미 2026년 2월 19일에 배포됐다. 하지만 3개월이 넘는 시간 동안 수천 개의 Ghost CMS 인스턴스가 업데이트 없이 인터넷에 노출된 채 방치됐고, 공격자들은 이 점을 정확히 노렸다. 보안 공지를 따라가지 못하는 자체 호스팅 환경의 고질적인 취약점이 다시 한번 대규모 피해로 이어진 사례다.
SecurityWeek, The Hacker News, BleepingComputer 등 주요 보안 매체들도 5월 25일을 전후해 일제히 이 사건을 집중 보도했다.
본론
취약점 개요: CVE-2026-26980
CVE-2026-26980은 Ghost CMS의 Content API에서 발생하는 블라인드(Blind) SQL 인젝션 취약점이다.
| 항목 | 내용 |
|---|---|
| CVE | CVE-2026-26980 |
| CVSS 점수 | 9.4 (Critical) |
| 영향 버전 | Ghost 3.24.0 ~ 6.19.0 |
| 패치 버전 | 6.19.1 (2026-02-19) |
| 공격 벡터 | 네트워크, 인증 불필요 |
| 주요 피해 | DB 내 Admin API Key 포함 전체 데이터 노출 |
Content API는 Ghost 블로그 플랫폼이 콘텐츠를 외부에 제공할 때 사용하는 공개 엔드포인트다. 별도 인증 없이 접근할 수 있도록 설계된 이 엔드포인트에서 SQL 인젝션이 가능했다는 점이 문제의 핵심이다. 공격자는 추가 자격증명 없이도 데이터베이스 전체를 훑어볼 수 있었고, 특히 Ghost Admin API Key를 추출할 수 있어 사이트 전체에 대한 관리자 권한을 획득하는 것이 가능했다.
블라인드 SQL 인젝션 방식이기 때문에 응답에 SQL 에러 메시지가 노출되지 않는다. 공격 쿼리를 수천 번 반복 전송하는 자동화 방식으로 데이터를 추출하는데, 요청 패턴을 분산시켜 로그 기반 탐지를 회피하는 기법도 함께 사용됐다.
공격 체인: SQL 인젝션에서 ClickFix까지
XLab이 분석한 전체 공격 흐름은 다음과 같다.
1
2
3
4
5
6
7
8
9
10
Step 1. CVE-2026-26980 자동화 스캔 → Ghost CMS 대상 DB 블라인드 SQLi
Step 2. Admin API Key 추출 (Ghost Admin API 전체 권한 획득)
Step 3. Admin API를 통해 정상 게시물에 악성 JS 코드 주입
Step 4. 방문자 브라우저에서 1단계 경량 로더(JS) 실행
Step 5. 공격자 인프라에서 2단계 클로킹(Cloaking) 스크립트 수신
Step 6. 방문자 지문 채취 (IP, 브라우저, OS, 기업망 여부 등)
Step 7. '공격 가치 있는 대상'으로 분류된 방문자에게만 ClickFix 페이로드 노출
Step 8. 가짜 Cloudflare CAPTCHA 팝업(iframe) 표시
Step 9. "보안 확인: 아래 명령을 실행하세요" → 클립보드에 악성 명령 삽입
Step 10. 방문자가 Win+R → cmd → Ctrl+V → Enter → 악성 스크립트 실행
1단계 로더가 매우 경량으로 설계돼 기존 보안 도구에서 탐지하기 어려웠다. 2단계 클로킹 스크립트가 방문자를 지문 채취한 뒤 “공격 가치 있는 대상”으로 판별된 경우에만 ClickFix 페이로드를 노출하는 방식 덕분에, 이 캠페인이 상당 기간 탐지되지 않을 수 있었다.
ClickFix 기법이 왜 위험한가
ClickFix는 2025년 후반부터 급격히 확산된 소셜 엔지니어링 기법이다. 핵심은 사용자가 스스로 악성 명령을 실행하도록 유도한다는 점이다.
일반적인 공격 흐름:
- 사용자가 신뢰할 만한 사이트(이번 사건에서는 하버드, DuckDuckGo 등)를 방문
- “보안 확인 필요” 또는 “CAPTCHA 완료를 위해 아래를 따르세요”라는 팝업 노출
- 팝업이 클립보드에 악성 PowerShell/CMD 명령을 자동 복사
- 사용자에게
Win+R→cmd→Ctrl+V→Enter를 안내 - 명령 실행 → 원격 악성 스크립트 다운로드 및 실행, 크리덴셜 탈취, RAT 설치 등
악성 첨부 파일을 열거나 exe를 실행하는 것이 아니라, 정상 Windows 기능을 통해 명령이 실행된다. 안티바이러스나 EDR 솔루션이 초기 페이로드를 탐지하기 어렵고, 사용자 입장에서 “내가 직접 실행한 것”이기 때문에 심리적 방어도 낮아진다.
하버드나 DuckDuckGo처럼 신뢰도가 높은 사이트에서 이 팝업이 나타났을 때, 방문자가 이를 정상적인 보안 절차로 인식할 가능성이 매우 높다는 점이 이번 캠페인의 치명적인 설계였다.
피해 규모와 타임라인
| 날짜 | 이벤트 |
|---|---|
| 2026-02-19 | Ghost 6.19.1 패치 배포 (CVE-2026-26980 수정) |
| 2026-02-27 | SentinelOne, 익스플로잇 상세 및 탐지 가이드 공개 |
| 2026-05-07 | XLab, 1차 대규모 자동화 캠페인 탐지 시작 |
| 2026-05-16 | 2차 공격 웨이브 감지, 피해 도메인 급증 |
| 2026-05-25 | XLab 분석 보고서 공개, SecurityWeek·THN·BleepingComputer 일제 보도 |
XLab이 확인한 피해 도메인은 700개 이상이다. 업종별로 보면 대학 포털, AI/SaaS 기업, 언론사, 핀테크 기업, 보안 기관, 개인 블로그까지 다양하게 포함됐다. 특히 하버드·옥스퍼드·DuckDuckGo 등 고신뢰 도메인이 침해됐다는 사실은, 방문자가 팝업을 정상으로 인식할 가능성을 극대화한다는 점에서 단순한 피해 규모 이상의 의미를 갖는다.
캠페인이 자동화 방식으로 인터넷에 노출된 모든 취약한 Ghost 인스턴스를 스캔하는 방식으로 운영됐기 때문에, 소규모 개인 블로그도 예외가 아니었다.
패치 적용이 왜 3개월이나 지연됐나
패치가 2월 19일에 배포됐음에도 5월까지 수천 개의 인스턴스가 미패치 상태로 방치된 데는 구조적인 이유가 있다.
Ghost 자체 호스팅의 업데이트 구조
WordPress와 달리 Ghost는 강제 자동 업데이트 메커니즘이 없다. 자체 서버(VPS, Docker 등)에서 Ghost를 운영하는 경우, 운영자가 직접 공식 보안 공지를 모니터링하고 업그레이드 명령을 실행해야 한다. 소규모 블로그나 관리가 소홀한 인스턴스는 보안 공지 자체를 인지하지 못하는 경우가 많다.
Content API는 차단 불가
/ghost/api/content/ 경로는 Ghost의 핵심 공개 인터페이스다. 이 경로를 방화벽으로 차단하면 사이트가 정상 동작하지 않는다. 즉, 패치 이외에는 근본적인 임시방편이 없다는 뜻이다.
탐지의 어려움
블라인드 SQL 인젝션 특성상 응답에 에러가 노출되지 않아 운영자가 서버 로그만으로 공격을 인식하기 어렵다. 공격이 진행되는 동안 사이트 자체는 정상 동작하고 있어, 관리자가 인지하는 시점이 크게 늦어진다.
즉시 취해야 할 조치
Ghost CMS를 자체 호스팅하는 모든 운영자는 지금 당장 다음 순서로 대응해야 한다.
1
2
3
4
5
6
7
8
# 현재 Ghost 버전 확인
ghost version
# 6.19.1 미만이면 즉시 업그레이드
ghost update
# 업그레이드 후 버전 재확인
ghost version
업그레이드 이전에 Admin API Key가 노출됐을 가능성이 있다면, Ghost 관리자 패널에서 API Key를 즉시 재발급해야 한다. 또한 발행된 게시물 전체를 검토해 악성 JavaScript 삽입 여부를 확인하고, 삽입이 확인된 경우 해당 게시물의 모든 방문자에게 공지가 필요하다.
정리
- CVE-2026-26980(CVSS 9.4)은 Ghost CMS Content API의 블라인드 SQL 인젝션으로, 인증 없이 데이터베이스 전체를 열람할 수 있다.
- 패치(Ghost 6.19.1)는 2026년 2월에 배포됐지만, 3개월 이상 지난 5월까지도 700개 이상의 사이트가 미패치 상태로 침해됐다.
- 공격자는 탈취한 Admin API Key로 정상 게시물에 악성 JS를 주입해, 방문자에게 ClickFix 방식의 2차 공격을 가했다.
- 하버드·옥스퍼드·DuckDuckGo 등 고신뢰 도메인이 침해 사이트에 포함되어, 방문자가 가짜 Cloudflare 팝업을 정상으로 인식할 위험이 컸다.
- Ghost 자체 호스팅 운영자는 즉시 6.19.1 이상으로 업그레이드하고, Admin API Key 재발급 및 게시물 무결성 점검이 필요하다.
- ClickFix 기법 자체가 정교해지고 있으며, 신뢰 도메인 기반 소셜 엔지니어링 공격에 대한 사용자 교육이 중요해지고 있다.
Reference
[Ghost CMS SQL Injection Hits 700 Sites TechTimes (2026-05-25)](https://www.techtimes.com/articles/317134/20260525/ghost-cms-sql-injection-hits-700-sites-harvard-duckduckgo-serve-fake-cloudflare-malware.htm) [Ghost CMS Mass Compromised via CVE-2026-26980 XLab/Qianxin 원본 분석](https://blog.xlab.qianxin.com/ghost-cms-mass-compromised-via-cve-2026-26980-now-fueling-clickfix-attacks/) [Ghost CMS CVE-2026-26980 Exploited to Hijack 700+ Sites The Hacker News](https://thehackernews.com/2026/05/ghost-cms-cve-2026-26980-exploited-to.html) [Ghost CMS Vulnerability Exploited to Hack Over 700 Websites SecurityWeek](https://www.securityweek.com/ghost-cms-vulnerability-exploited-to-hack-over-700-websites/) [CVE-2026-26980 Detail NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-26980) [Ghost CMS Content API Blind SQL Injection SonicWall](https://www.sonicwall.com/blog/ghost-cms-content-api-blind-sql-injection)