GN⁺: 마이크로소프트의 CrowdStrike 사건 기술 분석
(microsoft.com)CrowdStrike 정전 사태의 기술적 분석
- CSagent 드라이버의 메모리 안전 문제, 특히 읽기 범위를 벗어난 액세스 위반이 근본 원인이었음
- Microsoft의 WinDBG 커널 디버거와 무료로 제공되는 여러 확장을 활용해 분석을 수행함
CSagent.sys 드라이버의 기능
- CSagent.sys 모듈은 안티맬웨어 에이전트에서 일반적으로 사용하는 파일 시스템 필터 드라이버로 등록되어 있음
- 파일 생성이나 수정과 같은 파일 작업에 대한 알림을 수신하는 데 사용됨
- 브라우저를 통해 파일 다운로드와 같이 디스크에 새로운 파일이 저장될 때마다 보안 제품이 스캔하는 데 사용
- 시스템 동작을 모니터링하려는 보안 솔루션의 신호로도 사용 가능
- CrowdStrike는 콘텐츠 업데이트의 일부가 sensor의 named pipe 생성 관련 로직 변경이었다고 설명함
- 파일 시스템 필터 드라이버 API는 드라이버가 시스템에서 named pipe 활동(예: named pipe 생성)이 발생할 때 호출을 수신할 수 있게 해 악성 행위 감지를 가능하게 함
CrowdStrike의 다양한 드라이버 모듈
- CrowdStrike는 CSBoot, CSDeviceControl, CSAgent, CSFirmwareAnalysis의 4개 드라이버 모듈을 로드함
- 그 중 하나는 CrowdStrike의 사고 후 검토 타임라인에 따라 동적 제어 및 콘텐츠 업데이트를 자주 받음
CrowdStrike 드라이버 관련 충돌 보고서 수의 변화
- 이 특정 CrowdStrike 프로그래밍 오류로 인해 생성된 Windows 충돌 보고서 수를 파악함
- 충돌 보고서를 생성한 장치 수는 Microsoft가 이전 블로그 포스트에서 공유한 영향을 받은 장치 수보다 적음
- 이는 충돌 보고서가 표본 추출되고 충돌 보고서를 Microsoft에 업로드하도록 선택한 고객에서만 수집되기 때문
- 충돌 덤프 공유를 활성화하도록 선택한 고객은 드라이버 벤더와 Microsoft가 품질 문제와 충돌을 식별하고 해결하는 데 도움이 됨
높은 보안 모드로 Windows를 배포할 수 있는지?
- Windows는 통합 도구를 사용하여 잠글 수 있고, 보안 기본값을 지속적으로 높이고 있음
- Windows 11에서는 기본적으로 수십 개의 새로운 보안 기능이 활성화됨
- 통합 보안 기능에는 보안 부팅, 측정된 부팅, 메모리 무결성, 취약한 드라이버 차단 목록, 로컬 보안 기관 보호, Microsoft Defender 바이러스 백신 등이 있음
- 이 보안 기능은 최신 Windows에서 맬웨어와 익스플로잇 시도에 대한 보호 계층을 제공
- 표준 사용자로 실행하고, 필요할 때만 권한 승격하는 등의 모범사례를 따르는 회사는 MITRE ATT&CK 기술의 많은 부분을 완화함
향후 계획
- Microsoft는 에코시스템과 협력해 안티맬웨어 업체가 Windows의 통합 기능을 활용해 접근방식을 현대화하고 보안과 안정성을 높이도록 도울 것임
- 안전한 롤아웃 지침, 모범사례, 기술을 제공해 보안 제품 업데이트 수행을 더 안전하게 만듬
- 중요한 보안 데이터에 액세스하기 위해 커널 드라이버가 필요한 경우를 줄임
- VBS 엔클레이브와 같은 기술로 향상된 격리 및 변조 방지 기능 제공
- 장치의 보안 상태를 Windows 기본 보안 기능의 상태에 따라 판별할 수 있는 방법인 고무결성 증명과 같은 제로트러스트 접근법 활성화
- Windows는 Microsoft의 Secure Future Initiative의 일환으로 Rust 프로그래밍 언어에 대한 약속을 발표했으며, Windows 커널의 Rust 지원을 확장함
- CrowdStrike 사고 후 학습과 다음 단계를 알리기 위한 약속의 일환으로 이 블로그 포스트의 정보를 제공함
Hacker News 의견
-
Microsoft는 보안 소프트웨어의 현대화를 위해 안티멀웨어 생태계와 협력할 계획임
- 업데이트를 안전하게 수행하기 위한 지침, 모범 사례 및 기술을 제공함
- 중요한 보안 데이터를 접근하기 위해 커널 드라이버의 필요성을 줄임
- 사용자 모드에서 실행되는 기능을 나열하여 커널 모드에서 실행되는 항목을 줄이려 함
-
CrowdStrike의 분석을 기다려야 할 것 같음
- 보안 소프트웨어가 역사적으로 커널 모드에서 실행된 이유를 설명함
- Microsoft는 보안 벤더들이 사용자 모드로 이동하도록 새로운 기술을 추진 중임
- CrowdStrike는 이미 Mac과 Linux에서 사용자 모드로 실행 중임
- Windows에서도 사용자 모드로 실행하면 블루스크린 같은 치명적 오류의 위험을 줄일 수 있음
- Apple이 보안 벤더들을 커널 모드에서 제외한 것처럼 Windows도 그렇게 했다면 이런 문제가 발생하지 않았을 것임
-
eBPF에 대한 언급이 없다는 점이 주목할 만함
- eBPF는 Linux에서 표준이며 Windows에서도 사용 가능하지만, 아직 주요 Windows OS에 도입되지 않음
- 정적 분석은 Blue Friday 버그를 잡을 수 있었을지 모르지만, 현재의 커널 모듈 모델보다 보호 수준을 높임
-
Microsoft 자체가 CrowdStrike의 주요 경쟁자라는 점이 놀랍지 않음
-
마케팅 및 법무 부서의 검토를 거쳤을 것임
- 사건에서 배운 점을 바탕으로 개선하는 OS/배포판을 선택하는 것이 중요함
-
Microsoft만이 사용자들이 할 수 있는 일을 결정하는 대안은 더 나쁨
- 디지털 전체주의를 옹호하는 사람들이 있음
-
디버그 과정의 흐름과 리소스 링크가 포함된 기술적 분석이 좋았음
- 더 많은 디버그 회고가 이렇게 되었으면 좋겠음
-
MS나 CrowdStrike의 발표에서 이 충돌이 어떻게 QC를 우회했는지 설명하지 않음
- 100% 재현 가능한 충돌이 QC의 초기 단계에서 잡히지 않은 것이 이해되지 않음
-
Control Flow Integrity (CFI/XFI) 연구 경험이 있음
- 커널 모듈을 샌드박싱하는 것이 가능했음
- 현재는 적절한 플래그로 코드를 컴파일하여 메모리 안전 오류를 완전히 배제할 수 있음
- BSOD를 정중한 로그 메시지로 바꾸고 결함 있는 드라이버를 비활성화할 수 있음