Segurança

Saiba mais sobre os arquivos básicos do programa WordPress neste informativo grátis. Você também pode baixá-lo em PDF.

visao geral

Este documento é uma análise e explicação do desenvolvimento do software principal do WordPress e seus processos de segurança relacionados, bem como um exame da segurança inerente incorporada diretamente no software. Os tomadores de decisão que avaliam o WordPress como um sistema de gerenciamento de conteúdo ou uma estrutura de aplicativo da Web devem usar este documento em suas análises e tomadas de decisões, e para os desenvolvedores consultá-lo para se familiarizarem com os componentes de segurança e melhores práticas do software.

As informações neste documento estão atualizadas para a versão estável mais recente do software, o WordPress 4.7 no momento da publicação, mas devem ser consideradas relevantes também para as versões mais recentes do software, pois a compatibilidade com versões anteriores é um foco forte para o Equipe de desenvolvimento do WordPress. Medidas e mudanças de segurança específicas serão anotadas à medida que foram adicionadas ao software principal em versões específicas . É altamente recomendável estar sempre executando a última versão estável do WordPress para garantir a experiência mais segura possível.

Resumo executivo

O WordPress é um sistema dinâmico de gerenciamento de conteúdo de código aberto que é usado para gerar milhões de websites , aplicativos da Web e blogs. Atualmente, alimenta mais de39% dos 10 milhões de websites principais na Internet. WordPress & # 8217; A usabilidade, a extensibilidade e a comunidade de desenvolvimento madura tornam-na uma opção popular e segura para sites de todos os tamanhos.

Desde sua criação em 2003, o WordPress vem trabalhando continuamente em sua segurança, de modo que seus arquivos básicos podem corrigir e mitigar ameaças comuns, incluindo a lista da The Open Web Application Security Project (OWASP) com as 10 principais e mais comuns vulnerabilidades de segurança, que são discutidas neste documento.

O WordPress Security Team, em colaboração com o WordPress Core Leadership Team e apoiado pela comunidade global WordPress, trabalha para identificar e resolver problemas de segurança no software principal disponível para distribuição e instalação no WordPress.org, bem como recomendar e documentar melhor a segurança práticas para autores de plugins e temas de terceiros .

Os desenvolvedores e administradores do site devem prestar atenção especial ao uso correto das principais APIs e da configuração do servidor subjacente, que têm sido a fonte de vulnerabilidades comuns, além de garantir que todos os usuários utilizem senhas de alta segurança para acessar o WordPress.

Uma visão geral do WordPress

O WordPress é um sistema de gerenciamento de conteúdo (CMS, Content Management System) grátis e de código aberto. É o CMS mais usado no mundo, estando em mais de 39% dos primeiros 10 milhões de sites1 e ocupando uma fatia de mercado de 62% entre os sites que utilizam algum CMS.

O WordPress é licenciado sob a Licença Pública Geral (GPLv2 ou posterior), que fornece quatro liberdades fundamentais e que pode ser considerada a "declaração de direitos" do WordPress:

  1. A liberdade de executar o programa, para qualquer finalidade.
  2. A liberdade de estudar como o programa funciona e alterá-lo para que ele faça o que deseja.
  3. A liberdade de redistribuir.
  4. A liberdade de distribuir cópias de suas versões modificadas para outras pessoas.

A equipe de liderança do WordPress Core

O projeto WordPress é uma meritocracia, dirigida por uma equipe central de liderança, liderada por Matt Mullenweg, seu co-criador e desenvolvedor líder. A equipe gerencia todos os aspectos do projeto, incluindo o desenvolvimento central, WordPress.org e iniciativas comunitárias.

A liderança da Equipe dos arquivos básicos é composta pelo Matt Mullenweg, cinco desenvolvedores líderes e mais de uma dúzia de desenvolvedores com acesso a commits, isto é, alterações no código presente no repositório oficial. Estes desenvolvedores têm a autoridade final em decisões técnicas e conduzem as discussões sobre arquitetura e esforços de implementação.

