Framework Fastify para Node.js aprimora a segurança de JSON após um relatório de segurança
10 de março de 2020
0 minutos de leituraEm 9 de abril, Francesco Soncina — também conhecido como phra na plataforma de recompensas por bugs de segurança HackerOne — reportou uma vulnerabilidade de injeção de código JavaScript no lado do servidor ao grupo de trabalho de segurança do Node.js. Essa vulnerabilidade foi inicialmente identificada no Fastify, um framework de aplicações web para Node.js, apontado como alvo afetado por esse problema de segurança.
Matteo Collina, um dos mantenedores do projeto de código aberto Fastify, foi convidado a fazer a triagem do relatório rapidamente e analisar o código de exploração de prova de conceito. O ataque de prova de conceito usava uma injeção de código JavaScript que iniciava um shell reverso, incorporado ao esquema JSON lido pelo framework.
Por fim, esse relatório de segurança foi considerado relativamente inofensivo, pois não afeta o Fastify por si só. Isso acontece porque o esquema JSON é fornecido pelo usuário como um item de configuração da aplicação e, portanto, é considerado uma entrada confiável.
Ainda assim, é interessante — e também fundamental — destacar a importância desses relatórios de segurança, tenham eles resultado ou não em uma vulnerabilidade confirmada com CVE.
Neste caso específico, a discussão de segurança ao longo do relatório gira em torno de um debate contínuo entre o mantenedor do Fastify e o pesquisador de segurança que divulgou a vulnerabilidade. O esforço colaborativo e a determinação de Collina e Soncina são fascinantes. O trabalho deles se concentra em identificar todos os possíveis pontos de risco de segurança na lógica de renderização de JSON, para torná-la o mais resistente possível a problemas de segurança.
O mais interessante é que esse relatório de vulnerabilidade de segurança levou a:
Uma análise de JSON mais robusta e segura em
fast-json-stringify, implementada por meio desta pull request no GitHub e da versão oficial subsequente, a 1.15.3.Uma ressalva de segurança na documentação que descreve claramente os riscos e as áreas de atenção, para que os usuários da biblioteca saibam como lidar com os dados. Ela foi incluída por meio desta pull request.
Ao concluir este relatório e prepará-lo para divulgação, percebi que deveríamos reconhecer melhor o valor das divulgações de vulnerabilidades. Embora o problema reportado não afetasse diretamente o Fastify nem o fast-json-stringify,ele gerou uma discussão significativa. Acima de tudo, ajudou os mantenedores a se conscientizarem das questões de segurança relacionadas ao código.
Considerações finais
Se você é pesquisador de segurança ou mantenedor de um módulo, deixo aqui esta mensagem do relatório original. Mais uma vez, agradeço por todo o seu trabalho e esforço para ajudar a proteger o ecossistema Node.js, JavaScript e de código aberto.




