- Microsoft는 Windows 커널 크래시 덤프에서 CrowdStrike 장애의 전역 패턴을 확인했고, CrowdStrike의 CSagent.sys 드라이버에서 발생한 read out-of-bounds 메모리 오류와 일치한다고 봄
- CSagent.sys는 파일 생성·수정과 named pipe 생성 같은 이벤트를 받는 파일 시스템 필터 드라이버였으며, 콘텐츠 업데이트가 관련 센서 로직을 바꾼 정황과 연결됨
- 장애 당시 시스템에는 CrowdStrike 드라이버 모듈 4개가 로드되어 있었고, 이 중 일부는 초기 부팅이나 동적 콘텐츠 업데이트와 맞물려 시스템 안정성에 직접 영향을 줄 수 있었음
- 보안 제품이 커널 드라이버를 쓰는 이유는 초기 부팅 위협 탐지, 시스템 전역 가시성, 차단, 성능, 변조 방지이지만, 커널 모드는 격리와 복구가 제한되어 가용성 리스크가 커짐
- Microsoft는 보안 제품이 커널 사용을 줄이고 사용자 모드 보호, ETW, AMSI, App Control for Business, Memory integrity, Device Health Attestation 같은 Windows 내장 기능으로 보안과 신뢰성을 함께 높여야 한다고 제안함
CrowdStrike 장애의 크래시 원인
- Microsoft는 Windows Error Reporting(WER) 커널 크래시 덤프를 분석해 CrowdStrike 장애와 관련된 전역 크래시 패턴을 확인함
- 분석에는 무료로 제공되는 WinDBG Kernel Debugger와 확장 도구가 사용됐으며, 크래시 덤프가 있는 고객은 같은 절차를 재현할 수 있음
- 크래시 덤프의 핵심 모듈은 csagent.sys였음
IMAGE_NAME: csagent.sysMODULE_NAME: csagentPROCESS_NAME: System- 잘못된 읽기 주소는
ffff840500000074로 표시됨
- 이 관찰은 CrowdStrike의 Preliminary Post Incident Review와 일치함
- 원인은 CrowdStrike가 개발한 CSagent.sys 드라이버의 read out-of-bounds access violation
- WER 데이터는 압축된 상태만 제공하므로, 크래시 이전의 더 넓은 명령어 범위를 역방향으로 디스어셈블하는 데 한계가 있음
CSagent.sys가 하던 일
- CSagent.sys 모듈은 안티멀웨어 에이전트에서 흔히 쓰는 파일 시스템 필터 드라이버로 등록되어 있었음
- 파일 시스템 필터 드라이버는 여러 파일 작업 알림을 받을 수 있음
- 파일 생성
- 파일 수정
- 브라우저를 통해 다운로드된 새 파일의 디스크 저장
- 이런 필터는 시스템 동작을 감시하는 보안 솔루션의 신호 수집 지점으로 쓰일 수 있음
- CrowdStrike의 콘텐츠 업데이트 일부는 named pipe 생성 관련 데이터의 센서 로직을 바꿨고, 파일 시스템 필터 드라이버 API는 시스템에서 named pipe 생성 같은 활동이 발생할 때 호출될 수 있음
- 크래시 덤프에는 CrowdStrike 분석에서 언급된 control channel file version 291도 있었고, 해당 파일이 읽혔음을 보여줌
- 파일 경로는
\Windows\System32\drivers\CrowdStrike\C-00000291-00000000-00000032.sys - 이 파일이 관찰된 access violation과 어떻게 연결되는지는 추가 드라이버 디버깅이 필요하며, Microsoft는 이를 분석 범위 밖으로 둠
- 파일 경로는
장애 당시 CrowdStrike 드라이버 구성
- 크래시 당시 시스템에서 CrowdStrike가 제공한 다른 드라이버의 존재 여부도 덤프로 확인 가능했음
- Microsoft 분석에서 확인된 CrowdStrike 드라이버 모듈은 4개임
CSFirmwareAnalysis.syscspcm4.sysCSBoot.syscsagent.sys
CSBoot.sys는 CrowdStrike Falcon Sensor Boot Driver로 등록되어 있었고, Early-Launch 그룹에 속함csagent.sys는FSFilter Activity Monitor그룹에 속하며FltMgr에 의존함- Microsoft는 고유한 스택과 크래시 속성을 사용해 이 CrowdStrike 프로그래밍 오류로 생성된 Windows 크래시 보고서를 식별할 수 있었음
- 크래시 보고서를 생성한 장치 수는 Microsoft가 이전에 공유한 영향 장치 수의 부분집합임
- Windows 크래시 보고서는 샘플링되며, Microsoft로 크래시 업로드를 선택한 고객에게서만 수집됨
- 드라이버 소유자는 Hardware Dev Center analytics 대시보드에서 신뢰성 데이터를 평가할 수 있음
보안 제품이 커널 드라이버를 쓰는 이유
- CrowdStrike와 Microsoft를 포함한 여러 보안 벤더는 커널 드라이버 아키텍처를 사용함
-
가시성과 차단
- 커널 드라이버는 시스템 전역 가시성을 제공함
- 사용자 모드 애플리케이션보다 먼저 로드될 수 있는 boot kit과 root kit 같은 위협을 탐지하기 위해 초기 부팅 단계에서 로드될 수 있음
- Windows는 프로세스·스레드 생성 콜백, 파일 생성·삭제·수정 이벤트를 감시하는 필터 드라이버 같은 기능을 제공함
- 드라이버는 파일 생성이나 프로세스 생성 같은 활동을 차단할지 결정하는 콜백을 받을 수 있음
- 많은 벤더가 NDIS driver class를 이용해 커널에서 네트워크 정보를 수집함
-
성능
- 높은 처리량의 네트워크 활동 분석이나 데이터 수집은 커널 드라이버에서 성능상 이점을 얻을 수 있음
- Microsoft는 커널 모드 밖에서도 데이터 수집과 분석을 최적화할 수 있는 시나리오가 많다고 봄
-
변조 방지
- 보안 제품은 멀웨어, 표적 공격, 악의적 내부자가 관리자 권한을 가진 경우에도 소프트웨어가 비활성화되지 않기를 원함
- Windows는 Early Launch Antimalware(ELAM)로 표시된 드라이버를 부팅 초기에 실행하는 메커니즘을 제공함
- CrowdStrike의
CSBoot드라이버는 ELAM으로 서명되어 부팅 시퀀스 초기에 로드될 수 있음
커널 모드의 신뢰성 트레이드오프
- 커널 드라이버는 가시성, 차단, 성능, 변조 방지 이점을 주지만 복원력 비용이 큼
- 가장 신뢰되는 수준에서 실행되는 커널 드라이버는 격리와 복구 능력이 본질적으로 제한됨
- 커널 수준 코드에는 광범위한 검증이 필요함
- 일반 사용자 애플리케이션처럼 실패 후 재시작할 수 없음
- 이 특성은 모든 운영체제에 공통적임
- Microsoft는 복잡한 Windows 핵심 서비스를 커널에서 사용자 모드로 옮기는 투자를 해왔음
- 예시로 폰트 파일 파싱을 kernel to user mode로 이동함
- 보안 도구는 커널 모드에서 최소 센서만 실행해 데이터 수집과 차단을 맡기고, 업데이트 관리·콘텐츠 파싱 등 나머지 기능은 복구 가능한 사용자 모드에서 격리해 실행할 수 있음
Windows가 제공하는 대체 보호·확장 메커니즘
- Windows는 보안 제품이 필요한 커널 코드 양을 줄일 수 있는 사용자 모드 보호 방식을 제공함
- 변조 방지와 격리에 사용할 수 있는 기능
- 이벤트 가시성을 위한 사용자 모드 인터페이스와 이벤트
- Microsoft는 Microsoft Virus Initiative(MVI)를 통해 서드파티 보안 벤더와 협력함
- Windows 업데이트 호환성 확인
- 성능 개선
- 신뢰성 문제 대응
- ELAM과 Protected Processes 같은 안티멀웨어 플랫폼 기능 접근
- Patch Guard는 안티멀웨어 같은 커널 드라이버 유형의 파괴적 동작을 막는 런타임 보호를 제공함
드라이버 검증과 배포 안전장치
- Microsoft Windows Hardware Quality Labs(WHQL)로 서명되는 모든 드라이버는 테스트와 품질 확인을 거쳐야 함
- 요구되는 확인에는 여러 기법이 포함됨
- 관련 도구는 모든 드라이버 개발자가 사용하는 Windows Driver Kit에 포함됨
- WHQL 서명 드라이버는 승인 전 Microsoft의 수집 검사와 멀웨어 검사를 통과해야 함
- 서드파티 벤더가 Windows Update를 통해 드라이버를 배포하면 Microsoft의 flighting과 점진적 롤아웃 절차도 거침
- 목적은 품질을 관찰하고 광범위한 릴리스에 필요한 기준을 충족하는지 확인하는 것임
Windows를 더 높은 보안 모드로 배포하는 방법
- Windows는 개방적이고 범용적인 OS지만, 내장 도구를 사용해 더 잠긴 보안 구성으로 배포할 수 있음
- Windows 11에는 기본 활성화된 보안 기능이 다수 포함됨
- TPM 2.0
- Secure Boot
- Virtualization-based security(VBS)
- Memory integrity
- Kernel DMA protection
- BitLocker 또는 Device Encryption
- Credential Guard
- Microsoft Defender SmartScreen
- Microsoft Vulnerable Driver Blocklist
- Windows의 기본 자기 보호 기능
- Secure Boot: 초기 부팅 멀웨어와 rootkit 방지에 도움
- Measured Boot: TPM 기반 부팅 속성 측정 제공
- Memory integrity 또는 HVCI: 커널에서 동적 코드 런타임 생성을 방지하고 제어 흐름 무결성 보장에 도움
- Vulnerable driver blocklist: 기본 활성화되고 OS에 통합되며 Microsoft가 관리함
- Protected Local Security Authority: Windows 11에서 기본 활성화되어 자격 증명을 보호함
- Microsoft Defender Antivirus: Windows에서 기본 활성화되어 OS 전반의 안티멀웨어 기능을 제공함
보안과 신뢰성을 위한 운영 권장사항
- Windows 내장 보안 기능은 MITRE ATT&CK 프레임워크에 나타나는 공격을 막는 데 도움이 되며, 비용과 복잡성을 줄일 수 있음
- App Control for Business는 신뢰된 앱이나 업무상 중요한 앱만 허용하는 보안 정책을 만들 수 있음
- 거의 모든 멀웨어와 “living off the land” 유형 공격을 결정적으로 방지하도록 정책을 구성할 수 있음
- 조직에서 허용한 커널 드라이버만 관리형 엔드포인트에 로드되도록 지정할 수 있음
- Memory integrity와 특정 허용 목록 정책을 함께 사용하면 VBS를 통해 Windows 커널을 추가로 보호할 수 있음
- App Control for Business와 함께 쓰면 커널 멀웨어나 boot kit의 공격면을 줄일 수 있음
- 신뢰성에 영향을 줄 수 있는 드라이버를 제한하는 데도 사용할 수 있음
- 표준 사용자로 실행하고 필요한 경우에만 권한을 상승하는 운영 방식은 여러 MITRE ATT&CK 기법을 완화함
- Device Health Attestation(DHA)은 하드웨어 기반 측정을 포함해 장치가 올바른 보안 정책을 갖췄는지 모니터링함
향후 Windows 보안 확장 방향
- Microsoft는 안티멀웨어 생태계가 Windows 내장 기능을 활용해 보안과 신뢰성을 함께 높이도록 협력할 계획임
- 지원 방향은 네 가지로 정리됨
- 보안 제품 업데이트를 더 안전하게 수행하기 위한 안전한 롤아웃 가이드, 모범 사례, 기술 제공
- 중요한 보안 데이터 접근에 필요한 커널 드라이버 의존도 축소
- 최근 발표한 VBS enclaves 같은 격리·변조 방지 기능 강화
- Windows 기본 보안 기능의 상태를 기반으로 머신 보안 상태를 판단하는 high integrity attestation 같은 제로 트러스트 접근 지원
- Windows는 Microsoft의 Secure Future Initiative 일부로 Rust 프로그래밍 언어에 대한 약속을 발표했고, 최근 Windows 커널의 Rust 지원도 확장함
- Microsoft는 CrowdStrike 사건 이후 Windows 보안 모범 사례와 새로운 보안 기능에 대한 지침을 계속 공유하겠다고 밝힘