O WordPress tem muitos desenvolvedores colaboradores. Alguns deles são antigos ou atuais committers, e alguns, é possível que sejam futuros committers. Esses desenvolvedores colaboradores são parceiros confiáveis e veteranos do WordPress, que ganharam um grande respeito entre seus colegas. Quando necessário, o WordPress também tem committers convidados, indivíduos que se lhes concedem acesso, às vezes para um componente específico, para tarefas temporárias ou de testes.

Os desenvolvedores principais e contribuintes orientam principalmente o desenvolvimento do WordPress. Todas as versões, centenas de desenvolvedores contribuem com código para o WordPress. Esses colaboradores principais são voluntários que contribuem de alguma forma para a base de código principal.

O ciclo de lançamento do WordPress

Cada ciclo de lançamento do WordPress é liderado por um ou mais dos desenvolvedores do núcleo do WordPress. Um ciclo de lançamento geralmente dura cerca de 4 meses desde a reunião inicial de escopo até o lançamento da versão.

Um ciclo de lançamento segue o seguinte padrão2:

  • Fase 1: Planejamento e consolidação das líderes de equipe. Isso é feito no canal #core do Slack internacional. O líder da revista tem recursos do próximo lançamento do WordPress. Colaboradores do WordPress se envolvem nesta discussão. O líder da versão em inglês da série de recursos para cada um dos recursos.
  • Fase 2: O trabalho de desenvolvimento começa. As líderes organizam como equipes e trabalhos nos recursos que foram atribuídos. Bate-papos regulares são agendados para garantir que o desenvolvimento continue progredindo.
  • Fase 3: Beta As versões beta são lançadas e os testadores são pedidos para que seja enviado um erro. Não há mais comprometimentos, ou seja, o uso de novos recursos para a nova fase. Plugins de terceiros e autores de tema são encorajados a testar seus códigos com as alterações que estão por vir.
  • Fase 4: candidato à lançamento. Há uma paragem técnica para traduzir os textos neste ponto. O trabalho visa apenas regressões e bloqueadores.
  • Fase 5: lançamento. Versão do WordPress é lançada e disponibilizada no Administrador do WordPress para atualizações.

Numeração de Versões e Lançamento de Segurança

Uma versão principal do WordPress é ditada pelas duas primeiras seqüências. Por exemplo, 3.5 é uma versão principal , como é 3.6, 3.7 ou 4.0. Não existe & # 8217; ta & # 8220; WordPress 3 & # 8221; ou & # 8220; WordPress 4 & # 8221; e cada lançamento principal é referido por sua numeração, por exemplo, "WordPress 3.9". # 8221;

As versões principais podem adicionar novos recursos do usuário e APIs de desenvolvedor. Embora normalmente no mundo do software, um & # 8220; major & # 8221; versão significa que você pode quebrar a compatibilidade com versões anteriores, o WordPress se esforça para nunca quebrar a compatibilidade com versões anteriores. A compatibilidade retroativa é uma das filosofias mais importantes do projeto, com o objetivo de tornar as atualizações muito mais fáceis para usuários e desenvolvedores.

Uma versão menor do WordPress é ditada pela terceira seqüência. A versão 3.5.1 é uma versão menor , como é a 3.4.23. Uma versão secundária é reservada para corrigir vulnerabilidades de segurança e endereçar apenas bugs críticos . Já que novas versões do WordPress são lançadas com tanta frequência & mdash; o objetivo é a cada 4-5 meses para um grande lançamento , e lançamentos menores acontecem conforme necessário & mdash; existe apenas a necessidade de lançamentos maiores e menores .

Compatibilidade com versões anteriores

O projeto WordPress tem um forte compromisso com a compatibilidade com versões anteriores. Este compromisso significa que os temas, plugins, e código personalizado continua a funcionar quando o software do núcleo do WordPress é atualizado, incentivando os proprietários do site para manter sua versão do WordPress atualizada para a versão mais recente seguro.

WordPress e segurança

A equipe de segurança do WordPress

