
Canonical의 snapd 데몬용 REST API에서 "Dirty_Sock"(CVE-2019-7304)이라는 취약점을 악용합니다.
Ubuntu Linux의 기본 서비스인 Canonical snapd 데몬의 REST API에 존재하는 "Dirty_Sock"(CVE-2019-7304) 취약점을 악용하여 루트 접근 권한을 획득합니다.
Ramil Mustafayev의 가이드: https://kryptohaker.medium.com/linux-privilege-escalation-via-snapd-using-dirty-sock-exploit-and-demonstration-of-cve-2019-7304-892716cf99ca
이 취약점은 UNIX 소켓에 대한 접근 제어를 수행할 때 원격 소켓 주소를 잘못 검증하고 구문 분석한 snapd 2.37 이전 버전에서 악용되었습니다. 이는 당시 일부 Unix 및 Linux 배포판(예: Ubuntu 16.04)에도 영향을 미쳤습니다. 따라서 이 악용을 구현하려면 snapd 2.32와 Ubuntu 16.04가 필요합니다.
https://launchpad.net/ubuntu/+source/snapd에서 snapd 2.32의 Debian 패키지를 얻었습니다.

먼저 cat /etc/lsb-release(Ubuntu 버전과 설명을 표시) 및 uname -a(현재 컴퓨터와 운영 체제 정보를 확인) 명령을 사용하여 Ubuntu 머신이 악용에 취약한지 확인합니다. 그러면 이 머신이 악용 가능하다는 것을 확인할 수 있습니다.

다음 단계는 systemctl start snapd 명령을 사용하여 snapd 서비스를 시작하는 것입니다(실제로 공격자가 이 결함을 악용할 때는 snapd 서비스가 관리자에 의해 시작되어야 합니다. 그렇지 않으면 성공적으로 실행할 수 없습니다). 그런 다음 snapd 버전을 확인하여 취약한 버전인지 확인할 수 있습니다.

다음으로 id(사용자 및 그룹 정보 표시) 및 tail /etc/passwd(/etc/passwd 파일은 등록된 모든 사용자를 추적하는 데 사용됨) 명령을 사용하여 사용자의 권한을 확인합니다. 아래 결과는 "coby" 사용자 이름을 가진 공격자가 시스템에 대한 최하위 접근 권한을 가진 일반 사용자임을 보여줍니다.

이 공격을 실행하기 위해 https://github.com/initstring/dirty_sock에서 얻은 두 가지 버전이 있는 dirty_sock 스크립트를 활용할 것입니다. 버전 1은 아웃바운드 인터넷 연결과 실행 중인 SSH 서비스가 필요한 반면, 버전 2는 아무런 요구 사항 없이 직접 실행할 수 있습니다.
이 악용에 사용될 _dirty_sockv2.py_에서는 몇 가지 핵심 구성 요소에 주목해야 합니다. 이 스크립트의 첫 번째 핵심 구성 요소는 설치 가능한 snap 패키지를 나타내는 base64로 인코딩된 문자열인 TROJAN_SNAP 변수입니다. 이 패키지는 설치 후크에 bash 스크립트가 포함된 빈 "devmode" snap으로, 새 사용자를 생성합니다("devmode"(개발자 모드)는 개발 및 디버깅 목적으로 snap이 엄격한 제한(strict confinement)을 우회할 수 있도록 하는 특수 설치 모드입니다).

이 스크립트의 또 다른 중요한 구성 요소는 create_sockfile() 함수입니다. 이 함수는 "snapd의 ucrednet.go" 파일의 안전하지 않은 구문 분석을 악용하여 임의의 소켓 파일을 생성하고 더티 소켓(dirty sock) _;uid=0;_을 주입하여 UID 변수를 덮어쓸 수 있게 합니다.

이 악용을 구현하기 위해 터미널에서 _dirty_sockv2.py_를 실행하기만 하면 됩니다. dirty_sock 익스플로잇이 성공적으로 실행된 후, 스크립트에 의해 동일한 비밀번호를 가진 dirty_sock 계정이 자동으로 생성된 것을 확인할 수 있습니다.

그런 다음 _/etc/passwd_를 확인하여 등록된 사용자 목록을 확인하고 "dirty_sock"이라는 새 사용자가 생성되었는지 확인합니다.

su 명령을 사용하여 발견된 자격 증명으로 "dirty_sock" 계정에 로그인할 수 있습니다. 성공적으로 로그인한 후 이 사용자의 권한을 확인하면 sudo 그룹에 속해 있음을 알 수 있습니다. 이는 공격자가 이미 시스템에 대한 완전한 제어권을 획득했으며 최고 권한으로 무엇이든 할 수 있음을 의미합니다.

이 취약점의 CVSS 점수는 8.8(높은 심각도)로, 악용될 경우 시스템에 큰 영향을 미칠 수 있음을 의미합니다. 이 취약점은 악용하는 데 높은 권한이 필요하지 않기 때문에 심각도가 높습니다. 공격자가 이미 시스템에 어느 정도 발판을 마련한 상태(예: 낮은 권한의 사용자)에서 루트로 권한을 상승시킬 수 있으므로, 이 취약점은 특히 다중 사용자 또는 클라우드 환경에서 심각한 로컬 보안 위협이 됩니다.