Iniciativa WordPress Seguro
Criamos uma iniciativa chamada #WordPressSeguro para divulgar e colaborar com o que diz respeito à segurança para WordPress. Além de informações, disponibilizamos um Guia Prático de Implementações para Segurança em WordPress.
O cenário
Praticamente 60% das instalações WordPress estão desatualizadas. O número é alarmante, uma vez que manter o WP em sua última versão é garantir o uso de um software com as mais recentes correções de bug, segurança e, claro, desfrutar de novos recursos.
A regra deve ser estendida para os plugins, temas, sistema operacional e demais programas em questão. Uma versão desatualizada pode estar deixando a porta dos fundos, ou a da frente, aberta ou com a chave na fechadura e essa responsabilidade não pode ser creditada à aplicação.
WordPress e segurança na mídia
É comum noticiarem que milhões de instalações da plataforma de gestão de conteúdo mais utilizada do mundo estão vulneráveis. Mas poucos percebem o por quê. Na maioria dos casos são complementos desatualizados que tiveram brechas recentes descobertas, sejam plugins ou bibliotecas de sistemas operacionais, por exemplo.
As notícias ilustradas abaixo são emblemáticas quanto a isso, observe:
Destaque para a vulnerabilidade GHOST, que afeta servidores Linux e por conseguinte aplicações PHP – e claro, o WordPress por ser desenvolvido nessa linguagem. Mas é importante ficar claro que a brecha afeta milhares de softwares na referida linguagem. E para corrigir o problema basta uma atualização da biblioteca no Linux e pronto.
Casos como a segunda notícia é muito recorrente, em brechas em plugins são divulgadas. E quando esses são muito populares, podem afetar milhões de instalações. O core da plataforma está seguro e o recurso adicional trouxe a surpresa desagradável. Atualizando o plugin, se disponibilizado a correção, o problema será corrigido e pronto!
Alguns plugins são bem codificados e adotam boas práticas de desenvolvimento e segurança. Melhor ainda os que praticam um processo de atualização constante, como foi o caso recente do WordPress SEO e WooCommerce em que brechas foram divulgadas e rapidamente corrigidas.
Outros plugins são lançados e não têm manutenção e quem faz uso acaba ficando comprometido. O importante são os desenvolvedores serem mais criteriosos com suas escolhas.
As atualizações automáticas
A partir da versão 3.7, lançada em 24 de outubro de 2013, foi implementado o recurso de atualização automática do core para versões de manutenção e correções de segurança. Por exemplo, se você está fazendo uso da versão 4.1 e se lançado a versão 4.1.1, essa última será implementada automaticamente e de forma silenciosa.
A prática aumenta a possibilidade de diminuir a quantidade de usuários com instalações antigas e demonstra os esforços da plataforma em adotar práticas importantes de segurança e auxílio aos usuários.
Versionamento e deploy automatizado
Atualizações automáticas não é para todo mundo. Permitir a atualização via painel pelo próprio cliente também não.
A gestão do seu projeto pode (e deveria) estar integrada com um controle de versão (Git, SVN, etc) e isso requer um controle do seu lado e deixar a plataforma trabalhar sozinha ou permitir que o usuário interfira pode atrapalhar o processo.
Prefira as atualizações, remoção ou adição de plugins através de versionamento e continuos delivery, ao contrário de atualizações através do Dashboard da aplicação. Com essa prática é possível validar as atualizações em outros ambientes antes de aplicar as mudanças em produção. Além disso, reverter para uma versão anterior será possível e prático caso o processo falhe ou aconteça algo indesejado.
Constantes no wp-config.php para você se dar bem
Através de constantes do PHP inseridas no arquivo wp-config.php é possível definir o comportamento que o WordPress deve ter em relação às atualizações e, assim, definir sua política sobre o assunto.
define( 'DISALLOW_FILE_EDIT', true );
Desativar somente o editor de tema e plugin. É o mínimo que você deve considerar. Além de não permitir que os usuários alterem os códigos de plugins e temas, adiciona-se uma camada de segurança para se proteger de usuários mal intencionados que possam ter ganhado acesso à administração e queiram alterar arquivos para implantar malwares.
define( 'DISALLOW_FILE_MODS', true );
Fazer uso da constante DISALLOW_FILE_MODS é para radicalizar onde nenhuma alteração nos arquivos será possível, ou seja, o editor de tema e plugin será desativado, a possibilidade de atualizar o core, plugins e temas e até mesmo de instalar temas ou plugins.
define( 'AUTOMATIC_UPDATER_DISABLED', true );
Semelhante ao exemplo anterior, mas restrito somente às atualizações automáticas diversas. Como o core, pacotes de linguanges, temas, plugins além de desativar os alertas por e-mail das atualizações disponíveis.
Para manipular as atualizações do core existem constantes específicas e mais direcionadas.
// Desabilita todas as atualizações do core define( 'WP_AUTO_UPDATE_CORE', false );
// Permite todas as atualizações do core. Sejam as principais (major) ou menores (minor) define( 'WP_AUTO_UPDATE_CORE', true );
O valor padrão da constante WP_AUTO_UPDATE_CORE é “minor” indicando as atualizações automáticas das versões menores focadas em correções de bug e segurança.
O impacto das atualizações do WordPress e seus componentes é grande para garantir uma maior segurança ao seu site. Defina suas políticas, trace a melhor abordagem sobre o assunto e mantenha tudo up-to-date.