Introdução – Explorando o Desconhecido: Abaixo da Superfície do SSRF WordPress Sem Patches
No cenário em constante evolução da segurança cibernética, o WordPress continua sendo um alvo popular devido ao seu uso generalizado e extenso ecossistema de plugins. Embora o núcleo do WordPress seja geralmente seguro, vulnerabilidades geralmente surgem de plugins e temas de terceiros. Uma dessas vulnerabilidades que atraiu atenção é a vulnerabilidade Server-Side Request Forgery (SSRF). Nesta postagem do blog, vamos nos aprofundar nas complexidades da vulnerabilidade SSRF do WordPress não corrigida, suas implicações e como o WP-Firewall pode ajudar a proteger seu site WordPress dessas ameaças.
## A causa raiz: wp_http_validate_url()
Em setembro de 2022, a SonarSource publicou um aviso sobre um SSRF não autenticado do WordPress Core Blind sem patch. A causa raiz dessa vulnerabilidade está na função `wp_http_validate_url()`, que é suscetível a ataques de revinculação de DNS. Embora o núcleo do WordPress em si não seja afetado diretamente, os plug-ins que utilizam essa função vulnerável estão em risco.
Compreendendo wp_http_validate_url()
A função `wp_http_validate_url()` foi projetada para validar URLs para evitar redirecionamentos e ataques de falsificação de solicitação. No entanto, ela não protege contra ataques de revinculação de DNS, tornando-a um vetor potencial para vulnerabilidades SSRF. Esta função é frequentemente usada em conjunto com `wp_remote_get()` e sua alternativa mais segura, `wp_safe_remote_get()`.
A parte óbvia: wp_remote_get() e wp_safe_remote_get()
A função `wp_remote_get()` é comumente usada para solicitar hosts remotos por meio do servidor. No entanto, é bem conhecido que passar URLs de entrada do usuário para essa função pode levar a vulnerabilidades SSRF. Para mitigar esse risco, o WordPress introduziu `wp_safe_remote_get()`, que inclui validações adicionais para evitar ataques SSRF.
Quão seguro é wp_safe_remote_get()?
A função `wp_safe_remote_get()` foi projetada para ser uma alternativa mais segura a `wp_remote_get()`. De acordo com a documentação oficial do WordPress:
"Esta função é ideal quando a solicitação HTTP está sendo feita para uma URL arbitrária. A URL é validada para evitar redirecionamentos e ataques de falsificação de solicitação."
Entretanto, a segurança da função é limitada pela função subjacente `wp_http_validate_url()`, que, como mencionado anteriormente, é vulnerável a ataques de revinculação de DNS.
Mergulhando na função
O código-fonte para `wp_safe_remote_get()` é o seguinte:
php
função wp_safe_remote_get( $url, $args = array() ) {
$args['rejeitar_urls_inseguras'] = verdadeiro;
$http = _wp_http_get_object();
retornar $http->get( $url, $args );
}
Na linha 2, o parâmetro `$args['reject_unsafe_urls']` é definido como `true`, o que eventualmente passa a entrada do usuário para a função `wp_http_validate_url()` antes de solicitar a URL. Como `wp_http_validate_url()` é vulnerável a ataques de revinculação de DNS, qualquer função que dependa exclusivamente dela para validação também é vulnerável.
Limitações da Vulnerabilidade
Embora este não seja um SSRF completo, há limitações definidas pela função `wp_http_validate_url()`:
– O protocolo deve ser `http://` ou `https://`
– A porta só pode ser 80, 443 ou 8080
Apesar dessas limitações, solicitar hosts internos dentro desses limites é possível por meio deste SSRF.
Código de plugin vulnerável
Aqui estão alguns exemplos de código de plugin vulnerável:
SSRF não cego
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
eco $resposta;
?>
Se o plugin receber a entrada do usuário, passá-la para a função `wp_safe_remote_get()` e então exibir a resposta, ele estará vulnerável ao SSRF limitado não cego.
SSRF cego
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
se ($response_code == 200) {
eco "Ativo e funcionando";
} outro {
echo "Inativo ou não encontrado!";
}
?>
Se o plugin passar a entrada do usuário para `wp_safe_remote_get()`, mas retornar apenas o código de resposta/status, ele estará vulnerável ao SSRF cego, limitando o impacto à varredura de portas 80, 443 ou 8080 de qualquer host interno.
Demonstração de Ataque
Para demonstrar essa vulnerabilidade, realizamos um ataque em um servidor Apache executando WordPress na porta 80 e um servidor PHP executando em localhost:8080 com algumas informações secretas. O código vulnerável foi inserido no diretório de plugins `/wp-content/plugins/vulnerable-plugin/index.php`.
Repositório GitHub
Você pode encontrar uma instância vulnerável do Docker e o script de exploração para brincar com essa vulnerabilidade aqui Repositório GitHub. Crédito: Ananda Dhakal
## Funções Mais Vulneráveis
A mesma vulnerabilidade se aplica a outras funções que dependem de `wp_http_validate_url()` para validação:
– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`
Além disso, algumas funções agem como wrappers para `wp_safe_remote_get()` e também são vulneráveis até certo ponto:
– `Controlador de detalhes de URL WP_REST::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`
Conclusão
É evidente que funções consideradas seguras e projetadas para proteger contra vulnerabilidades SSRF não são totalmente infalíveis. A dependência de `wp_http_validate_url()`, que é vulnerável a ataques de revinculação de DNS, expõe sites WordPress a potenciais ataques SSRF. Instamos a equipe do WordPress Core a resolver esse problema e lançar um patch para aumentar a segurança da plataforma.
Como o WP-Firewall pode ajudar
Na WP-Firewall, entendemos a importância crítica de proteger seu site WordPress contra ameaças emergentes. Nossas soluções de segurança abrangentes são projetadas para fornecer proteção robusta contra uma ampla gama de vulnerabilidades, incluindo ataques SSRF. Veja como a WP-Firewall pode ajudar a proteger seu site WordPress:
Detecção de ameaças em tempo real
O WP-Firewall oferece recursos de detecção de ameaças em tempo real que monitoram seu site em busca de atividades suspeitas e vulnerabilidades potenciais. Nossos algoritmos avançados podem identificar e bloquear tentativas de SSRF, garantindo que seu site permaneça seguro.
Auditorias de segurança regulares
Nossa equipe de especialistas em segurança realiza auditorias regulares do seu site WordPress e seus plugins para identificar e lidar com vulnerabilidades. Ao ficar à frente de ameaças potenciais, ajudamos você a manter um ambiente seguro para seus usuários.
Gerenciamento automatizado de patches
Manter seu núcleo, temas e plugins do WordPress atualizados é crucial para a segurança. O WP-Firewall fornece gerenciamento de patches automatizado, garantindo que todos os componentes do seu site sejam atualizados com os patches de segurança mais recentes.
Regras de firewall personalizadas
O WP-Firewall permite que você crie regras de firewall personalizadas adaptadas às suas necessidades específicas. Ao implementar regras que bloqueiam solicitações maliciosas e tentativas de acesso não autorizado, você pode aumentar a segurança do seu site.
Relatórios abrangentes
Nossos relatórios de segurança detalhados fornecem insights sobre as ameaças detectadas e ações tomadas para proteger seu site. Com o WP-Firewall, você pode ficar informado sobre o status de segurança do seu site WordPress o tempo todo.
Protegendo contra SSRF com WP-Firewall
Para abordar especificamente vulnerabilidades SSRF, o WP-Firewall oferece os seguintes recursos:
Validação de entrada
O WP-Firewall realiza uma validação rigorosa de entrada para garantir que as URLs fornecidas pelo usuário sejam seguras e livres de intenções maliciosas. Ao validar entradas em vários níveis, evitamos que ataques SSRF explorem funções vulneráveis.
Proteção de Revinculação de DNS
Nosso firewall inclui mecanismos de proteção de revinculação de DNS que detectam e bloqueiam tentativas de explorar vulnerabilidades de revinculação de DNS. Isso garante que seu site permaneça seguro mesmo se funções subjacentes como `wp_http_validate_url()` estiverem vulneráveis.
Solicitações de API seguras
O WP-Firewall protege as solicitações de API aplicando medidas rigorosas de validação e autenticação. Isso previne acesso não autorizado e mitiga o risco de ataques SSRF direcionados a endpoints de API.
Monitoramento Contínuo
Nossos recursos de monitoramento contínuo mantêm um olhar atento sobre o tráfego e as atividades do seu site. Qualquer comportamento suspeito é sinalizado e tratado prontamente, minimizando o risco de ataques SSRF bem-sucedidos.
Chamada para ação
Embora a vulnerabilidade SSRF do WordPress não corrigida represente um risco significativo, medidas proativas podem mitigar seu impacto. Ao aproveitar as soluções de segurança abrangentes do WP-Firewall, você pode proteger seu site WordPress de ataques SSRF e outras ameaças emergentes. Fique à frente de vulnerabilidades potenciais e garanta um ambiente seguro para seus usuários com o WP-Firewall.
Não espere por uma violação de segurança para agir. Proteja seu site WordPress hoje mesmo com o WP-Firewall. Comece seu teste gratuito e experimente a tranquilidade que vem com uma proteção robusta e em tempo real.
Para obter mais informações sobre como o WP-Firewall pode ajudar a proteger seu site WordPress, visite nosso site ou entre em contato com nossa equipe de suporte.
Fique seguro, protegido e mantenha seu site WordPress protegido com o WP-Firewall.
—
Conselhos de segurança semanais
Receba as últimas informações de segurança do WordPress em sua caixa de entrada. Assine nossa newsletter e fique informado sobre as últimas ameaças e melhores práticas para proteger seu site WordPress.
O mais recente em avisos de segurança
Veja todos os avisos de segurança mais recentes e fique atualizado sobre vulnerabilidades críticas que afetam plugins e temas do WordPress.
– 19 de maio de 2024: Relatório de Vulnerabilidade do WordPress (6 de maio de 2024 a 12 de maio de 2024)
– 15 de maio de 2024: Vulnerabilidades de alta prioridade corrigidas no plugin Uncode Core