A equipe de segurança do WordPress é composta de aproximadamente50 especialistas, incluindo desenvolvedores de chumbo e pesquisadores de segurança-cerca de metade são funcionários da Automattic (fabricantes de WordPress.com, o mais antigo e maior plataforma de hospedagem WordPress na Web), e um número trabalho no campo de segurança da Web. A equipe consulta com pesquisadores de segurança bem conhecidos e confiáveis e empresas de hospedagem3.

A equipe de segurança do WordPress colabora frequentemente com outras equipes de segurança para resolver problemas em dependências comuns, como resolver a vulnerabilidade no analisador PHP XML, usado pela API XML-RPC que acompanha o WordPress, no WordPress 3.9.2 4. Essa resolução de vulnerabilidade foi resultado de um esforço conjunto de equipes de segurança do WordPress e do Drupal.

WordPress riscos de segurança, processo e história

A equipe de segurança do WordPress acredita na divulgação responsável alertando a equipe de segurança imediatamente de qualquer potencial vulnerabilidade. Potenciais vulnerabilidades de segurança podem ser sinalizados para a equipe de segurança através do HackerOne WordPress5. A equipe de segurança se comunica entre si por meio de um canal Slack privado, e trabalha em um Trac-off, privado para rastrear, testar e corrigir bugs e problemas de segurança.

Cada relatório de segurança é reconhecido após o recebimento e a equipe trabalha para verificar a vulnerabilidade e determinar sua severidade. Se confirmado, a equipe de segurança, em seguida, planeja um patch para corrigir o problema que pode ser comprometido com uma próxima versão do software WordPress ou pode ser empurrado como uma liberação de segurança imediata, dependendo da gravidade do problema.

Para uma liberação de segurança imediata, um comunicado é publicado pela equipe de segurança para o site WordPress.org news 6 anunciando o lançamento e detalhando as alterações. O crédito para a divulgação responsável de uma vulnerabilidade é dado no comunicado para incentivar e reforçar a continuação de relatórios responsáveis no futuro.

Os administradores do software WordPress ver uma notificação em seu painel de site para atualizar quando uma nova versão está disponível, e seguindo os usuários de atualização manual são redirecionados para a tela sobre o WordPress, que detalha as mudanças. Se os administradores tiverem atualizações automáticas em segundo plano habilitadas, elas receberão um e-mail após a conclusão de uma atualização.

Atualizações automáticas de fundo para lançamentos de segurança

A partir da versão 3,7, o WordPress introduziu atualizações automatizadas de fundo para todas as versões secundárias 7, como 3.7.1 e 3.7.2. A equipe de segurança do WordPress pode identificar, corrigir e empurrar aprimoramentos de segurança automatizados para o WordPress sem que o proprietário do site precise fazer nada no final, e a atualização de segurança será instalada automaticamente.

Quando uma atualização de segurança é empurrada para a versão estável atual do WordPress, a equipe principal também irá empurrar as atualizações de segurança para todas as versões que são capazes de atualizações de fundo (desde WordPress 3,7), para que essas versões mais antigas, mas ainda recentes do WordPress vai receber aprimoramentos de segurança.

Proprietários de sites individuais podem optar por remover atualizações de fundo automáticas através de uma mudança simples em seu arquivo de configuração, mas manter a funcionalidade é fortemente recomendado pela equipe principal, bem como executar a versão mais recente estável do WordPress.

2013 OWASP Top 10

O projeto de segurança de aplicativo Web aberto (OWASP) é uma comunidade on-line dedicada à segurança de aplicativos Web. O OWASP Top 10 lista 8 concentra-se em identificar os riscos de segurança de aplicativos mais sérios para uma ampla gama de organizações. Os 10 principais itens são selecionados e priorizados em combinação com estimativas de consenso de EXPLORABILIDADE, detectabilidade e estimativas de impacto.

As seções a seguir discutem as APIs, recursos e políticas que o WordPress usa para fortalecer o software principal e os plugins e temas do 3o partido contra esses riscos potenciais.

A1-injeção

