A Apiki, nossa parceira, lançou a iniciativa #WordPressSeguro, focada em segurança para WordPress. A ideia é afirmar ao público que a plataforma é, sim, segura – o que não é tão seguro é o comportamento dos usuários. Dando seguimento a nossa série de posts sobre segurança no Blog da Umbler, convidamos Leandro Vieira, da Apiki, para nos contar mais sobre como proteger o CMS mais utilizado no mundo e uma das práticas mais importantes para garantir a integridade do seu site: a atualização da plataforma e seus componentes.
Blog da Umbler: O WordPress é o CMS mais utilizado do mundo. Mesmo assim, às vezes, leva a “fama” de ser inseguro, conte mais sobre a iniciativa #WordPressSeguro da Apiki e como vocês estão tentando desfazer essa ideia.
Leandro Vieira: O WordPress é seguro, mas, não podemos afirmar que um software seja 100% seguro – é uma lei da segurança. Os problemas de segurança em ambientes com WordPress não estão relacionados ao seu core, e, sim, na maioria das vezes, a plugins, temas, infra ou falta de cuidados e processos de segurança, como falta de atualização, senhas fracas e outros. Quando há problema com o core é disponibilizado rapidamente uma correção.
O que temos feito é educar, explicar e disponibilizar um guia prático com o caminho das pedras e muita informação a respeito.
BU: Qual é o maior erro que as pessoas cometem em relação à segurança do WordPress?
LV: Não atualizar o core, os plugins e temas.
BU: Qual, hoje, é o maior risco de segurança do WordPress? Como é possível minimizá-lo?
LV: Seu ecossistema de plugins e a falta de políticas de segurança de proprietários de sites WordPress. Os usuários devem manter os plugins sempre atualizados, baixar plugins gratuitos somente do diretório oficial e consultar com regularidade o WPScan Vulnerability Database para ver o histórico de ocorrências dos plugins/temas. Usuários não técnicos devem contar com especialistas para ter uma assessoria e implementação de políticas de segurança.
BU: Um dos principais pontos para a segurança, e um dos mais simples, é a atualização da versão do WordPress. Quão importante é, para sites em WordPress, atualizar a versão?
LV: É o ponto mais crítico e mais importante. Atualizar não só o WordPress, mas todos seus componentes: plugins, temas e o que mais estiver envolvido. E também a infraestrutura de hospedagem do site.
A plataforma contribui como pode e vem evoluindo sistematicamente nessa direção. Um exemplo é o processo de atualização automática para versões focadas em segurança e melhorias nas regras de senhas para os usuários para evitar ataques de força-bruta.
BU: Sobre atualização: quais são as melhores práticas para realizar esse procedimento com segurança?
LV: Primeiramente ter outros ambientes, além do de produção, para realizar os devidos testes e garantir uma atualização sem impactos. É interessante fazer uso de versionamento, com o Git, e deploy automatizado, com o Jenkins, por exemplo, para automatizar e agilizar o processo.
Em conjunto a outros procedimentos, como o cuidado com senhas de WordPress, a atualização de versões, como afirma Vieira, é extrema importância para proteger sites na plataforma. Segundo a Apiki, praticamente 60% das instalações WordPress estão desatualizadas – um número alarmante, uma vez que manter o WordPress em sua última versão é garantir o uso de um software com as mais recentes correções de bugs, segurança e, claro, desfrutar de novos recursos.
Também de acordo com a Apiki, 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.
A fim de alertar para a importância de um processo contínuo de atualizações do WordPress e seus componentes, destacamos um ótimo material produzido por nossos parceiros.
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. Poucos, porém, percebem o porquê. Na maioria dos casos são complementos desatualizados, sejam plugins ou bibliotecas de sistemas operacionais, que tiveram brechas recentes descobertas e não a plataforma WordPress.
As notícias ilustradas abaixo são emblemáticas quanto a isso:
Destaque para a vulnerabilidade GHOST que afeta servidores Linux e, por conseguinte, aplicações PHP, e, claro, o WordPress. É importante, porém, deixar claro que a brecha afeta milhares de softwares na referida linguagem. E que, para corrigir o problema, basta uma atualização da biblioteca no Linux.
Em notícias como esta, muito recorrentes nas publicações da área, são divulgadas brechas em plugins, que, quando são muito populares, podem afetar milhões de instalações. O core da plataforma está seguro e foi o recurso adicional que trouxe a surpresa desagradável. Atualizando o plugin, se a correção for disponibilizada, o problema será corrigido.
Alguns plugins são bem codificados e adotam boas práticas de desenvolvimento e segurança. Melhor ainda são 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, comprometendo quem faz uso. É importante que desenvolvedores sejam mais criteriosos com suas escolhas de plugins.
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.
Se você está fazendo uso da versão 4.1, por exemplo, e a versão 4.1.1 for lançada, 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 são para todo mundo, nem permitir a atualização via painel pelo próprio cliente.
A gestão do seu projeto pode, e deveria, estar integrada com um controle de versão (Git, SVN, etc). Isso requer um controle do seu lado; 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 continuous 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 );
Desativa 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, é adicionada uma camada de segurança para se proteger de usuários mal intencionados que possam ter ganho acesso à administração e queiram alterar arquivos para implantar malwares.
define( 'DISALLOW_FILE_MODS', true );
Fazer uso da constante DISALLOW_FILE_MODS é para radicalizar; neste caso nenhuma alteração nos arquivos será possível, ou seja, o editor de tema e plugin será desativado, bem como 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, as restrito somente às atualizações automáticas diversas como o core, pacotes de linguagens, 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:
define( 'WP_AUTO_UPDATE_CORE', false );
Desabilita todas as atualizações do core.
define( 'WP_AUTO_UPDATE_CORE', true );
Permite todas as atualizações do core. Sejam as principais (major) ou menores (minor).
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.