[하루한줄] CVE-2021-34423: Zooming in on Zero-click Exploits

URL

Zooming in on Zero-click Exploits

Target

Zoom for Linux version 5.4.6

Explain

Zoom 클라이언트는 영상통화 도중 수신한 체팅 메세지를 msg_db_t 인스턴스로부터 deserialize하기 위해 ssb::conf_send_msg_req::load_from 메소드를 사용합니다.

해당 메소드는 버퍼로 문자열을 읽어들이는 read_str_with_len을 호출하는데, 문제는 버퍼를 할당할 때 msg_db_t로 부터 읽어들인 길이 값과 그 버퍼에 복사할 문자열의 길이가 같은지 확인하지 않습니다.

int __fastcall ssb::i_stream_t<ssb::msg_db_t,ssb::bytes_convertor>::

read_str_with_len(msg_db_t* msg, signed __int8 *mem,

unsigned int *len)

{

  if ( !msg->invalid )

  {

ssb::i_stream_t<ssb::msg_db_t,ssb::bytes_convertor>::operator>>(msg, len, (int)len, 0);

    if ( !msg->invalid )

    {

      if ( *len )

        ssb::i_stream_t<ssb::msg_db_t,ssb::bytes_convertor>::

read(msg, mem, *len, 0);

    }

  }

  return msg;

}

즉 해커가 msg_db_t의 내용을 조작할 수 있다면 할당되는 버퍼의 크기를 원하는대로 조절할 수 있고 이를 overflow해 메모리를 오염시킬 수 있습니다.