Skip to main content

In this article

Framework Fastify para Node.js aprimora a segurança de JSON após um relatório de segurança

Escrito por
Node How even quick async functions can block the Event Loop starve tumb

10 de março de 2020

0 minutos de leitura

Em 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:

  1. 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.

  2. 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.

Captura de tela de um comentário no GitHub de lirantal, discutindo se os relatórios de segurança sobre fast-json-stringify e fastify tratam de vulnerabilidades ou de questões relacionadas às políticas do projeto.

Leia mais

Live Stream

Agentes de Remediação, Desmistificados: Por Que Corrigir é Melhor do que Encontrar

Veja como o Remediation Agent da Snyk usa inteligência de segurança, análise de explorabilidade e validação para transformar vulnerabilidades em pull requests prontos para merge.

feature insights context
Blog

Por dentro do comprometimento do keyv npm: malware no preinstall, procedência confiável e hooks de IDE

O keyv 6.0.0 e outras dez versões do npm distribuíram malware executado durante a instalação. Confira as versões afetadas, os hashes, as etapas de detecção e a ordem segura de correção.

feature ai ide dark
Blog

Uma primeira visão do Evo Agentic AppSec: remediação agentiva e defesa contra código malicioso

Conheça os primeiros recursos de Agentic AppSec da Snyk: um agente de remediação autônomo que corrige vulnerabilidades e uma defesa contra código malicioso que bloqueia pacotes arriscados antes que sejam lançados.