Há um conjunto de funções e APIs disponíveis no WordPress para ajudar os desenvolvedores a certificar-se de código não autorizado não pode ser injetado, e ajudá-los a validar e higienizar os dados. As práticas recomendadas e a documentação estão disponíveis 9 sobre como usar essas APIs para proteger, validar ou higienizar dados de entrada e saída em HTML, URLs, cabeçalhos HTTP e ao interagir com o banco de dados e o sistema de arquivos. Os administradores também podem restringir ainda mais os tipos de arquivo que podem ser carregados por meio de filtros.

A2-autenticação quebrada e gerenciamento de sessão

Software de núcleo WordPress gerencia contas de usuário e autenticação e detalhes, como o ID do usuário, nome e senha são gerenciados no lado do servidor, bem como os cookies de autenticação. As senhas são protegidas no banco de dados usando técnicas padrão de salga e alongamento. As sessões existentes são destruídas após o logout para versões do WordPress após 4,0.

A3 - Execução de scripts de outros sites (XSS, Cross-Site Scripting)

WordPress fornece uma gama de funções que podem ajudar a garantir que os dados fornecidos pelo usuário é seguro10. usuários confiáveis, que é administradores e editores em uma única instalação do WordPress, e os administradores de rede apenas em WordPress Multisite, pode postar não filtrada HTML ou JavaScript como eles precisam, como dentro de uma postagem ou página. Os usuários não confiáveis e o conteúdo enviado pelo usuário são filtrados por padrão para remover entidades perigosas, usando a biblioteca KSES por meio da funçãowp_kses.

Como exemplo, a equipe do núcleo do WordPress notou antes do lançamento do WordPress 2,3 que a função the_search_query() estava sendo mal utilizada pela maioria dos autores do tema, que não estavam escapando a saída da função para uso em HTML. Em um caso muito raro de quebrar ligeiramente a compatibilidade com versões anteriores, a saída da função foi alterada no WordPress 2,3 para ser pré-escapada.

A4-referência de objeto direto inseguro

O WordPress geralmente fornece referência direta de objeto, como identificadores numéricos exclusivos de contas de usuário ou conteúdo disponível nos campos de URL ou formulário. Embora esses identificadores divulguem informações diretas do sistema, as permissões ricas do WordPress e o sistema de controle de acesso impedem solicitações não autorizadas.

A5-configuração incorreta de segurança

A maioria das operações de configuração de segurança do WordPress é limitada a um único administrador autorizado. Configurações padrão para o WordPress são continuamente avaliados no nível da equipe principal, ea equipe do núcleo do WordPress fornece documentação e melhores práticas para apertar a segurança para a configuração do servidor para a execução de um site WordPress 11.

A6-exposição de dados sensíveis

Senhas de conta de usuário do WordPress são salgados e hash com base no Portable PHP password hashing Framework 12. WordPress ' sistema de permissão é usado para controlar o acesso a informações privadas tais usuários registrados ' PII, endereços de e-mail de commentros, em particular conteúdo publicado, etc. No WordPress 3,7, um medidor de força de senha foi incluído no software de núcleo fornecendo informações adicionais para os usuários definindo suas senhas e dicas sobre o aumento da força. WordPress também tem uma configuração opcional para exigir HTTPS.

A7-controle de acesso de nível de função ausente

O WordPress verifica a devida autorização e permissões para quaisquer solicitações de acesso de nível de função antes da ação que está sendo executada. O acesso ou a visualização de URLs, menus e páginas administrativas sem autenticação adequada é totalmente integrado ao sistema de autenticação para impedir o acesso de usuários não autorizados.

A8-falsificação de pedido de cross-site (CSRF)

O WordPress usa tokens criptográficos, chamados nonces 13, para validar a intenção de solicitações de ação de usuários autorizados para proteger contra possíveis ameaças CSRF. O WordPress fornece uma API para a geração desses tokens para criar e verificar tokens únicos e temporários, e o token é limitado a um usuário específico, uma ação específica, um objeto específico e um período de tempo específico, que pode ser adicionado aos formulários e URLs conforme necessário. Além disso, todos os nonces são invalidados após o logout.

A9-usando componentes com vulnerabilidades conhecidas

