다시 한 번, 네트워크 패킷 필터링 및 수정을 담당하는 Linux 커널 하위 시스템이 취약점 탐지에 관여했습니다. 그리고 Netfilter는 이 Linux 구성 요소에 대한 문제 소식이 지속적으로 공개되고 있기 때문에 빨간불이 되었습니다.
이 때 취약점이 공개되었습니다 (이미 CVE-2024-1086에 나열됨) 넷필터에서어느 로컬 사용자가 커널 수준에서 코드를 실행하고 권한을 상승시킬 수 있습니다. 시스템에서. 문제는 nftables를 통해 패킷 필터링을 담당하는 nf_tables 모듈에서 메모리를 두 번 해제하는 데 있습니다.
취약성에 대해 다음과 같이 언급되어 있습니다.
문제는 nft_verdict_init() 함수의 버그에 있습니다. 이 버그는 후크에서 양수 값을 DROP 오류 코드로 사용할 수 있도록 허용하며, 이로 인해 nf_hook_slow() 함수가 호출되어 버퍼에 대한 메모리를 확보할 수 있습니다. 이미 free() 함수를 사용하여 해제되었습니다.
이 NF_DROP 작업이 실패하고 커널이 처음에 NF_DROP을 해석할 때 발생합니다. 그러나 버퍼를 해제하고 NF_ACCEPT 상태를 반환합니다. 결과적으로, 패킷과 관련된 버퍼를 해제하더라도 해당 처리는 계속되고 메모리 해제 기능을 다시 호출하는 다른 핸들러로 전송됩니다.
해당 취약점이 악용될 수 있음을 입증하기 위해 해당 취약점을 발견하고 개발한 보안연구원은 익스플로잇의 실제 프로토타입이는 Linux 커널 5.14~6.6이 포함된 현재 버전의 Debian 및 Ubuntu에서 시연되었습니다.
또한 이 익스플로잇은 KernelCTF(Capture the Flag) 커널이 있는 환경에서 테스트되었습니다. 이 커널에는 일반적인 익스플로잇 방법을 차단하기 위한 추가 패치가 포함되어 있으며 Google이 취약점을 찾기 위한 현상금 프로그램에서 사용합니다. 익스플로잇 성공률은 99,4%로 추정된다. 첨부된 기사에서는 복잡한 다단계 공격을 생성하는 프로세스와 공격을 처리하기 위해 커널에 존재하는 보호 메커니즘 및 대책을 우회하는 방법에 대한 자세한 설명을 제공합니다.
언급 할 가치가 있습니다. 연구원의 관찰에 따르면, 적어도 버전 이후 모든 버전이 그럴 가능성이 높습니다. Linux 5.14.21 ~ 버전 6.6.14는 악용에 취약합니다., 구성 값(kconfig)에 따라 다릅니다. 이 글을 쓰는 시점에서 관찰된 바와 같이 안정적인 브랜치인 linux-5.15.y, linux-6.1.y, linux-6.6.y 및 linux-6.7.1이 이 공격의 영향을 받습니다. 그러나 안정적인 브랜치의 이 취약점을 해결하기 위해 2024년 XNUMX월에 버그 수정이 출시되었습니다.
대부분의 기본 커널에 동일한 기본 구성 파일이 사용되었으며 언급된 모든 버전은 PoC 버그에 취약하다는 점에 유의하는 것이 중요합니다. 기본 구성은 kernel-hardening-checker를 사용하여 생성되었습니다.
또한, 바닐라 커널의 경우 구성 변경 사항이 적용되었습니다. CONFIG_INIT_ON_FREE_DEFAULT_ON
비활성화되었기 때문에 해제 후 페이지를 null 바이트로 설정하여 악용의 일부를 완화하는 데 도움이 됩니다. 하지만, CONFIG_INIT_ON_ALLOC_DEFAULT_ON
KernelCTF, Ubuntu 및 Debian과 같은 주요 배포판에서는 계속 활성 상태이므로 v6.4.0으로 시작하는 버전에서 bad_page() 감지와 같은 부작용이 발생할 수 있습니다.
익스플로잇의 성공률은 99,4%이며, 특정 시나리오에서는 93,0%까지 떨어지는 경우도 있습니다. 이 성공은 장치 작업 부하에 따라 약간 다를 수 있습니다. 모든 테스트 시도에서 성공하고 관련된 모든 실패가 조사 및 문서화되면 익스플로잇은 특정 구성에서 작동하는 것으로 간주됩니다. 이렇게 하면 익스플로잇의 효과를 확인할 때 오탐 가능성이 줄어듭니다.
마지막으로 대부분의 배포판에는 이미 수정 패치가 있습니다. 그것에 대해 더 알고 싶다면 세부 사항을 참조하십시오. 다음 링크에서 또는 각 배포판의 특정 페이지(예: 데비안, Ubuntu, 젠투, RHEL, SUSE y 페도라.