Back-End

26 jan, 2017

WordPress para obter atualizações criptográficas seguras

Publicidade

Trabalho emocionante está sendo feito no que diz respeito ao sistema de atualização automática do WordPress que permite que à equipe do WordPress assinar cada atualização.

Essa assinatura pode ser verificada por cada instalação do WordPress para garantir que você está instalando a atualização real do WordPress, e não algo de um servidor comprometido.

Comprometimento da infraestrutura de atualização do WordPress

Esse trabalho está sendo conduzido pelo pesquisador de segurança Scott Arciszewski da Paragon Initiative, uma voz de longa data na comunidade de segurança do PHP. Ele vem alertando sobre os perigos potenciais da infraestrutura de atualização do WordPress há muito tempo.

Scott e eu discutimos isso no podcast do SysCast sobre Segurança de Aplicativos também.

Desde o WordPress 3.7, o suporte foi adicionado para atualizar automaticamente as instalações do WordPress no caso de vulnerabilidades críticas serem descobertas. Eu os elogiei por isso – eu realmente amo esse aspecto. Ele requer zero esforço do mantenedor do site.

Mas isso, obviamente, representa uma ameaça, como explica Scott:

Atualmente, se um invasor pode comprometer api.wordpress.org, eles podem emitir uma atualização falsa do WordPress e obter acesso a cada instalação do WordPress na Internet que tenha a atualização automática habilitada. Estamos a dois minutos da meia-noite aqui (estávamos a um minuto da meia-noite antes de a equipe da Wordfence descobrir essa vulnerabilidade). Dada a onipresença do WordPress, um invasor com o controle de 27% dos sites na Internet é uma grave ameaça à segurança do restante da Internet. Eu não sei quanta infraestrutura pode suportar esse nível de DDoS. #39309: Secure WordPress Against Infrastructure Attacks

Scott já publicou vários artigos de segurança, com o Guide to Automatic Security Updates For PHP Developers, sem dúvida, sendo o mais importante para qualquer pessoa projetar e criar um CMS.

Cada CMS, de Drupal a WordPress até Joomla, usa um mecanismo de atualização fraco: se um invasor consegue assumir o controle sobre o(s) servidor(s) de atualização, não há prova adicional de que eles precisam ter para emitir novas atualizações. Isso representa uma ameaça real para a estabilidade da web.

Protegendo atualizações automáticas

Para o WordPress, um modelo de autenticação federada é proposto.

Ele consiste em 3 áreas-chave, como Scott explica:

  1. Os notários (blogs WordPress ou outros serviços que optarem por hospedar/verificar as atualizações) espelharão uma árvore Merkle que contém (com timestamps e assinaturas):

— Novas chaves públicas

— Qualquer revogação de chaves públicas

— Criptografia hashes de quaisquer atualizações de núcleo/extensão

  1. Blogs WordPress terão uma pesquisa de notários em que confiam explicitamente. […]
  2. Quando uma atualização é recebida do servidor, depois de verificar a assinatura contra a chave pública do núcleo do WP, eles irão pesquisar pelo menos um Notary [..]. O Notário verificará se a atualização existe e corresponde à soma de verificação no arquivo e responde com uma mensagem assinada contendo:

— O desafio nonce

— A resposta timestamp

— Se a atualização foi ou não válida

Isso será útil no caso de a chave de assinatura do WP.org estar comprometida por um sofisticado adversário: se eles tentarem emitir uma atualização silenciosa e direcionada para uma máquina de interesse, eles não poderão fazê-lo de forma confiável [..].

#39309: Secure WordPress Against Infrastructure Attacks

Dessa forma, a fim de comprometer o sistema de atualização, você precisa enganar os notários também para aceitar a atualização falsa. Já não depende apenas do sistema de atualização em si, mas usa um conjunto de pares para validar cada uma dessas atualizações.

Mostre-me o dinheiro código

Os primeiros patches já foram propostos, agora cabe à equipe de segurança do WordPress avaliá-los e implementar quaisquer preocupações que possam ter: patch1 e patch2.

A maior parte do trabalho vem de um pacote PHP odium_compat que implementa os recursos fornecidos pelo libsodium, uma biblioteca de criptografia moderna e fácil de usar.

Fonte: #39309

Como o WordPress suporta PHP 5.2.4 e superior (essa é uma ameaça de segurança completamente diferente para o WordPress, mas vamos ignorá-lo por enquanto), é necessária uma implementação pura do PHP do libsodium, uma vez que as extensões binárias do PHP não são suportadas até agora. A extensão pecl/libsodium requer pelo menos PHP 5.4 ou superior.

Estamos na esperança de os patches serem aceitos e que possam ser usados em breve, assim como eu tenho certeza de que há um monte de partes interessadas em obter acesso à infraestrutura de atualização do WordPress.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/wordpress-get-secure-cryptographic-updates/.