애플 macOS 및 iOS 취약점 CVE-2024-54507
오늘은 애플에서 제공하는 OS인 macOS 및 iOS 취약점인 CVE-2024-54507에 대해 알아보겠습니다.
해당 취약점은 BSD sysctl 인터페이스를 통한 잘못된 메모리 접근 때문에 발생하면 악의적인 목적이 있는 공격자는 커널 메모리 일부 내용을 읽을 수가 있는 문제점입니다.
취약점은 sysctl_udp_log_port 함수가 oid_arg1 변수를 잘못된 데이터 타입으로 캐스팅하면서 발생합니다. 해당 변수는 원래 uint16_t 타입으로 정의되어야 하지만, 코드에서는 이를 int로 캐스팅하여 2바이트 초과 데이터를 읽어 버리는 문제입니다.
sysctl_handle_int 함수 호출 시 사용자 공간(user space)으로 2바이트의 커널 메모리 이 되는 문제점입니다.
int new_value = *(int *)oidp->oid_arg1;
해당 코드에서는 oid_arg1이 uint16_t 을 가리키는 경우, 초과 읽기(Out-of-Bounds Read) 발생을 하면 oid_arg1이 2바이트 크기의 uint16_t 데이터를 가리키고 있다면,
이를 int *로 변환하고 역 참조하면 4바이트를 읽으려 하므로 초과 읽기 발생을 할 수가 있습니다.
취약점은 net.inet.udp.log.remote_port_excluded 라는 sysctl 변수를 sysctlbyname() 함수를 사용해 읽을 때 발생을 하면 sctl 핸들러 함수가 반환 크기(len)를 잘못 처리하거나 메모리 정렬 문제가 발생하게 되고 해당 변수 값 바로 뒤에 있는 커널 메모리 2바이트가 추가로 누설될 수가 있는 문제점입니다.
영향을 받는 기기
macOS Sequoia 15.2(macOS 세쿼이아)
iOS 18.2
iPadOS 18.2
결론 정기적은 보안 업데이트를 통한 해당 취약점들을 제거하는 것을 필수입니다.