io_uring의 취약점으로 인해 권한이 없는 사용자가 컨테이너에서도 루트가 될 수 있음

최근에 취약점 정보 공개(CVE-2022-29582) io_uring 비동기 I/O 인터페이스의 구현에서 버전 5.1부터 Linux 커널에 포함되어 권한이 없는 사용자가 컨테이너 익스플로잇을 실행할 때에도 시스템의 루트가 될 수 있습니다.

언급 할 가치가 있습니다. 취약점이 보고된 지 3개월이 조금 넘었습니다. (약 올해 XNUMX월 초), 전체 정보 및 공개는 최근에야 공개되었습니다.

취약점과 관련하여 다음과 같이 언급됩니다. 이미 해제된 메모리 블록에 액세스할 때 발생, 5.10 분기부터 Linux 커널에 나타납니다.

취약성 CVE-2022-29582 정보

이 취약점 해제된 메모리에 대한 액세스를 허용합니다. io_flush_timeouts() 함수에서 시간 초과를 처리할 때 경쟁 조건의 결과로,e는 시간 초과 항목을 제거합니다. 해당 시점에서 타임아웃의 생성 및 삭제를 확인하지 않고 목록에서 취소합니다.

io_uring에 대한 업데이트된 일반 설명은 이미 다른 사람들이 제공했습니다. 그들은 그것을 우리보다 천 배나 더 잘 설명하므로 우리는 하위 시스템을 더 광범위하게 다룰 것입니다(훌륭한 소개는 이 Grapl Security 기사 및 이 Flatt Security 기사 참조).

더 중요한 것은, opcode 필드는 수행할 작업 유형을 결정합니다. 이를 필요로 하는 각 "opcode"에 대해 fd 필드는 요청된 I/O를 수행할 파일 설명자를 지정합니다. 거의 모든 일반 I/O 시스템 호출(read, sendto 등)에는 동등한 비동기 opcode가 있습니다. 각 필드는 작업에 따라 다른 역할을 맡을 수 있습니다.

SQ에서 검색되면 SQE는 struct io_kiocb(커널 입/출력 콜백)에 설명된 내부 표현으로 변환됩니다. 이러한 개체를 일반적으로 요청이라고 합니다.

struct io_kiocb는 기반이 되는 SQE "실행 준비"와 동등하게 사용되며, 이에 따라 모든 파일 설명자가 struct 파일로 해석되고, 사용자 자격 증명이 첨부되고, 성격(코어가 실행될) 등 .

요청된 작업이 완료된 후 완료 큐에 기록됩니다. (CQ) SQE에 해당하는 항목. 이러한 항목을 완료 대기열 항목(CQE)이라고 하며 오류 코드 및 결과 값과 같은 필드를 포함합니다. 사용자 공간 애플리케이션은 전송된 SQE가 처리를 완료했는지 여부와 결과가 무엇인지 판별하기 위해 새 항목에 대해 CQ를 폴링할 수 있습니다.

라고 언급되어 있다 개체를 교체하기 쉬운 몇 가지 시나리오가 있습니다. 진행 상황에. 그러나 두 가지 제한 사항이 있습니다.

  • LT'는 레이스 창에서 할당 및 초기화되어야 합니다. 즉, LT가 해제된 후 더 이상 액세스되지 않는 LT의 지점에 도달하기 전입니다.
  • LT'는 또 다른 struct io_kiocb 개체일 수 있습니다. 힙의 개체가 유형에 따라 분리되는 힙 격리로 인해 경쟁 창 내에서 다른 유형의 개체로 재할당하기가 너무 어렵습니다.

연구원들은 기능적 익스플로잇을 준비했습니다. 작업을 위해 사용자 식별자 네임스페이스(사용자 네임스페이스)를 포함할 필요가 없으며 권한이 없는 사용자가 격리된 컨테이너에서 익스플로잇을 시작할 때 호스트에 대한 루트 액세스를 제공할 수 있습니다.

우리의 익스플로잇은 커널 버전 5.10.90을 대상으로 합니다. 이 버전은 당시 Google이 원격으로 실행하고 있던 버전입니다. 서버의 특정 사양(4개의 Skylake Xeon 코어 @ 2.80Ghz, 16GiB RAM)에 맞게 익스플로잇을 조정해야 했지만 약간의 조정을 통해 취약한 커널을 실행하는 모든 시스템을 익스플로잇할 수 있어야 합니다.

익스플로잇은 nsjail 환경에서도 작동합니다. Chromium OS를 기반으로 하는 Google COS(Container Optimized OS) 배포판에서 격리되고 Compute Engine 가상 머신의 Google Cloud Platform에서 사용됩니다. 익스플로잇은 5.10에서 5.12까지의 커널 브랜치에서 작동하도록 설계되었습니다. 마지막으로 언급할 가치가 있는 것은 5.10.111월에 업데이트 5.15.34, 5.17.3 및 XNUMX에서 문제가 수정되었습니다.

마지막으로 취약점에 대해 더 알고 싶다면 발행된 출판물을 참조하십시오. 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.