[하루한줄] CVE-2021-27075: Microsoft Azure 권한 상승 및 정보 유출 취약점

URL

CVE-2021-27075: Microsoft Azure Vulnerability Allows Privilege Escalation and Leak of Private Data

Target

  • Microsoft Azure VM Extension

Explain

Microsoft의 클라우드 컴퓨팅 플랫폼 Microsoft Azure에서 VM Linux 시스템의 권한 상승과 정보 유출이 가능한 취약점이 발견되었습니다.

Azure VM은 개발자와 관리자가 추가 구성요소를 설치할 수 있도록 통합 플러그인 시스템을 제공합니다. 이 기능을 통해 Azure에서 제공하는 first party 외에 third party app 또한 설치할 수 있습니다. 이러한 확장 프로그램 설치를 관리하기 위해 Microsoft Azure Guest Agent가 /var/lib/waagent에 설치됩니다. 이 디렉터리에는 확장 프로그램에 대한 정보가 저장되어 있어 root가 아닌 사용자는 접근할 수 없습니다.

확장 프로그램이 VM에 추가되면 설정 파일은 Azure VM Manager인 Fabric Controller에 의해 업데이트됩니다. WAAgent가 Fabric Controller에서 이 파일을 받아와서 업데이트하고 확장 프로그램을 설치하고 deploy 합니다. WAAgent는 Fabric Controller와 특정 IP 주소(168.63.129.16)를 통해 통신합니다. ExtensionConfig 파일의 엔드 포인트 Response에는 개인 키와 같은 정보가 포함되어 있으며 키는 /var/lib/waagent/F54265F38F8D16C35C0E1FD3190882831A6C4384.prv에 저장되고 인증서는 /var/lib/waagent/F54265F38F8D16C35C0E1FD3190882831A6C4384.crt에 저장됩니다. ExtensionConfig 파일에 키와 인증서가 포함되어 있지 않으므로 확장 프로그램을 deploy 할 때 Wire Server와 통신하여 Certificates endpoint를 사용하는데 이때 전송된 인증서에 대한 검증이 존재하지 않아 정보 유출이 발생합니다.

해커가 자신의 개인 키와 인증서를 만들어 그를 통해 Wire Server에 암호화된 키를 수신합니다. Transport Key를 통해 암호화된 키를 복호화하여 ExtensionConfig의 protectedSettings를 읽어올 수 있습니다. 또한 Azure Instance Metadata Service인 169.254.169.254와의 통신을 통해 168.63.129.16에 필요한 root 권한 없이 Wire Server와 통신하여 정보를 유출할 수 있습니다.