A equipe do núcleo de WordPress monitora pròxima as poucas bibliotecas e frameworks incluídos WordPress integra com para a funcionalidade do núcleo. No passado, a equipe principal fez contribuições para vários componentes de terceiros para torná-los mais seguros, como a atualização para corrigir uma vulnerabilidade entre sites em TinyMCE no WordPress 3.5.2 14.

Se necessário, a equipe principal pode decidir bifurcar ou substituir componentes externos críticos, como quando a biblioteca SWFUpload foi oficialmente substituída pela biblioteca Plupload em 3.5.2, e um garfo seguro do SWFUpload foi disponibilizado pela equipe de segurança < 15 para aqueles plugins que continuaram a usar SWFUpload no curto prazo.

A10 - Redirecionamentos e Encaminhamentos Não Validados

O controle de acesso interno do WordPress e o sistema de autenticação fornecem proteção contra tentativas de acesso direto a destinos indesejados ou redirecionamentos automáticos. Esta funcionalidade também está disponível para desenvolvedores de plugins através de uma API: wp_safe_redirect()16.

Outros riscos e preocupações de segurança

Ataques de processamento XXE (XML eXternal Entity)

Ao processar XML, o WordPress desactiva o carregamento de entidades XML personalizadas para evitar ataques de Expansão de entidades externas e de entidades. Além da funcionalidade principal do PHP’s, o WordPress não oferece API de processamento XML segura adicional para autores de plugins.

Ataques SSRF ( Forgery Request Request Server )

As solicitações HTTP emitidas pelo WordPress são filtradas para impedir o acesso a endereços IP de loopback e privados. Além disso, o acesso só é permitido para determinadas portas HTTP padrão.

Plugin WordPress e Segurança do Tema

O tema padrão

O WordPress requer que um tema seja ativado para tornar o conteúdo visível no frontend. O tema padrão que vem com o WordPress principal (atualmente "Twenty Twenty-One") foi vigorosamente revisado e testado por razões de segurança tanto pela equipe de desenvolvedores de temas quanto pela equipe de desenvolvimento principal.

O tema padrão pode servir como um ponto de partida para o desenvolvimento de temas personalizados , e os desenvolvedores de sites podem criar um tema filho que inclui alguma personalização, mas retrocede no tema padrão para a maioria das funcionalidades e segurança. O tema padrão pode ser facilmente removido por um administrador, se não for necessário.

Repositórios de Tema e Plugins do WordPress.org

Existem aproximadamente 50.000+ plugins e5.000+ temas listados no site WordPress.org . Esses temas e plugins são enviados para inclusão e são revisados ​​manualmente por voluntários antes de serem disponibilizados no repositório.

A inclusão de plugins e temas no repositório não é garantia de que estão livres de vulnerabilidades de segurança. Diretrizes são fornecidas para os autores de plugins consultarem antes do envio para inclusão no repositório17e extensa documentação sobre como fazer o desenvolvimento do tema WordPress18 é fornecido no site WordPress.org .

Cada plugin e tema tem a capacidade de ser desenvolvido continuamente pelo proprietário do plugin ou do tema , e qualquer correção ou desenvolvimento de recurso subsequente pode ser carregado no repositório e disponibilizado para usuários com esse plugin ou tema instalado com uma descrição dessa alteração. Os administradores do site são notificados sobre os plugins que precisam ser atualizados por meio do painel de administração.

Quando uma vulnerabilidade de plugin é descoberta pela equipe de segurança do WordPress, eles entram em contato com o autor do plugin e trabalham juntos para corrigir e liberar uma versão segura do plugin. Se houver falta de resposta do autor do plugin ou se a vulnerabilidade for grave, o plugin/tema será extraído do diretório público e, em alguns casos, corrigido e atualizado diretamente pela Equipe de Segurança.

O tema de Avaliação

A Equipe de Revisão de Tema é um grupo de voluntários, liderado por membros-chave e estabelecidos da comunidade WordPress, que revisam e aprovam temas submetidos para serem incluídos no diretório oficial do Tema WordPress . O tema de Avaliação mantém os oficiais Tema Diretrizes para análise19, os dados de teste de unidade de tema20, e os plugins de verificação de tema21e tenta envolver e educar a comunidade de desenvolvedores do Tema WordPress em relação às melhores práticas de desenvolvimento. A inclusão no grupo é moderada pelos principais committers da equipe de desenvolvimento do WordPress.

