El framework Node.js Fastify mejora la seguridad de JSON gracias a un informe de seguridad
10 de marzo de 2020
0 minutos de lecturaEl 9 de abril, Francesco Soncina —también conocido como phra en la plataforma de recompensas por errores de seguridad HackerOne— reportó una vulnerabilidad de inyección de código JavaScript del lado del servidor al grupo de trabajo de seguridad de Node.js. Esta vulnerabilidad se identificó inicialmente en Fastify, un framework de aplicaciones web de Node.js, como el objetivo afectado por este problema de seguridad.
Matteo Collina, uno de los mantenedores del proyecto de código abierto Fastify, recibió una invitación para clasificar el informe a tiempo y revisar el código de explotación de prueba de concepto. El ataque de prueba de concepto usaba una inyección de código JavaScript que iniciaba una shell inversa, integrada en el esquema JSON que leía el framework.
Al final, se consideró que este informe de seguridad era relativamente inofensivo, ya que no afecta a Fastify por sí solo. Esto se debe a que el usuario proporciona el esquema JSON como un elemento de configuración de la aplicación, por lo que se considera una entrada confiable.
Aun así, es interesante y también fundamental destacar la importancia de este tipo de informes de seguridad, tanto si terminan convirtiéndose en una vulnerabilidad de seguridad CVE verificada como si no.
En este caso en particular, el debate sobre seguridad a lo largo del informe gira en torno a una discusión en curso entre el mantenedor de Fastify y el investigador de seguridad que la divulgó. El trabajo colaborativo y la determinación de Collina y Soncina son fascinantes. Se enfocaron en detectar todos los posibles puntos vulnerables en la lógica de representación de JSON para hacerla lo más resistente posible a los problemas de seguridad que puedan surgir.
Lo más interesante es que este informe sobre una vulnerabilidad de seguridad dio lugar a lo siguiente:
Un análisis de JSON más sólido y seguro en
fast-json-stringify, que se refleja en este pull request en GitHub y en su posterior lanzamiento oficial, en la versión 1.15.3.Una advertencia de seguridad en la documentación que explica claramente los riesgos y las áreas de preocupación, para que quienes usan la biblioteca sepan cómo manejar los datos. Se incorporó mediante este pull request.
Mientras terminaba este informe y lo preparaba para su divulgación, me quedó claro que deberíamos hacer más para reconocer el valor de las divulgaciones de seguridad. Aunque el problema reportado no afectaba directamente a Fastify ni a fast-json-stringify, dio lugar a una conversación significativa. Y, lo más importante, ayudó a que los mantenedores tomaran conciencia de los problemas de seguridad relacionados con su código.
Comentarios finales
Si eres investigador de seguridad o mantienes un módulo, quiero compartir contigo esta nota del informe original. Una vez más, quiero agradecerte todo el trabajo y esfuerzo que dedicas a ayudarnos a proteger el ecosistema de Node.js, JavaScript y el código abierto.




