[하루한줄] OMIGOD: Microsoft Azure의 OMI에서 발견된 네 가지 취약점

URL

OMIGOD: Critical Vulnerabilities in OMI Affecting Countless Azure Customers

Target

  • OMI (undocumented)

Explain

Microsoft의 클라우드 컴퓨팅 플랫폼 Azure에서 사용되는 오픈 관리 인프라(OMI)의 네 가지 취약점에 대한 세부 정보가 공개되었습니다. OMI는 리눅스 환경에서 사용되는 설정 관리 프로그램으로, 원격 및 로컬 환경에서 가상 머신에 대한 설정 및 통계 자료를 수집합니다. 해당 취약점은 OMIGOD으로 명명되었으며 Azure의 대부분의 서비스에 영향을 주는 것으로 알려졌습니다.

취약점 목록은 다음과 같습니다.

  • CVE-2021-38647 – root 권한의 RCE
  • CVE-2021-38648 – 로컬 권한 상승
  • CVE-2021-38645 – 로컬 권한 상승
  • CVE-2021-38649 – 로컬 권한 상승

아래는 위 취약점들 중 CVE-2021-38647의 대한 세부 정보입니다. 해당 취약점은 인증되지 않은 사용자가 root 권한으로 원격 코드 실행을 할 수 있어 치명적인 위험도로 분류되었습니다. OMI는 기본적으로 root 권한으로 실행되며 POST 요청을 통해 원격에서 요청한 명령어를 실행하는 기능이 존재합니다.

static Http_CallbackResult _ReadData(Http_SR_SocketData* handler)
{
....
    if(handler->recvHeaders.authorization) { // (1)
        Http_CallbackResult authorized;
        handler->requestIsBeingProcessed = MI_TRUE;

        if (handler->isAuthorised)
            Deauthorize(handler);
 
        authorized = IsClientAuthorized(handler);

        if (PRT_RETURN_FALSE == authorized)
            goto Done;
        else if (PRT_CONTINUE == authorized)
            return PRT_CONTINUE;
    }
    else{
        if (handler->authFailed) {   // (2)
            handler->httpErrorCode = HTTP_ERROR_CODE_UNAUTHORIZED;
            return PRT_RETURN_FALSE;
        }
    }
    r = Process_Authorized_Message(handler);
Done:
    handler->recvPage = 0;
    handler->receivedSize = 0;
    memset(&handler->recvHeaders, 0, sizeof(handler->recvHeaders));
    handler->recvingState = RECV_STATE_HEADER;
    return PRT_CONTINUE;
}

유저가 서버에 연결하면 uidgid가 포함된 구조체를 memset을 이용해 0으로 초기화하고 인증을 기다립니다. 이후 POST 요청의 Authorization 필드의 암호로 인증이 성공하면 giduid를 해당 유저의 권한으로 설정한 뒤 명령어를 실행하는데, 이때 Authorization 헤더가 존재하지 않으면 (1)의recvHeaders.authorization 가 False가 되어 else문을 실행하지만 인증 프로세스를 수행하지 않았기 때문에 (2)에서 handler->authFailed 또한 기본값인 False이므로 인증 성공 시 실행되는 분기로 넘어갑니다. 따라서 Authorization 헤더를 제거한 명령어 실행 요청을 보내면 인증 프로세스를 건너뛰고 memset에 의해 0으로 초기화된 giduid, 즉 root 권한으로 원격 코드 실행이 가능합니다.

해당 취약점 외 3개의 권한 상승 취약점인 CVE-2021-38645/38648/38649 또한 동일하게 OMI의 인증 프로세스의 과정에서 발생하는 권한 상승으로 자세한 정보는 URL에서 확인할 수 있습니다.