Ran Harel

Actualização a 6 de Julho de 2021: A Microsoft lançou um patch para o CVE 2021-34527, disponível aqui.

Mais uma semana, mais uma vulnerabilidade crítica. A mais recente falha de segurança crítica é apelidada de "PrintNightmare", uma referência a duas vulnerabilidades no serviço Windows Print Spooler - CVE 2021-1675 e CVE 2021-34527, publicadas entre Junho e Julho de 2021.

A CVE 2021-1675 é uma vulnerabilidade corrigida que permite a execução remota de código e o aumento de privilégios em servidores e computadores que executam o Spooler de Impressão. O CVE 2021-34527 também permite a execução remota de código e o aumento de privilégios no mesmo serviço através de meios um pouco diferentes. (Actualização em 6 de Julho de 2021: a Microsoft lançou uma correcção para a CVE-2021-34527.) Neste momento, a relação exacta entre as duas vulnerabilidades não é clara e não se sabe se a correcção estava incompleta ou se foi descoberto outro método de ataque.

Antes de prosseguir, vamos começar pelo ponto principal - se ainda não o fez, desactivar qualquer serviço Spooler de Impressão do Windows em execução num controlador de domínio. (Semperis' Directory Services Protector (DSP) inclui indicadores que procuram continuamente exposições e sinais de compromisso, incluindo spoolers de impressão activados em controladores de domínio) .

O Semperis Directory Services Protector analisa continuamente o AD e alerta para indicadores de exposição e compromisso, incluindo um indicador para procurar controladores de domínio com o serviço de spooler de impressão activo em execução

O spooler de impressão é um serviço do Windows activado por predefinição em todos os clientes e servidores Windows. O serviço gere as tarefas de impressão carregando controladores de impressora, recebendo ficheiros a serem impressos, colocando-os em fila de espera, agendando-os, etc.

O serviço Spooler de Impressão é necessário quando um computador está fisicamente ligado a uma impressora que fornece serviços de impressão a outros computadores na rede. É possível utilizar controladores e software de terceiros (como os oferecidos pelos fabricantes de impressoras), mas muitas organizações confiam no serviço Spooler de Impressão predefinido.

Nos controladores de domínio, os Spoolers de Impressão são utilizados principalmente para a remoção deimpressoras que foram publicadas no Active Directory e que já não estão disponíveis na rede. O corte de impressoras é especialmente importante em ambientes maiores com muitas impressoras, uma vez que "limpa" a lista de impressoras disponível para os utilizadores do domínio. No entanto, para que esta abordagem funcione, tem de estar implementada uma Política de Grupo adequada.

Do ponto de vista da segurança, o spooler de impressão do Windows, e as impressoras em geral, têm sido um alvo interessante para a exploração por parte dos atacantes durante muitos anos. O worm Stuxnet de 2010, utilizado contra instalações nucleares iranianas, explorou uma vulnerabilidade no serviço para aumentar os privilégios e propagar malware pela rede. A mesma vulnerabilidade do spooler de impressão voltou a aparecer em 2020, quando os investigadores descobriram novas formas de a explorar. Juntamente com o facto de as impressoras serem notoriamente pirateáveis, talvez seja altura de passarmos verdadeiramente a não usar papel?

Bug do dia zero do PrintNightmare

A iteração de junho de 2021 da vulnerabilidade do Spooler de Impressão começou com o Patch Tuesday de junho de 2021 da Microsoft que incluía um patch para o CVE 2021-1675, que a Microsoft considerou uma vulnerabilidade de escalonamento de privilégios com exploração "menos provável" na altura - classificando uma pontuação CVSS de 6,8 (Risco Médio). A Microsoft actualizou este CVE em 21 de Junho para incluir a Execução Remota de Código e actualizou a pontuação CVSS para 7,8 (Risco Elevado). Alguns dias depois, o código de exploração PoC apareceu no GitHub. O código foi rapidamente retirado do ar, mas já foi bifurcado várias vezes.

Em 30 de Junho, tornou-se evidente que a correcção não era suficiente e que os sistemas totalmente corrigidos continuavam vulneráveis à execução remota de código e ao aumento de privilégios para SYSTEM. O código de exploração original foi modificado, tornando a correcção apenas um pouco eficaz.

Em 1 de Julho, a Microsoft criou uma nova vulnerabilidade, CVE 2021-34527. (6 de Julho de 2021 - A Microsoft lançou um patch).

Análise de vulnerabilidade do spooler de impressão

A vulnerabilidade de execução remota de código do spooler de impressão tira partido da chamada de função RpcAddPrinterDriver no serviço spooler de impressão que permite aos clientes adicionar ficheiros dll arbitrários como controladores de impressora e carregá-los como SYSTEM (o contexto do serviço spooler).

A função foi concebida para permitir que os utilizadores actualizem as impressoras remotamente - por exemplo, a pessoa de TI que instala remotamente a sua nova impressora de escritório. No entanto, uma falha lógica na forma como isto funciona permite a qualquer utilizador injectar a sua própria dll não assinada no processo, contornando a autenticação ou validação do ficheiro.

Atenuar o PrintNightmare

Actualização a 7 de Julho de 2021 - A Microsoft lançou um patch para o CVE 2021-34527. Ainda é recomendado desactivar o spooler de impressão onde não é necessário. Pode desactivar o serviço Spooler de Impressão em todos os seus DCs (ou em qualquer máquina) utilizando a definição de Política de Grupo em Configuração do ComputadorConfigurações do WindowsConfigurações de SegurançaServiços do Sistema ou, melhor ainda, utilizando as Preferências do GP em Configuração do ComputadorPreferênciasConfigurações do Painel de ControloServiços. Uma atenuação adicional e não oficial é limitar o acesso à pasta do controlador a partir da qual o serviço é carregado. Isso precisaria ser feito em cada servidor e não foi totalmente testado até onde sei, portanto, use por sua própria conta e risco.

Protecção dos controladores de domínio

Os controladores de domínio nunca devem ser utilizados como servidores de impressão. A única razão legítima que conheço para ter o Spooler de Impressão em execução num DC é a poda de impressoras mencionada acima. Para além das inúmeras vulnerabilidades no Spooler de Impressão do Windows, um vector de ataque contra este serviço conhecido como "o bug da impressora" permite que um atacante que consiga comprometer um recurso com delegação sem restrições Kerberos também comprometa o DC com privilégios SYSTEM. Uma boa explicação deste ataque está aqui.

Monitorizar continuamente a existência de vulnerabilidades como o PrintNightmare

Vemos vulnerabilidades em infra-estruturas de TI habitualmente implementadas numa base semanal. Os curtos tempos de ciclo, desde a divulgação até à utilização como arma, exigem uma abordagem de atenuação rápida que inclua a monitorização contínua do ambiente, combinada com a definição de prioridades e informações de correcção accionáveis.

O produto da Semperis Directory Services Protector (DSP) inclui indicadores que procuram continuamente exposições e sinais de comprometimento em ambientes de identidade híbrida (incluindo a detecção de spoolers de impressão activados em controladores de domínio) e fornece prioridades, métricas e orientações prescritivas para a correcção.

Mais recursos

Quer saber mais sobre como lidar com o PrintNightmare, o PetitPotam e outros novos ataques que visam o Active Directory? Assista a Reforçando as defesas do Active Directory: Lições aprendidas com ataques recentes como o PrintNightmareum seminário on-line gratuito e sob demanda, apresentado por Sean Deuby, diretor de serviços da Semperis.