ClickCease 12년 된 코드가 권한이 없는 사용자에게 루팅 권한을 부여하는 방법, PwnKit

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

12년 된 코드가 권한이 없는 사용자에게 루팅 권한을 부여하는 방법, PwnKit

2022년 1월 26일 TuxCare 홍보팀

IT 팀은 쉴 틈이 없는 것 같습니다. log4j(및 그 변종)로 인한 모든 번거로움에 이어, 새로운 고위험 취약점이 주목을 받고 있습니다. CVE-2021-4034, 또는 멋진 CVE 별명을 좋아한다면 PwnKit이라고도 불리는 이 취약점은 권한이 없는 사용자가 기본적으로 폴킷이 설치된 모든 Linux 시스템에서 루트 권한을 얻을 수 있는 폴킷 취약점입니다.

TuxCare의 Lifecycle 연장 지원 팀은 지원되는 모든 배포판에 대한 패치를 준비 중이며 곧 배포할 수 있습니다. 이 게시물은 각 배포판의 실제 가용성을 반영하여 업데이트될 예정입니다.

[참고: 현재 Centos6, Oracle6, CL6, Ubuntu16 및 Centos8.4에 대한 패치를 사용할 수 있습니다. 자세한 내용은 추후 공개됩니다. CVE 대시보드를 통해 실제 배포 지원을 추적할 수 있습니다: https://cve.tuxcare.com/cve/CVE-2021-4034].

이 취약점은 Qualys의연구원들에 의해 확인되어작년 말 유통 공급업체에 공개되었지만, 2022년 1월 25일에야 일반에 공개되었습니다.

이 익스플로잇은 매우 쉽게 익스플로잇할 수 있으며, 초기 발표에서는 수일 내에 익스플로잇이 등장할 것이라고 언급했지만 실제로는 공개적으로 사용 가능한 익스플로잇 코드가 발견되고 작동하는 것으로 확인되기까지 약 3시간밖에 걸리지 않았습니다. 이 익스플로잇은 Ubuntu, RHEL, CentOS 및 그 파생 버전과 같은 주요 Linux 배포판에 영향을 미칩니다. 영향을 받은 코드는 2009년에 만들어진 폴킷의 초기 코드 커밋의 일부였기 때문에, 폴킷을 실행하는 모든 배포판이 취약한 것으로 나타날 가능성이 매우 높습니다.

폴킷(및 pkexec)이란 무엇인가요?

폴킷은 프로세스 간 권한 수준이 다를 때 프로세스 간 통신을 관리하기 위한 권한 제어 기능을 제공하는 패키지입니다. 폴킷 구성 요소인 pkexec을 통해 사용자는 평소보다 높은 권한으로 명령을 실행할 수 있습니다. 예를 들어, 특정 사용자에게 전체 루트 액세스 권한을 실제로 전달하지 않고도 시스템 전체 작업을 수행할 수 있는 액세스 권한을 부여할 수 있습니다.

취약점 자세히 살펴보기

Pkexec은 명령줄에서 동작(실행할 항목, 범위 등)을 제어하는 인수를 전달받습니다. 연구원들이 발견한 것은 널 매개변수를 전달하면 매개변수의 유효성을 검사하는 코드가 실패하여 공격자가 제어하는 값으로 메모리가 손상되고 pkexec 실행 환경에 기록되는 방식이 가능하다는 것입니다. 이 취약점은 루트 권한으로 모든 명령을 실행하는 pkexec으로 확장될 수 있으며, 권한이 없는 사용자에게 전체 루트 액세스 권한을 제공하는 데 쉽게 악용될 수 있습니다.

실제 코드 분석은 위에 링크된 Qualys의 초기 발표에서 확인할 수 있습니다.

패치 제공 전 완화 조치

다음 명령으로 pkexec에서 SUID 비트를 제거하여 위험을 완화할 수 있습니다:

# chmod 0755 /usr/bin/pkexec

이 변경은 pkexec의 정상적인 작동을 방해하므로, 원치 않는 부작용을 초래할 수 있으므로 인프라에 대규모로 적용하기 전에 테스트 환경에서 이 변경 사항을 철저히 테스트해야 합니다. 패치는 여전히 최선의 선택입니다.

마무리 발언

이 취약점은 알려진 원격 공격 벡터가 없기 때문에 익스플로잇하려면 시스템에 액세스해야 합니다. 하지만 시스템에 액세스한 공격자가 이 취약점을 이용해 권한을 상승시킬 수 있습니다. 폴킷의 확산은 매우 심각한 보안 위협으로, 원치 않는 불상사를 피하기 위해 가능한 한 빨리 패치를 적용해야 합니다.

이 취약점은 오픈 소스 소프트웨어의 오랜 문제를 보여주는 또 다른 예입니다. 소스가 공개되어 있다고 해서 올바른 사람들이 찾고 있다는 의미는 아닙니다. 이 버그는 12년 된 코드에 존재했지만 그 기간 동안 아무도 발견하지 못했고, 적어도 공개적으로 발표하지도 않았습니다. 기본 프로젝트는 코드를 적절히 감사하고 보안을 유지할 수 있는 리소스(및 인센티브)가 부족한 경향이 있지만, 수많은 다른 프로젝트와 배포판에서 불균형적으로 의존하고 있습니다. 12년 된 코드의 보안 문제는 최근 몇 달 동안 발견된 '가장 오래된' 버그도 아닙니다. 더 많은 코드가 감사를 받을수록 더 많은 결함이 발견될 가능성이 높으며, 따라서 새로운 취약점이 발견될 때 더 빠르게 패치를 적용할 수 있습니다.

TuxCare의 Lifecycle 연장 지원 서비스가 적용되는 모든 지원 배포판에 대한 패치가 준비 중이며 곧 제공될 예정입니다. 이 게시물은 배포 준비가 완료되는 대로 다른 배포판에 대한 패치 가용성을 반영할 예정이므로 업데이트를 확인하려면 여기를 다시 확인하세요.

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기