Skip to main content

Snyk Code agrega compatibilidad con Apex, seguridad de API y GraphQL

Escrito por

Frank Fischer

blog feature snyk code dark

28 de octubre de 2021

0 minutos de lectura

Snyk Code tuvo un 2021 extraordinario. Comenzó el año con compatibilidad para tres lenguajes —Java, JavaScript y TypeScript— y desde entonces agregó Python, C#, PHP, Ruby y Go. Se avecinan más lenguajes y funciones, y en este artículo nos complace anunciar la compatibilidad con Apex de Salesforce, además de la seguridad para API y GraphQL. ¡Vamos a verlo!

Snyk Code es compatible con Apex de Salesforce

Snyk Code ahora admite el análisis de seguridad del lenguaje Apex de Salesforce. En 2016, Salesforce anunció Lightning Experience como un marco general para crear interfaces de usuario en Salesforce. Utiliza un enfoque de modelo-vista-controlador (MVC), en el que los objetos de Salesforce actúan como modelo, la vista se implementa como marcado y los controladores se programan en JavaScript en el cliente o en un lenguaje llamado Apex en el servidor.

Diagrama que muestra cómo Salesforce conecta una vista de cliente y un controlador de JavaScript con un controlador Apex del servidor y una base de datos.

Apex es un lenguaje de desarrollo propietario que se utiliza en la plataforma Force de Salesforce. Lo desarrolló Parker Harris —uno de los fundadores de Salesforce— para permitir una lógica empresarial más compleja y gestionar los datos almacenados en la plataforma Salesforce. Apex refleja esta función. Por ejemplo, como Salesforce es una plataforma multiinquilino, separar los entornos de ejecución de los distintos inquilinos es una preocupación importante.

Apex tiene mucho en común con Java y C#: es un lenguaje de programación orientado a objetos, fuertemente tipado y que no distingue entre mayúsculas y minúsculas, y sigue una sintaxis de notación de puntos y llaves. Al principio, Apex se interpretaba, pero en 2012 se publicó un compilador. Aunque crear un compilador de este tipo no fue una tarea fácil, ya que Apex está estrechamente integrado en la plataforma Salesforce, permitió ofrecer una mejor compatibilidad con IDE como Visual Studio Code.

Nota: Apex de Salesforce (Advanced Programming Experience) no está relacionado con Oracle APEX (Oracle Application Express).

Con esta nueva compatibilidad para analizar Apex, Snyk Code abre un nuevo capítulo en SAST. Es extremadamente rápido: tan rápido que analiza el código directamente en tu IDE y comprueba el efecto de cualquier corrección. Además de esa velocidad en tiempo real, el motor puede analizar todo el proyecto con toda la base de conocimiento: no es un análisis delta, diferencial ni incremental, sino un análisis completo.

Snyk Code utiliza un proceso único de aprendizaje automático guiado por personas para crear y mantener su base de conocimiento. Utiliza cientos de miles de proyectos o miles de millones de líneas de código como conjuntos de entrenamiento, y aprende del conocimiento colectivo de la comunidad global de desarrolladores. Este proceso permite que Snyk Code cree bases de conocimiento rápidamente y mantenga una precisión líder en la industria. Como es habitual en Snyk, Snyk Code se diseñó pensando en los desarrolladores y se integra directamente en el proceso de desarrollo. Ofrece complementos para IDE, comprobaciones de PR, puntuaciones de prioridad, sugerencias fáciles de entender, ejemplos de cómo otras personas resolvieron el problema en una situación similar y mucho más.

Nota: Salesforce y Snyk tienen una estrecha relación. Salesforce es cliente de Snyk y también inversionista en Snyk. Agradecemos mucho la confianza que Salesforce depositó en nosotros.

Nos encantaría mostrarte cómo Snyk Code analiza Apex o cualquiera de los otros lenguajes compatibles, como JavaScript, Java, TypeScript, C#, Python, Ruby, Go o PHP.

Protege tu código con información de vanguardia

Conoce todas las funcionalidades de SAST de Snyk Code en solo 30 minutos.

Seguridad de API

Las API son un elemento esencial de la gran mayoría de las aplicaciones actuales. En las aplicaciones en la nube, las API basadas en JSON llamadas API REST se hicieron populares porque son muy fáciles de configurar y utilizar. En los últimos años, las API REST siguieron evolucionando, lo que dio lugar a GraphQL. Más adelante hablaremos de eso.

Para crear o utilizar API, a menudo se usa JavaScript o TypeScript, y hay una gran variedad de bibliotecas disponibles para crearlas. Pero una gran libertad conlleva una gran responsabilidad. Y las API no son la excepción: son vulnerables a ciertos ataques específicos.

Nota: Una excelente fuente para aprender más sobre la seguridad de las API es OWASP API Top 10 .

Snyk Code agregó reglas para identificar y señalar problemas habituales de las API. Además, superpone al código fuente original una sugerencia de corrección, junto con ejemplos de cómo otras personas corrigieron el mismo problema en una situación similar. Veamos un ejemplo.

