꿈을꾸는 파랑새

오늘은 애플에서 제공하는 OS인 macOS 및 iOS 취약점인 CVE-2024-54507에 대해 알아보겠습니다.
해당 취약점은 BSD sysctl 인터페이스를 통한 잘못된 메모리 접근 때문에 발생하면 악의적인 목적이 있는 공격자는 커널 메모리 일부 내용을 읽을 수가 있는 문제점입니다.
취약점은 sysctl_udp_log_port 함수가 oid_arg1 변수를 잘못된 데이터 타입으로 캐스팅하면서 발생합니다. 해당 변수는 원래 uint16_t 타입으로 정의되어야 하지만, 코드에서는 이를 int로 캐스팅하여 2바이트 초과 데이터를 읽어 버리는 문제입니다.
sysctl_handle_int 함수 호출 시 사용자 공간(user space)으로 2바이트의 커널 메모리 이 되는 문제점입니다.

Apple
Apple

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
결론 정기적은 보안 업데이트를 통한 해당 취약점들을 제거하는 것을 필수입니다.

 

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band

Sakai님의
글이 좋았다면 응원을 보내주세요!