Muitos plugins do WordPress e CMS estão desabilitando a validação do certificado TLS/SSL … e isso é extremamente ruim

551

Um número absurdo de plugins do WordPress, CMS e bibliotecas PHP estão desabilitando a validação de certificados SSL / TLS de propósito e, ao fazer isso, estão colocando milhões de usuários da Internet em grande risco.

Para piorar, muitos desses plugins e bibliotecas são usados para estabelecer conexões com servidores de provedores de pagamento, conexões através das quais eles posteriormente transmitem dados confidenciais de usuários ou lidam com transações financeiras.

O problema reside em como os criadores de plugins do WordPress, CMS e bibliotecas PHP estão configurando seu código e, especificamente, algumas opções de Curl.

Curl é uma linha de comando encontrada em todos os servidores de hospedagem na Web, que é usado para transferir dados de e para servidores remotos. O uso do Curl é onipresente na comunidade de desenvolvimento web, e muitos plugins do WordPress, CMS e bibliotecas PHP usam para baixar, enviar e fazer upload de dados para servidores remotos por meio do console subjacente do servidor, em vez de abrir sessões reais do navegador para cada conexão.

O Curl suporta vários protocolos, como abrir conexões via HTTP, FTP, SMTP, POP3, LDAP e muito mais.

Por exemplo, quando um plug-in do WordPress que lida com transações financeiras para “Processo de pagamento”, ele usa conexões Curl em segundo plano para realmente enviar seus dados confidenciais de cartão de crédito para os servidores do provedor de pagamento. Isso geralmente acontece por meio de conexões Curl configuradas via HTTPS, para as quais o Curl também lida com a validação de certificados SSL / TLS, uma etapa crucial para garantir que você esteja falando com um servidor HTTPS legítimo.

Foi descoberto recentemente que os desenvolvedores de muitos plugins do WordPress, CMS e bibliotecas PHP estão desabilitando os recursos de segurança Curl para quando Curl é usado para baixar ou enviar dados via conexões HTTPS.

Esse é um grande problema, especialmente nos casos em que o Curl é usado para lidar com transações financeiras e dados confidenciais do usuário.

Ter essas conexões negociadas por meio de conexões HTTPS enfraquecidas é um desastre, já que pode permitir que os invasores façam com que os sites façam download ou enviem dados legítimos para servidores mal-intencionados. Como os dois recursos estão desativados, o site de origem não aciona nenhum alerta para os usuários nem para os proprietários dos sites.

A maioria dos dispositivos está desabilitando duas configurações importantes de segurança

Isso acontece por causa de duas configurações de Curl que os desenvolvedores de plugins do WordPress, CMS e bibliotecas do PHP desabilitam de propósito.

O primeiro é “CURLOPT_SSL_VERIFYHOST”, que muitos plugins e bibliotecas configuram como “false” em vez de “true”.

O que essa configuração significa é que o Curl não verifica a URL do host ao qual está se conectando para fazer o download ou o upload de dados. Desde que o servidor remoto tenha um certificado válido, assinado por qualquer autoridade de certificação aleatória, como Let’s Encrypt ou Comodo, o URL do servidor pode ser legitimate-site.com ou malicious-site.com, e o site pode abrir a partir da solicitação Curl original.

A segunda configuração de Curl que muitos desenvolvedores estão desabilitando é “CURLOPT_SSL_VERIFYPEER”, e estão configurando como “0” em vez do valor “2” que é mais seguro.

Essa configuração significa que os sites aceitarão conexões com qualquer servidor HTTPS, mesmo para aqueles que usam certificados autoassinados.

Esse não é um problema pequeno que pode ser ignorado. O problema é extremamente difundido na comunidade PHP, especialmente.

Uma pesquisa superficial do GitHub para a primeira e segunda configuração revela centenas de milhares de projetos em que os desenvolvedores estão desabilitando a validação do certificado Curl, incluindo centenas de plugins do WordPress.

UM FIX SIMPLES ESTÁ DISPONÍVEL

A principal razão pela qual tantos projetos estão com esses dois recursos Culr desabilitados é porque quando ativados eles tendem a gerar erros assustadores relacionados à segurança em servidores dos clientes. Para evitar alarmar seus clientes, a maioria dos desenvolvedores optam por desativar esses dois recursos, sem saber o que estão realmente fazendo.

A razão para esses erros, é que o Curl precisa verificar os certificados dos servidores HTTPS remotos em relação a uma lista de certificados SSL / TLS conhecidos e válidos.

Essa lista de autoridades de certificação autênticas –organizações autorizadas a emitir certificados SSL / TLS– está disponível para download em muitos lugares.

Infelizmente, alguns serviços de hospedagem na Web não armazenam essa lista, enquanto muitos armazenam em diferentes locais de servidor, impossibilitando a configuração de Curl para plugins do WordPress, CMS e bibliotecas PHP de uma maneira universal que funciona perfeitamente em todos os servidores.

Para resolver esse problema, Arciszewski criou uma biblioteca PHP personalizada chamada Certainty que baixará esse arquivo (cacert.pem) da página inicial Curl em intervalos regulares e o hospedará localmente, garantindo que os sites sempre tenham uma lista atualizada de Certificados válidos. Autoridades

O plug-in do WordPress, CMS e os proprietários da biblioteca PHP podem incluir essa biblioteca em seus projetos e, em seguida, ativar as duas configurações Curl em seus projetos sem ter que se preocupar em acionar alertas de segurança posteriormente.

Claro, um ambiente inseguro dentro de uma biblioteca dentro de outra biblioteca pode soar como uma questão insignificante, mas quando essa configuração insegura é usada em centenas de milhares de projetos, essa questão insignificante se torna um problema de toda a Internet e pode exigir algo tão simples quanto liberando melhores ferramentas.




Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *