할머니와 할아버지도 이해하기 쉽게
기술 산업에서 20년간 일한 베테랑으로, 제가 겪어온 기술적 문제들을 많이 보았습니다.
최근 윈도우 중단 사태와 관련된 CrowdStrike를 들었을 때, 15년 전 블랙베리를 위해 윈도우 드라이버를 개발했던 경험이 떠올랐습니다. 당시, 셀 수 없이 많은 블루 스크린과 충돌을 다뤘기 때문에 무엇이 잘못됐을지 잘 알 것 같습니다.
지난 금요일 발생한 문제는 복잡하며, 소프트웨어 개발에 익숙하지만 Windows 드라이버나 커널 공간에 익숙하지 않은 사람들에게는 명확히 해야 할 수도 있습니다.
본 문서는 상황을 단순화하고, 기술적 배경지식이 없는 사람들에게도 쉽게 이해할 수 있도록 설명하는 것을 목표로 합니다 — 심지어 당신의 할아버지, 할머니들에게도요.
Windows 기계를 집으로 가정해 봅시다
사용자 공간
더 잘 이해하기 위해, Windows 컴퓨터를 당신의 집이라고 가정해 봅시다. 당신의 집 안에는 부엌, 거실, 침실과 같은 방들이 있습니다. 이곳은 일상 활동을 하는 장소로, 식사를 만들거나 TV를 시청하고 휴식을 취하는 곳입니다. 이들은 집의 기능과 직접 상호작용하는 가시적이고 접근 가능한 공간입니다.
이를 당신의 집 부분으로 지칭하겠습니다. 이는 또한 당신이 보고 상호작용하는 컴퓨터 공간입니다. 화면에서 보이는 것과 마우스로 가리키는 것입니다. Windows에서도 이를 사용자 공간이라고 합니다.
커널 공간
당신의 집 안에는 숨겨진 세계도 있습니다. 벽 뒤 시스템에는 기초, 배관, 전기, 난방이 포함됩니다. 이것들은 일상 생활 중에는 볼 수 없지만, 모든 것이 올바르게 작동하도록 하는 데 중요합니다. 이들은 물과 전기 공급을 처리하고 집의 운영을 유지하는 중요한 기능을 담당합니다.
당신 집의 내부 인프라입니다. 컴퓨터에서 이 영역은 커널 스페이스라고 합니다.
CrowdStrike는 새로운 스마트 온도 조절기입니다
스마트 온도 조절기와 같이 새로운 기능을 추가하는 것을 고려해보세요. 이 최신 기능은 처음부터 집에 있던 것은 아니지만 기존의 난방 및 냉방 시스템(내부 인프라)과 연결되어 정상적으로 작동해야 합니다.
집 안의 온도를 모니터링하고 기존 인프라와 효과적으로 작동하는 콤포넌트를 가지고 있습니다. 사용자나 집을 원래 짓는 사람이 이 구성 요소(온도 조절 장치)를 만들지 않았기 때문에 이를 제3자 애플리케이션이라고 부릅니다.
마찬가지로, Crowdstrike는 Falcon이라는 애플리케이션을 만들어서 Windows 기계에 설치하여 그 보안상태를 모니터링합니다. 이를 올바르게 실행하려면 컴퓨터의 커널 공간/내부 인프라에 연결해야 합니다.
Microsoft나 사용자에 의해 만들어지지 않았기 때문에 Falcon은 제3자 애플리케이션이 됩니다.
인증 프로세스
구글과 같은 기업이 홈 스마트 서모스탯(Nest)을 만들 때는 해당 제품이 고객의 난방 및 냉방 시스템과 작동할 것임을 인증해야 합니다. 그 후 제품을 판매할 수 있죠.
그래서 가정용 Nest 스마트 서모스탯을 사오면, 집에 가져와서 난방 및 냉방 시스템에 연결합니다. Nest는 이제 집의 온도를 모니터링하고 난방 및 냉방 시스템에 온도 조절을 지시합니다.
비슷하게, Crowdstrike의 Falcon을 구매하여 컴퓨터에 설치할 수 있습니다. 이를 통해 컴퓨터의 보안을 모니터링하고 커널 스페이스에 있으며 컴퓨터의 내부 인프라에게 컴퓨터를 보호하기 위한 작업을 진행하도록 할 수 있습니다.
Windows 기기에서 커널 스페이스에 액세스하는 어떤 응용 프로그램은 해당 기기에서 실행되기 전에 Windows에 의해 인증되어야 합니다. 인증을 받지 못하면 실행할 수 없죠. 하지만 때로는 신속히 발견된 큰 보안 위험들이 있어 Falcon의 업데이트가 필요할 때도 있지요.
가끔 기업들은 애플리케이션을 커널 공간에서 작동하는 부분과 사용자 공간에서만 작동하는 부분으로 나눕니다. 커널 공간에 있는 부분은 인증이 필요하지만 사용자 공간에 있는 부분은 필요하지 않아요.
그래서 새로운 공격이 발생하면, 그들은 빠르게 정보를 사용자 공간으로 전송하고 애플리케이션의 커널 공간 부분에 해당 정보를 확인하라고 지시할 수 있어요. 그러면 커널 공간에서 해당 정보를 활용하여 공격으로부터 보호할 수 있어요. 그리고 커널 공간을 업데이트할 필요가 없었기 때문에 인증도 필요 없었어요.
하지만, 여기서 큰 문제가 있어요. 이를 신중하게 해야 해요. 사용자 공간에서 정보를 업데이트하여 실수로 커널 공간의 애플리케이션을 혼란스럽게 만들 수 있고, 상황이 엇갈릴 수 있어요. 그래서 이를 수행할 때 충분히 테스트해야 해요.
어디로 향하고 있는지 보이나요? .....
어떻게 모든 것이 잘못되었을까요?
새로운 Nest Smart 온도 조절기는 핸드폰에서 온도를 설정하고 벽면에 있는 패널 및 스마트폰을 통해 집의 난방 및 냉방 시스템을 직접 제어할 수 있습니다.
이제 구글이 Nest를 위한 소프트웨어 업데이트를 릴리스한다고 가정해 봅시다. 이 업데이트는 사용하는 모바일 앱을 개선하지만 집의 난방 및 냉방 시스템을 직접 제어하는 부분에는 변경 사항이 포함되지 않습니다. 기반 시스템은 인증이 필요하기 때문에 자주 변경하길 원하지 않으며 업데이트를 빠르게 배포하기 위해 모바일 앱만 변경해야 할 수도 있지만 여전히 기반 시스템과 작동해야 합니다.
여기서 문제가 발생합니다: 업데이트된 앱은 새로운 기능 또는 설정을 소개하여 조절기와 작동할 것으로 예상됩니다. 그러나 난방 및 냉방을 관리하는 조절기의 핵심 제어 시스템은 변경 사항을 예상대로 처리하지 못했습니다. 소프트웨어 개발자들은 기존 인프라와 이 변경 사항을 테스트하는 것을 잊었으며 올바르게 작동하려면 변경 사항이 필요하다는 것을 깨닫지 못했습니다.
요즘 앱을 사용하여 온도를 설정하면 업데이트된 데이터가 서열열기기 제어 시스템에 전달됩니다. 그러나 코어 시스템이 업데이트되지 않았기 때문에 이러한 새로운 데이터를 올바르게 해석하거나 처리할 수 없었습니다. 이 불일치로 인해 온도계는 난방 및 냉방 시스템에 잘못된 신호를 보내게 됩니다. 결과적으로 난방이 이미 따뜻할 때 켜지거나, 냉방 시스템이 뜨거울 때 작동하지 않아 집이 불편해질 수 있습니다.
여기서 시스템을 고치는 유일한 방법은 벽에서 연결을 끊은 다음 디스플레이를 컴퓨터에 연결하여 소프트웨어를 업데이트한 후 다시 벽에 연결하는 것입니다.
팔콘은 Windows 기계의 컨텍스트에서 스마트 온도계와 같습니다. 커널 공간에서 작동하는 구성 요소 또는 “드라이버”(온도계의 핵심 제어 시스템과 같음)와 사용자 공간에서 작동하는 다른 구성 요소가 있습니다(사용하는 모바일 앱과 같음). CrowdStrike가 사용자 공간 구성 요소만 업데이트하고 커널 공간 드라이버를 업데이트하지 않으면 시스템에 문제가 발생할 수 있습니다.
팔콘의 커널 공간 드라이버가 업데이트된 사용자 공간 구성 요소로부터 데이터를 가져오면 호환성 문제로 인해 중대한 장애가 발생할 수 있습니다. 이를 해결하기 위해서는 컴퓨터를 안전 모드로 수동으로 재부팅하고(온도계를 수동으로 수정하는 것과 같음), 문제가 되는 드라이버를 제거한 다음 컴퓨터를 정상적으로 재부팅해야 합니다.
이건 7월 19일 금요일에 정확히 일어난 사건이에요. CrowdStrike Falcon 애플리케이션의 업데이트로 인해 Kernel Space에서 심각한 오류가 발생했고, 설치된 모든 Windows 기기에서 블루 스크린 오브 데스가 발생했어요!
네스트를 사용하는 집의 모든 온도 제어가 고장나는 상황을 상상해보세요! 네스트와 마찬가지로, Falcon은 모든 집의 온도를 망가뜨리지는 않았어요. Falcon은 실행 중인 Windows 컴퓨터만 고장나게 했기 때문에 Windows 전체가 아닌 CrowdStrike의 전체 서비스에 장애를 일으킨 거죠. Falcon은 맥과 리눅스 기기에서도 실행 중이었지만, 이 부분의 코드는 다르게 작동하며 영향을 받지 않았어요.
요약하자면, 스마트 온도 조절기 앱의 업데이트를 코어 제어 시스템의 업데이트 없이 진행할 경우 집의 온도 조절에 문제가 발생할 수 있듯이, Kernel Space의 드라이버에 불완전한 업데이트를 진행하면 Windows 기기에서 심각한 문제가 발생할 수 있어요.
이 사례는 온도 조절기든 컴퓨터든 시스템의 모든 부분을 동기화하여 원활한 작동을 보장하기 위해 유지하는 것이 왜 중요한지를 보여줍니다.
더 자세한 내용을 원하시나요?
이 문제를 더 심층적으로 살펴보고 싶다면 이 비디오를 강력히 추천합니다.
이 문제를 해결하기 위해 노력하는 IT 팀들과 크라우드스트라이크에서 실수한 개발자에게 모두 최고의 행운을 빕니다. 우리 모두는 인간이고, 실수를 범할 수 있습니다. 이 불행한 사건에서 크라우드스트라이크 뿐만 아니라 다른 많은 기업들도 유익한 교훈을 얻기를 바랍니다.