A função do provedor de hospedagem na segurança do WordPress

WordPress pode ser instalado em uma infinidade de plataformas. Embora o software principal do WordPress forneça muitas disposições para operar um aplicativo da Web seguro, que foram abordados neste documento, a configuração do sistema operacional e do servidor da Web subjacente que hospeda o software é igualmente importante para manter os aplicativos do WordPress seguros.

Uma nota sobre a segurança do WordPress.com e do WordPress

O WordPress.com é a maior instalação do WordPress no mundo e pertence e é gerenciado pela Automattic, Inc., fundada por Matt Mullenweg, o co-criador do projeto WordPress. O WordPress.com é executado no núcleo do software WordPress e possui seus próprios processos, riscos e soluções de segurança.22. Este documento refere-se à segurança em relação ao software WordPress de código aberto, auto-hospedado, disponível para download, disponível no WordPress.org e instalável em qualquer servidor no mundo.

Apêndice

APIs principais do WordPress

A Interface de Programação de Aplicativos (API) do WordPress Core é composta de várias APIs individuais23, cada um cobrindo as funções envolvidas e o uso de um determinado conjunto de funcionalidades. Juntos, eles formam a interface do projeto, que permite que plug-ins e temas interajam, alterem e ampliem a funcionalidade principal do WordPress com segurança e segurança.

Enquanto cada API WordPress fornece as melhores práticas e maneiras padronizadas de interagir e estender software WordPress core, as seguintes APIs WordPress são as mais pertinentes para reforçar e endurecer a segurança WordPress:

API de banco de dados

A API24 do banco de dados, adicionada no WordPress 0.71, fornece o método correto para acessar dados como valores nomeados que são armazenados na camada de banco de dados.

API do sistema de arquivos

A API do sistema de arquivos25, adicionada no WordPress 2.626, foi originalmente criada para o WordPress ’ próprio recurso de atualizações automáticas. A API do sistema de arquivos abstrai a funcionalidade necessária para ler e escrever arquivos locais para o sistema de arquivos a ser feito de forma segura, em uma variedade de tipos de host.

Ele faz isso através da classe WP_Filesystem_Base, e várias subclasses que implementam diferentes maneiras de se conectar ao sistema de arquivos local, dependendo do suporte de host individual. Qualquer tema ou plugin que precise de escrever ficheiros localmente deverá fazê-lo usando a família de classes do sistema wp_ Filesystem.

HTTP API

A API HTTP 27, adicionado em WordPress 2.728 e estendido ainda mais em WordPress 2.8, padroniza os pedidos HTTP para WordPress. A API lida com cookies, codificação e decodificação de gzip, decodificação de bloco (se HTTP 1.1), e várias outras implementações de protocolo HTTP. A API padroniza pedidos, testa cada método antes de enviar, e, com base na configuração do seu servidor, usa o método apropriado para fazer a solicitação.

Permissões e API do usuário atual

As permissões e a API29 do utilizador actual são um conjunto de funções que irão ajudar a verificar as permissões e a autoridade do utilizador actual para executar qualquer tarefa ou operação que esteja a ser solicitada, e que poderão proteger ainda mais contra utilizadores não autorizados que acedam ou executem funções para além das suas capacidades permitidas.

Licença de conteúdo de papel Branco

O texto neste documento (não incluindo o logotipo do WordPress ou Marca) é licenciado sobCC0 1.0 Universal (CC0 1.0) dedicação do Domínio público. Você pode copiar, modificar, distribuir e executar o trabalho, mesmo para fins comerciais, tudo sem pedir permissão.

Um agradecimento especial ao Drupal’s papel branco de segurança, que forneceu alguma inspiração.

Leitura Adicional


De autoria Sara Rosso

contribuições deBarry Abrahamson, Michael Adams, Jon Cave, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana

Versão 1.0 Março 2015


Notas de rodapé