소개 '스위스 아미 나이프'가 당신을 자를 때
2025년 12월 9일, Microsoft 보안 대응 센터(MSRC)는 월간 '패치 화요일'에 중요한 업데이트를 발표했습니다. 윈도우 파워셸의 0일 취약점로 추적 CVE-2025-54100.
와 CVSS 점수 7.8점(높음)이 취약점은 레거시 서버부터 최신 Windows 11 빌드에 이르기까지 광범위한 Windows 에코시스템에 영향을 미칩니다. PowerShell은 OS 패브릭에 깊이 통합되어 있기 때문에 이 결함은 공격자에게 신뢰할 수 있는 기본 시스템 도구를 사용하여 악성 코드를 실행할 수 있는 위험한 "로빙 오프 더 랜드(Living-off-the-Land, LotL)"의 기회를 제공합니다.
서버 팜을 관리하는 시스템 관리자이든 보안 연구원이든 이 패치를 무시하는 것은 선택 사항이 아닙니다. 이 가이드에서는 결함에 대한 기술적 분석, 공식 패치 매트릭스, 스크립트를 안전하게 실행하는 데 필요한 코드 리팩터링에 대해 설명합니다.

기술 심층 분석: CVE-2025-54100의 메커니즘
이 문제의 심각성을 이해하려면 근본적인 약점을 살펴봐야 합니다: CWE-77(명령에 사용된 특수 요소의 부적절한 무력화).
취약성 논리
핵심 문제는 명령줄 인터프리터에 전달하기 전에 사용자 입력을 처리하는 Windows PowerShell의 방식에 있습니다. 응용 프로그램이나 스크립트가 적절한 필터링 없이 신뢰할 수 없는 입력을 사용하여 PowerShell 명령을 구성하면 다음과 같은 문제가 발생할 수 있습니다. 명령 주입.
공격 시나리오(개념 증명)
면책 조항: 다음 코드는 교육 목적으로만 제공됩니다.
사용자 입력에 따라 로그 파일을 읽도록 설계된 합법적인 관리 스크립트를 상상해 보세요:
PowerShell
# 취약한 패턴 $사용자 입력 = 읽기-호스트 "로그 파일 이름 입력"

