Uma palavra sobre o ImageTragick (CVE-2016-3714)
Hoje cedo, surgiu a notícia de um bug crítico no ImageMagick, que logo foi apelidado de ImageTragick. A Transloadit é patrocinadora e usuária de longa data do ImageMagick, então não é surpresa que as pessoas estejam preocupadas com a possibilidade de a Transloadit ser afetada por esse bug. Sinceramente, nós também ficamos preocupados.
Até agora, não conseguimos explorar nosso serviço com esse bug, embora o código do exploit ainda não tenha sido divulgado. A investigação continua, mas podemos afirmar com certo grau de certeza que não devemos ser afetados. Mesmo antes de esse bug no ImageMagick vir à tona, já tínhamos um sistema para verificar se um arquivo apresentado como imagem é, de fato, realmente uma imagem. Usamos um software chamado ExifTool para isso, e ele deve oferecer proteção suficiente contra quaisquer exploits que usem esse bug.
Desde então, confirmamos com o autor da ferramenta, Phil Harvey, e ele nos garantiu que
O ExifTool analisa o início do arquivo para determinar o tipo de arquivo. Para a maioria dos tipos, isso é apenas um teste de número mágico, como você mencionou, mas para alguns tipos sem número mágico é necessário algum processamento. O ExifTool usa a extensão apenas como pista para a variedade específica do arquivo quando há vários tipos de arquivo com o mesmo formato (por exemplo, ASF/WMV/WMA/DIVX ou DOC/PPT/XLA).
Se o arquivo não for reconhecido, nenhum MIMEType é retornado e o ExifTool gera um erro “Unknown file type”.
Portanto, por enquanto, além das soluções alternativas divulgadas, essa ferramenta vai proteger adequadamente a Transloadit, e você pode continuar usando nosso serviço com segurança.
Mas e se, daqui a um ou dois meses, forem descobertas vulnerabilidades mais graves no ImageMagick? Ou no ExifTool, aliás.
Isso certamente é motivo de preocupação. Qualquer ferramenta, claro, tem sua cota de bugs, e muitos bugs podem ser explorados. Esses bugs costumam ser corrigidos rapidamente, e os usuários devem atualizar o quanto antes. Mas, por outro lado, a Transloadit nem sempre pode atualizar na hora, já que precisamos manter a retrocompatibilidade para nossos usuários. O ideal é manter todo o software atualizado e, ao mesmo tempo, descontinuar versões antigas de forma gradual, oferecendo suporte a elas por mais tempo, para que os clientes tenham a chance de verificar novas versões e se adaptar a elas, em vez de fazer atualizações repentinas da noite para o dia.
Está claro que precisamos limitar o que nossas ferramentas podem fazer (de errado), para ganhar tempo caso a próxima vulnerabilidade nos atinja com mais força.
Desde o início, executamos nossas ferramentas com um usuário de sistema sem privilégios, que não tem acesso a chaves secretas. Os invasores, no entanto, ainda estariam no sistema host. Isso significa que, se surgisse um exploit de root zero-day, estaríamos em apuros. Então, se pudéssemos adicionar mais camadas de segurança, seria ainda melhor.
É por isso que, paralelamente à avaliação dessa vulnerabilidade e às tentativas de criar um exploit, diferentes membros da equipe começaram a trabalhar na conteinerização das nossas ferramentas de codificação. Assim, nossas ferramentas não têm acesso a nada no sistema host, além dos arquivos de mídia com os quais precisam trabalhar. Isso nos permitiria até executar ferramentas vulneráveis em produção sem dar aos invasores a oportunidade de bisbilhotar os dados de outros usuários ou causar danos graves de outras formas.
Isso, claro, vai levar algum tempo para ser concluído, e vamos disponibilizar o suporte de forma gradual.
Infelizmente, segurança 100% é um mito, mas esperamos que você se sinta seguro de que estamos mantendo a Transloadit o mais protegida possível. Se tiver mais dúvidas ou preocupações sobre esse problema, não hesite em entrar em contato.
Atualização de 2016-07-01: descobrimos que, para executar nossas ferramentas de codificação em contêineres de forma segura, vamos precisar esperar até conseguir executar Jobs avulsos sem exigir privilégios de sudo. Isso está em andamento. Enquanto isso, finalizamos e implantamos uma grande atualização para que nossas máquinas de codificação (que seriam as mais suscetíveis a esse tipo de ataque) agora funcionem sem nenhum segredo. Elas podem retirar Jobs de uma fila com acesso somente leitura e exportá-los com acesso somente para acréscimo. Todos os outros segredos e privilégios foram removidos.
Atualização de 2016-08-02: temos trabalhado com o pesquisador de segurança Florian Courtial para adicionar uma filtragem extra de imagens SVG maliciosas às quais ainda estávamos suscetíveis em alguns casos (embora, como as máquinas de codificação já tinham sido limitadas, nenhum dano real pudesse ter sido causado).