Por lo general, las API REST permiten acceder a objetos de datos individuales mediante una URL específica. Por ejemplo, [Your URL]/api/v1/notes/345 seleccionaría la nota 345. Para averiguar qué elementos están disponibles, puedes llamar a un servicio de listado que te proporcione los ID disponibles. Si estos ID son fáciles de adivinar y no se comprueba el usuario ni su rol, un atacante podría enviar una solicitud con un ID específico que haya adivinado y obtener los datos. Esto se conoce como referencia directa insegura a objetos (IDOR). Snyk Code detecta este y otros problemas similares mediante un enfoque completamente novedoso para las pruebas de seguridad de aplicaciones estáticas (SAST), que permite identificar este tipo de problemas. No solo informa a los desarrolladores sobre posibles problemas, sino que también ayuda a corregirlos. A veces, basta con activar una opción en la biblioteca.

En resumen, OWASP considera que la seguridad de las API es un área de preocupación importante. Con un enfoque único, Snyk Code aborda la seguridad de las API y lleva los límites de la industria SAST más allá. Y hay más...

Seguridad de GraphQL

Las API REST evolucionaron mucho en los últimos años. Facebook lideró el desarrollo de un protocolo llamado GraphQL. Una crítica a las API REST tradicionales es que se necesitan varias llamadas a la API para recopilar todos los datos de un objeto (primero, la función de listado para obtener el ID de la instancia y luego quizá varias llamadas para recopilar todos sus atributos), mientras que con GraphQL todas esas llamadas se pueden agrupar en una sola. Esto reduce la sobrecarga.

Snyk Code es la primera solución del mercado compatible con GraphQL. El equipo de Snyk Code investigó posibles problemas de seguridad, agregó reglas y las perfeccionó mediante su proceso único guiado por personas y repositorios de código abierto como datos de entrenamiento. Una vez más, Snyk Code aprovechó el conocimiento de la comunidad global de desarrolladores para aprender y mejorar. Muchas aplicaciones que utilizan GraphQL están escritas en JavaScript o TypeScript con graphql-express, koa-graphql, mercurius, ApolloServer y graphql-js. Snyk Code ahora detecta problemas en todas ellas.

Veamos solo dos ejemplos de los tipos de problemas que Snyk Code puede encontrar en GraphQL. Primero, la configuración predeterminada habitual de las bibliotecas GraphQL permite una anidación bastante profunda de las consultas. Hablamos de cientos de miles de niveles. En la práctica, rara vez se utiliza una profundidad así, pero puede dar lugar a que un atacante consulte el sistema con una consulta muy profunda. Esto hace que la biblioteca use enormes cantidades de memoria y otros recursos del sistema para generar objetos internos que procesen esas solicitudes, lo que puede provocar el agotamiento de recursos o incluso una falla del sistema. El resultado es un ataque de denegación de servicio. Snyk Code comprueba si las bibliotecas están configuradas para truncar las solicitudes y así prevenir este tipo de ataques.

Pantalla de Snyk Code que destaca una posible vulnerabilidad de denegación de servicio causada por consultas GraphQL anidadas en el código de ApolloServer

En segundo lugar, GraphQL permite que quienes usan la API consulten un servidor GraphQL para obtener información sobre el esquema subyacente mediante la función de introspección. Aunque esto podría ser lo esperado en una API de acceso público, quizá no quieras revelar este tipo de información en una API interna. Esto impide que los atacantes conozcan las capacidades de la API al inspeccionarla. Aunque no necesariamente detiene a alguien que ya haya logrado entrar en tu red interna, sí le complica mucho las cosas y lo retrasa considerablemente. En este caso, Snyk Code te advierte que la introspección está habilitada y te invita a tomar una decisión deliberada.

Pantalla de Snyk Code que muestra la introspección de GraphQL habilitada y el código graphqlHTTP resaltado en una aplicación Express.

Nota: OWASP publicó una guía rápida de GraphQL que enumera los problemas mencionados y otros posibles en las API de GraphQL.

Estos son solo dos ejemplos (no demasiado técnicos). Con la compatibilidad con GraphQL, Snyk Code lleva a la industria a un territorio que antes no se había explorado. En Snyk, observamos la adopción de GraphQL y quisimos ser el socio adecuado para ofrecer seguridad integrada y amigable para los desarrolladores desde el principio. Snyk Code nos brindó una plataforma versátil y rápida para liderar la industria en la compatibilidad con CodeQL.

Para terminar

A modo de resumen, estos son los anuncios relacionados con Snyk Code:

  • Compatibilidad con Apex de Salesforce

  • Compatibilidad con la seguridad de las API REST

  • Compatibilidad con la seguridad de GraphQL

Estas son incorporaciones importantes al motor de Snyk Code. Como trabajamos estrechamente con nuestros clientes para crear una solución que se adapte a tus necesidades, nos encantaría mostrarte lo que Snyk Code y los demás componentes de la plataforma Snyk pueden hacer por ti. Dedica media hora de tu apretada agenda y reserva una demostración para conocer el producto en vivo y obtener respuesta a todas tus preguntas.

Protege tu código con información de vanguardia

Conoce todas las funcionalidades de SAST de Snyk Code en solo 30 minutos.