요약

  • Channel File 291은 단 하나의 틈에서 무너졌다. 템플릿 유형이 선언한 스물한 개의 입력 필드와, 그것을 호출한 코드가 넘긴 스무 개의 값이다.
  • 발표된 처방은 실제 사전 예방적 수정과 책임의 이전을 함께 담는다. 그리고 이번에 읽은 자료에서는 이전 쪽이 훨씬 자세히 적혀 있다.

맞아떨어지는 셈. 이번 검증에서 보관한 업계 매체의 페이지는 CrowdStrike의 근본 원인 보고서에 귀속시킨 세 문장을 그대로 옮긴다. 첫 문장이 가장 많은 것을 말해 준다. "The new IPC Template Type defined 21 input parameter fields, but the integration code that invoked the Content Interpreter with Channel File 291's Template Instances supplied only 20 input values to match against". 스물한 개의 필드를 선언했고, 스무 개의 값이 도착했다. 차이는 하나이고, 그 하나가 결함의 전부다. 선언된 필드 하나가 대응 값을 얻지 못했고, 템플릿에서 센서로 가는 경로 어디에서도 그 부재를 알아채지 못했다.

두 번째 문장은 기계적 결과를 설명한다. "Sensors that received the new version of Channel File 291 carrying the problematic content were exposed to a latent out-of-bounds read issue in the Content Interpreter". 할당된 경계를 넘는 읽기, 콘텐츠를 실행하는 해석기 안에 잠복해 있었다. 스키마 검사가 몇 초 만에 잡아내는 종류의 결함이고, 사람이 눈으로 훑는 검토로는 거의 안정적으로 잡아내지 못하는 결함이다. 코드는 문법적으로 올바르고, 다만 불완전하기 때문이다.

세 번째 문장은 고객에게 가장 중요한 쪽을 담는다. "Customers can choose where and when Rapid Response Content updates are deployed". 정확히 읽어야 한다. CrowdStrike에 귀속된 선택 능력에 대한 서술이며, 그 선택이 모든 환경에서 실제로 작동하는 선택지라는 증명은 아니다.

이 페이지가 무엇이고 무엇이 아닌지. 이 페이지의 출처 정보에는 매체 이름도, 발행일도, 필자도 없다. 그리고 CrowdStrike 자체의 페이지는 이번 검증에서 읽을 수 없었다. 네 번의 수집 시도가 공급자 단계에서 실패했다. 여기서 회사에 귀속된 모든 문장은 그 인용을 통해서만 들어온다. 독자는 그렇게 받아들여야 한다. 원문 문서를 읽은 것이 아니라 제2자의 귀속으로 받아들이라는 뜻이다. 같은 페이지는 자기 언어로, 이런 종류의 콘텐츠가 이전에는 소프트웨어 업데이트가 거치는 것과 같은 내부 테스트와 검토를 거치지 않았고 앞으로는 단계적 배포가 쓰일 것이라고 요약한다. 그 요약은 매체의 것이지 CrowdStrike의 문구가 아니며, 회사의 문자 그대로의 약속으로 읽어서는 안 된다.

산수가 왜 중요한가. 빈 필드를 지목한 것이 답의 좋은 쪽이다. 빠진 검증기를 가리키는 근본 원인 분석은 검증 가능한 의무를 만든다. 콘텐츠 채널이 날짜가 찍힌 기록과 함께 소프트웨어 업데이트와 같은 테스트 파이프라인을 통과하든가, 통과하지 않든가 둘 중 하나다. 이것은 홍보 문구가 아니라, 잘못된 로그 한 벌이면 감사자가 반나절에 반박할 수 있는 주장이다. 문제는 보관된 자료가 발표된 통제 중 어느 것도 집행 여부가 시험되었거나, 독립 감사를 받았거나, 계약에 편입되었음을 입증하지 못한다는 점이다. 이용 가능한 기록에서 그 수정은 선언에 그친다.

주인이 바뀌는 쪽. 답의 두 번째 부분은 CrowdStrike에서 나오지 않았다. 2024년 8월 23일 Microsoft는 9월의 Windows Endpoint Security Ecosystem Summit을 발표하며 CrowdStrike와 다른 엔드포인트 보안 파트너, 정부 대표가 참여한다고 밝히고 이렇게 적었다. "Our objective is to discuss concrete steps we will all take to improve security and resiliency for our joint customers". 집합적 표현은 의도된 것이다. 문제는 한 공급자의 것이 아니라 생태계의 것이 된다.

