O plugin FileUpload, um dos widgets mais populares da plataforma jQuery, contém uma falha de código que ilude a comunidade de segurança há oito anos: o FileUpload do jQuery ficou vulnerável desde o lançamento do Apache 2.3.9 em 2010. Esse bug permite que um invasor carregue arquivos à sua escolha em servidores da Web. Incluindo shells de comando, é claro.
Desde 2015 estão surgindo tutoriais online explicando como ele poderia ser explorado e nem assim a vulnerabilidade foi corrigida. Há um vídeo de 2015 disponível no YoutTube com instruções passo a passo sobre como encontrar sites vulneráveis e como fazer defacement, mas também há vídeos mais recentes.
Larry Cashdollar, pesquisador de segurança da Akamai, descobriu a falha ao analisar o código do widget. Para provar o conceito, conseguiu fazer o upload de um shell da web e executar comandos em um servidor de testes. O problema foi melhor compreendido com a ajuda de Sebastian Tschan, o desenvolvedor do plugin. A falha introduzida no Apache 2.3.9 fazia com que os arquivos .htaccess, que armazenam as configurações de segurança dos subdiretórios, se tornassem inativos por default. A menos que especificamente habilitados pelo administrador, os arquivos .htaccess são ignorados.
Uma razão para isso era proteger a configuração do sistema do administrador, impedindo que usuários personalizassem as configurações de segurança em pastas individuais. Outra foi melhorar o desempenho, pois o servidor não precisava mais verificar o arquivo .htaccess ao acessar um diretório.
E assim, após o Apache 2.3.9, os plugins que usavam arquivos .htaccess para restrições de acesso não se beneficiavam mais dessa configuração de segurança de acesso a pastas personalizadas. Foi infelizmente o caso do jQuery File Upload, que adiciona arquivos a um diretório raiz.
A falha está registrada como CVE-2018-9206 e foi corrigida na última versão do jQuery File Upload. O autor alterou o código para permitir upload apenas de arquivos de imagem GIF, JPG, JPEG e PNG. Instruções sobre como ativar mais conteúdo sem correr um risco de segurança estão em
https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/index.php