C/C++ 체크리스트 도전 과제 해결
제공된 텍스트는 테스트 핸드북의 두 가지 보안 과제, 즉 Linux ping 프로그램과 Windows 드라이버 레지스트리 핸들러를 설명합니다. Linux 과제는 입력 유효성 검사 및 `inet_ntoa` 함수의 전역 버퍼 사용의 결함으로 인해 명령 주입 취약점을 노출하며, 이는 공격자가 보안 검사를 우회할 수 있도록 합니다. Windows 과제는 드라이버가 `RtlQueryRegistryValues`를 사용하여 레지스트리에서 버전 정보를 읽는 취약점을 강조하며, 이는 공격자가 레지스트리 경로를 제어할 수 있도록 합니다. 이를 통해 임의의 레지스트리 키를 읽을 수 있습니다. 주요 취약점은 `RTL_QUERY_REGISTRY_DIRECT`를 사용할 때 유형 검사가 누락되어 유형 혼동을 통해 스택 오버플로가 발생하는 것입니다. Windows 드라이버에 `RTL_QUERY_REGISTRY_TYPECHECK` 플래그가 없는 것은 `RTL_QUERY_REGISTRY_DIRECT`를 사용할 때 신뢰할 수 없는 하이브에서 읽으려고 할 때 커널 보안 실패로 이어집니다. 원래 MS11-011에서 해결된 이 버그는 공격자가 스택의 데이터를 덮어쓸 수 있도록 합니다. 그런 다음 텍스트는 LLM을 활용하여 C/C++ 코드베이스의 버그를 찾는 새로운 Claude 스킬인 c-review를 소개합니다. 이 스킬은 테스트 핸드북의 체크리스트를 취약점을 식별하기 위한 프롬프트로 사용합니다.