루트 권한을 얻을 수 있게 하는 io_uring 하위 시스템의 취약점

커널에서 제공하는 비동기 I/O 인터페이스 io_uring에서 Linux, выявлена уязвимость (CVE-2024-0582), позволяющая непривилегированному пользователю получить права root в системе. Для эксплуатации уязвимости достаточно обычного локального доступа к системе, без необходимости манипуляций с пространствами имён. В настоящее время публично доступен работающий эксплоит, а также подробно описана вторая техника эксплуатации уязвимости.

이 취약점은 IORING_REGISTER_PBUF_RING 플래그로 생성된 링 버퍼를 등록하고 해제할 때 발생하는 io_uring 하위 시스템의 사용 후 해제 오류로 인해 발생합니다. 버퍼가 mmap()되면, 해제 작업(IORING_UNREGISTER_PBUF_RING)이 수행된 후에도 사용자 공간에 매핑된 상태로 유지됩니다. 이 기능을 악용하면 공격자는 커널 메모리 할당 시스템으로 반환된 메모리 페이지에서 데이터를 읽고 쓸 수 있습니다.

Проблема проявляется начиная с выпуска ядра Linux 6.4 и устранена в выпусках 6.7 и 6.6.5, а также в пакете с ядром 6.5.0-21, подготовленным для Ubuntu 22.04 и 23.10. Примечательно, что в основном ядре проблема была исправлена в декабре 2023 года, проект Google Zero открыл доступ к сигнализирующему о наличии уязвимости сообщению об ошибке 8 января, а пакет с исправленным ядром 6.5 для Ubuntu был сформирован лишь 22 февраля 2024 года. В других дистрибутивах проследить за исправлением и подверженностью уязвимости можно на страницах: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

첫 번째 악용 사례는 공격자가 제어하는 ​​대량의 메모리 페이지를 생성하여 커널 메모리 레이아웃을 파악하고, 특별히 채워진 네트워크 소켓 구조의 내용을 비콘으로 사용하여 인접한 물리적 메모리 페이지에 액세스하는 것입니다. 코드를 실행하기 위해 이 공격은 커널에 존재하는 명령어 시퀀스인 "가젯"을 사용하여 call_usermodehelper_exec 함수를 실행하는데, 이 함수는 커널에서 사용자 공간에 프로세스를 시작하도록 설계되었습니다.

두 번째 악용은 캐시에 있는 모든 슬랩 블록이 소진되었을 때(예: 파일을 여러 번 열었을 때) 공격자가 여전히 접근할 수 있는 여유 메모리 페이지를 메모리 할당 시스템에서 사용하여 새로운 슬랩 블록을 만들고 모든 새로운 파일 구조가 이 블록에 배치되기 시작한다는 사실에 기반합니다. 따라서 일부 파일 구조는 공격자가 읽고 쓸 수 있는 메모리 페이지에 들어가게 됩니다. 이 경우의 악용은 필요한 파일의 항목을 파일 캐시에 구성하고 관련 파일 구조의 f_mode 필드를 바꾸는 것으로 귀결됩니다. 이를 통해 액세스 권한이 결정되고, 이를 통해 필요한 시스템 파일(예: /etc/passwd)을 쓰기 가능하게 됩니다.

출처 : opennet.ru

DDoS 보호, VPS VDS 서버가 있는 사이트를 위한 안정적인 호스팅 구입 🔥 DDoS 공격 방지 기능이 탑재된 안정적인 웹사이트 호스팅, VPS 및 VDS 서버를 구매하세요 | ProHoster