입력이 명령 문자열에 직접 연결됩니다.
Invoke-Expression "Get-Content C:\Logs\$UserInput"`
표준 시나리오에서 사용자는 app.log를 입력합니다.
그러나 공격자가 패치가 적용되지 않은 시스템에서 CVE-2025-54100을 익스플로잇할 경우 입력할 수 있습니다:
app.log; 시작-프로세스 calc.exe
구문 분석기가 세미콜론(;)는 이를 두 개의 서로 다른 명령으로 해석합니다:
- 로그를 읽어보세요:
Get-Content C:\\Logs\\app.log - 페이로드를 실행합니다:
시작-프로세스 calc.exe(실제 공격에서는 랜섬웨어 다운로더 또는 C2 비콘이 될 것입니다).
공격 벡터: "로컬"이지만 치명적
Microsoft는 이를 "로컬" 공격 벡터로 분류합니다. 이는 공격자가 일반적으로 필요로 하는 것을 의미합니다:
- 시스템에 대한 낮은 수준의 액세스, 또는
- 사용자가 악성 파일을 실행하도록 유도하는 행위(소셜 엔지니어링/피싱).
성공하면 이 주입을 활용하여 권한을 에스컬레이션하거나 네트워크에서 횡방향으로 이동할 수 있습니다.

패치 매트릭스: 중요 업데이트 식별
Microsoft에서 긴급 보안 업데이트를 릴리스했습니다. IT 관리자는 WSUS, SCCM 또는 수동 다운로드를 통해 다음 KB를 즉시 우선순위로 적용해야 합니다.
| OS 버전 | 심각도 | 중요 KB 패치 ID | 배포 참고 사항 |
|---|---|---|---|
| Windows Server 2025 | 높음 | KB5072033 | 재부팅 필요 |
| Windows 11(24H2 / 25H2) | 높음 | KB5074204 | 누적 업데이트 |
| Windows Server 2022 | 높음 | KB5074204 | 우선 설치 |
| Windows Server 2019 | 높음 | KB5074353 | – |
| Windows 10 (22H2) | 높음 | KB5071546 | 보안 전용 업데이트 사용 가능 |
| Windows Server 2012 R2 | Medium | KB5071544 | ESU(확장 지원) 전용 |
중요 경고: 이 패치는 핵심 PowerShell 바이너리를 수정하므로 시스템을 재부팅해야 합니다. 서비스 중단을 방지하기 위해 유지 관리 기간을 적절히 예약하세요.
"잡았다": 패치 후 깨진 스크립트 수정하기
보안은 보통 편의성을 희생하는 대가를 치릅니다. CVE-2025-54100에 대한 업데이트(특히 내부의 KB5074204 그리고 KB5074353)는 웹 요청에 대해 더 엄격한 보안 제어를 도입합니다.
문제: Invoke-WebRequest 실패
패치를 적용한 후 자동화 스크립트가 다음 오류와 함께 실패하는 것을 볼 수 있습니다:
"Internet Explorer 엔진을 사용할 수 없거나 Internet Explorer의 첫 실행 구성이 완료되지 않아 응답 콘텐츠를 구문 분석할 수 없습니다."
이는 Microsoft가 공격 표면을 줄이기 위해 마침내 PowerShell과 레거시 Internet Explorer 구문 분석 엔진 간의 연결을 끊었기 때문에 발생하는 문제입니다.
수정: 코드 리팩토링
DOM 구문 분석을 위해 IE에 의존하지 않도록 스크립트를 업데이트해야 합니다. 해결책은 기본 구문 분석 모드로 전환합니다.
깨진 코드(레거시)
PowerShell
# 이것은 현재 제한되거나 제거된 IE 엔진에 의존합니다. $response = Invoke-WebRequest -Uri """ Write-Output $response.Content
보안 코드(모범 사례)
PowerShell
# 속도, 보안 및 호환성을 위해 -UseBasicParsing 스위치를 추가합니다. $response = Invoke-WebRequest -Uri "" -UseBasicParsing Write-Output $response.Content
관리자를 위한 프로 팁:
IDE(VS Code/ISE)에서 정규식 검색을 사용하여 스크립트 리포지토리를 스캔하세요:
- 찾기:
Invoke-WebRequest\\s+(?!.*-UseBasicParsing) - 액션: 추가
UseBasicParsing를 이러한 인스턴스에 추가합니다.
심층 방어: 패치 너머: 심층 방어
패치는 사후 대응적입니다. 미래의 0데이로부터 보호하려면 PowerShell에 대해 "심층 방어" 전략을 채택해야 합니다.
A. 제한된 언어 모드 적용
관리자가 아닌 사용자의 경우 PowerShell은 다음 위치에서 실행해야 합니다. 제한된 언어 모드. 이로 인해 Windows API를 호출하거나 임의의 .NET 코드를 컴파일하는 기능이 심각하게 제한됩니다.
PowerShell
`# 현재 모드 확인 $ExecutionContext.SessionState.LanguageMode
표준 사용자를 위한 타겟 출력: ConstrainedLanguage`
B. 스크립트 블록 로깅 활성화
공격자들은 메모리에서 실행되기 때문에(파일 없이) PowerShell을 좋아합니다. 이를 포착하려면 실행되는 실제 코드를 로깅해야 합니다.
- GPO 경로:
컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > Windows PowerShell > PowerShell 스크립트 블록 로깅 켜기.
C. SIEM 탐지 규칙
SOC 모니터링 규칙을 업데이트하여 잠재적인 익스플로잇 시도를 표시하세요:
- 프로세스 계층 구조: 다음과 같은 경우 알림
powershell.exe은 Office 앱(Word, Excel)에서 생성됩니다. - 의심스러운 인수: 심하게 난독화된 명령어나
EncodedCommand. - 이벤트 ID 4104: 스크립트 블록 로그에서 다음과 같은 키워드를 검색합니다.
호출 표현식또는IEX네트워크 통화와 결합됩니다.
결론
CVE-2025-54100의 공개는 이를 극명하게 상기시켜 줍니다: 신원 및 구성이 새로운 경계입니다. 즉각적인 해결책은 12월 KB(KB5072033/KB5074204)를 적용하는 것이지만, 장기적인 해결책은 네이티브 도구의 남용을 방지하는 환경을 강화하는 것입니다.
실행 계획:
- 감사: 네트워크에서 패치되지 않은 Windows 엔드포인트를 검색하세요.
- 패치: 12월 보안 업데이트를 즉시 배포하세요.
- 리팩터링: 자동화 스크립트를 업데이트하여 다음을 사용하세요.
UseBasicParsing.
셸을 안전하게 보호하세요.