2024년 9월 12일 Microsoft는 플랫폼 공급자와 엔드포인트 보안 파트너, 공동 고객 사이의 분담된 책임을 설명하고, 일시 정지와 롤백을 포함한 점진적이고 단계적인 Safe Deployment Practices를 구체적으로 서술했으며, 핵심 구성요소에 대한 확대된 테스트와 공동 호환성 테스트를 언급했다. 같은 글에서 고객에게는 업무 연속성 계획, 중대 사고 대응 계획, 안전하고 잦은 백업이라는 의무를 배정했다. 그리고 회의의 범위를 분명히 그었다. "Although this was not a decision-making meeting, we believe in the importance of transparency and community engagement".

이 대목이 처방의 설계를 이해하는 열쇠다. 필드를 잘못 선언한 공급자는 콘텐츠 채널의 소유권을 그대로 갖는다. 재분배되는 것은 전체가 작동한다는 증명 작업이다. 운영체제 업데이트마다 호환성을 시험하는 일은 깊게 통합된 파트너에게, 배포 링과 모니터링, 점진적 업데이트는 파트너에게, 연속성과 백업은 고객에게 간다. 각각은 따로 보면 합리적이다. 그러나 합쳐지면 통제 의무를 아래로 옮기면서 위로 향하는 동등한 지렛대를 만들지 않는다.

2024년 11월 19일 Microsoft는 Windows Resiliency Initiative를 소개하고, 부팅되지 않는 장비를 위한 Quick Machine Recovery, 점진적 업데이트와 배포 링, 모니터링에 대한 파트너 약속, 그리고 보안 제품이 커널 모드 밖에서 동작하는 미래 기능을 제시했다. 틀은 첫 문장에 있었다. "A strong security posture is essential for your business, and a shared responsibility across our ecosystem". 같은 날짜의 Ignite 2024 Book of News는 약속을 간결하게 적는다. "Microsoft and the MVI also committed to Safe Deployment Practices". 그리고 그 책은 깊게 통합된 파트너가 드라이버 같은 구성요소를 Windows 업데이트마다 추가적인 보안 및 호환성 시험을 해야 한다고 기록한다.

누가 무엇을 얻는가. 플랫폼 공급자는 회의를 소집하고, 분담된 책임의 어휘를 정의하고, Windows 업데이트마다의 시험 주기를 정하고, 부팅되지 않는 장비에 대한 복구 수단을 얻는다. 에이전트 공급자는 실패한 채널의 소유권을 유지한 채 그것을 소프트웨어처럼 다루겠다고 약속한다. 고객은 배포에서의 선택과 백업 의무를 받는다. 위로 향하는 책임 메커니즘을 받는 사람은 아무도 없다. 보관된 어느 문서도 독립 감사, 계약상의 발동 조건, 불이행에 따르는 결과를 만들지 않는다.

감사를 견디는 시험. 처방이 작동했는지 알고 싶은 기업은 다음 사고를 기다릴 필요가 없다. 다섯 가지 산출물이 필요하고, 각각은 있거나 없다.

  1. 실패한 콘텐츠 채널이 소프트웨어 업데이트와 같은 테스트 파이프라인을 통과한다는 증명. 입력과 출력, 승인을 보여 주는 기록과 함께.
  2. 날짜가 찍힌 일시 정지와 롤백 사건이 있는 단계적 배포 기록. 그것이 존재한다는 진술만으로는 부족하다.
  3. Windows 업데이트마다의 공동 호환성 시험. 날짜가 찍힌 산출물과 이름이 적힌 책임자와 함께.
  4. Rapid Response Content의 배포에 대한 고객 통제가 실제로 작동하는 선택지로 구현된 것. 고객이 수신하지 않기로 결정한 경우까지 포함해서.
  5. 공급자 외부의 누군가가 확인한 연속성 및 백업 요구.

이 가운데 발표로만 존재하는 요소는 시험에서 떨어진다. CrowdStrike가 지금까지 내놓은 것은 보관된 자료 기준으로 정확한 근본 원인 분석과 하나의 프로세스 약속이다. 대부분의 사후 보고서가 주는 것보다 많고, 아직 입증된 수리는 아니다.

분류를 바꾸는 것은 새로운 의지 표명이 아니다. 테스트 파이프라인이 빈 필드를 막았을 것이라는 날짜 있는 기록, 그리고 수신을 거부한 고객이 불이익 없이 계속 운영되었다는 기록이다. 그 두 산출물이 나오기 전까지 Channel File 291의 처방은 절반이 산수, 절반이 이전으로 남는다. 그리고 공급자를 보호하는 쪽은 이미 문서화된 쪽이다. BTW 디렉터리의 CrowdStrike, Inc. 항목은 발표 이후 실제로 무엇이 전달되는지 따라가려는 독자를 위해 회사 이력을 모아 둔다.