Secretos en el Código Fuente - Cómo tu Código JS Expone tus Credenciales

Rate this content
Bookmark

Los secretos como las claves de API están constantemente filtrándose a través del código fuente. El informe Estado de la Propagación de Secretos 2021 encontró más de 6 millones de secretos en repositorios git públicos. Esta presentación revisa el nuevo informe Estado de la Propagación de Secretos 2022, aún no publicado, centrándose en cómo el código fuente de JavaScript específicamente filtra secretos.

FAQ

En programación, los secretos se refieren a credenciales de autenticación digital como claves de API, credenciales de bases de datos y certificados de seguridad que otorgan acceso a servicios o permiten la ingestión o escritura de datos.

Filtrar secretos en repositorios públicos puede dar a los atacantes acceso autenticado a servicios importantes, permitiéndoles persistir su acceso, moverse lateralmente en sistemas, elevar privilegios y realizar actividades maliciosas sin ser detectados.

GitGuardian detectó más de 10 millones de secretos en repositorios públicos en GitHub el último año.

Los secretos nunca deben codificarse directamente en el código de la aplicación. Deben almacenarse en el backend o en herramientas seguras como bóvedas de secretos y archivos .env que se excluyan con .gitignore, asegurando que no se incluyan en los repositorios de Git.

Se pueden utilizar herramientas de gestión de secretos, bóvedas de claves y archivos .env para cargar secretos en variables de entorno, protegiendo así la información sensible y evitando su exposición en el código fuente.

Según GitGuardian, Python fue el lenguaje más común para los secretos filtrados, seguido por JavaScript, excluyendo los archivos JSON y ENV.

La filtración de secretos puede llevar a brechas de seguridad significativas, permitiendo el acceso no autorizado a datos importantes, comprometiendo la integridad de los sistemas y posiblemente resultando en pérdidas financieras y de reputación para las organizaciones.

Se recomienda rotar las claves regularmente, restringir el acceso a los servicios necesarios y firmar las claves con un hash de la aplicación que las utiliza para asegurar que se empleen solo para fines legítimos.

Mackenzie Jackson
Mackenzie Jackson
11 min
06 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta presentación relámpago analiza el problema de la filtración de secretos en el código y cómo puede exponer las credenciales de autenticación digital. GitGuardian escaneó más de 10 millones de secretos en repositorios públicos en GitHub, siendo Python el lenguaje principal para los secretos filtrados. La exposición de secretos puede ocurrir tanto en repositorios públicos como privados, y es importante evitar codificar secretos y almacenar claves de forma segura. Las mejores prácticas para manejar claves y secretos incluyen utilizar un lugar centralizado para almacenar claves, utilizar herramientas como .env para cargar secretos e implementar bóvedas y gestores de secretos.

1. Introducción a los Secretos en el Código

Short description:

En esta presentación relámpago, hablaré sobre los secretos dentro del código y cómo tus aplicaciones o tus aplicaciones de React pueden estar filtrando tus secretos. Los secretos son credenciales de autenticación digital que otorgan acceso a servicios y permiten la ingestión y escritura de datos. Nuestras aplicaciones son una colección de diferentes servicios, como Okta para la autenticación, Stripe para el procesamiento de tarjetas de crédito y MongoDB para la gestión de bases de datos. GitHub es una plataforma donde escaneamos código y encontramos una gran cantidad de datos, incluidos secretos, con más de mil millones de confirmaciones realizadas en repositorios públicos.

Mi nombre es Mackenzie. Soy desarrollador y defensor de la seguridad en GitGuardian. Y en esta presentación relámpago, hablaré sobre los secretos dentro del código y cómo tus aplicaciones o tus aplicaciones de React pueden estar filtrando tus secretos.

Un buen lugar para comenzar es entender qué son los secretos. Cuando hablo de secretos, me refiero a credenciales de autenticación digital. Estos suelen ser cosas como tus claves de API, tus pares de credenciales, como tus credenciales de base de datos, certificados de seguridad, cualquier cosa que otorgue acceso a servicios o permita la ingestión o escritura de datos. Realmente, estos son los tesoros más preciados de cualquier organización, porque un atacante irá tras ellos de inmediato cuando obtenga acceso a cualquier cosa, lo que le permita persistir su acceso o moverse lateralmente hacia diferentes sistemas, elevar sus privilegios y hacer todo eso sin ser detectado porque están debidamente autenticados en los servicios.

Para entender cómo usamos los secretos, demos un paso atrás y veamos cómo construimos una aplicación. Ya no construimos monolitos. Nuestras aplicaciones son más o menos una colección de diferentes servicios. Por ejemplo, podemos usar Okta para autenticar a los usuarios en nuestros sistemas. Tal vez estemos usando Stripe para procesar tarjetas de crédito. MongoDB es una base de datos administrada. Así que muy rápidamente, nuestras aplicaciones pueden convertirse en una colección de todos estos diferentes sistemas.

Una de las cosas que hacemos en GitGuardian es escanear código en diferentes lugares para tratar de identificar dónde se encuentran estos secretos. Y lo publicamos en un informe cada año llamado Estado de los Secretos para Todos. Uno de los lugares que escaneamos es github.com. Probablemente estés familiarizado con él. Muchos desarrolladores lo están. De hecho, en 2022, según GitHub, 94 millones de desarrolladores estaban usando GitHub. Y ya hemos superado los 100 millones de desarrolladores. Y el año pasado, solo el año pasado, se realizaron más de mil millones de confirmaciones en repositorios de código público. Solo repositorios de código público. Así que eso es una enorme cantidad dedata. Se crearon 84 millones de nuevos repositorios. Nuevamente, solo públicos. Así que esto es una verdadera avalancha de información. Puedes encontrar cualquier cosa y todo en GitHub en repositorios públicos, incluidos secretos. Así que hay mil millones de confirmaciones.

2. Secretos Detectados en Repositorios Públicos

Short description:

GitGuardian escaneó más de 10 millones de secretos en repositorios públicos en GitHub, incluyendo claves válidas de proveedores de servicios en la nube, sistemas de mensajería, claves de bases de datos y claves de plataformas de control de versiones. Python fue el lenguaje más común para los secretos filtrados, seguido de JavaScript. La práctica común pero insegura de codificar las credenciales en archivos principales como app.js e index.js. Los archivos de configuración para servicios específicos, como Docosaurus, también pueden exponer claves. Los hackers monitorean GitHub en busca de estas credenciales.

GitGuardian escaneó cada uno de ellos el año pasado. Los escaneamos en busca de secretos. De hecho, buscamos casi 400 tipos diferentes de secretos. ¿Y qué encontramos? Encontramos más de 10 millones de secretos detectados en repositorios públicos en GitHub. 10 millones. Esto representa un gran aumento con respecto a años anteriores. El primer año en que publicamos este informe fue en 2020, cuando encontramos 3 millones, y ahora puedes ver la progresión hasta los 10 millones.

En parte, esto se explica por la presencia de más desarrolladores en GitHub, pero también se debe a que cada año utilizamos más y más secretos. Ahora tenemos cosas como Infrastructure as Code, que es el segmento de más rápido crecimiento en GitHub. Ahora gestionamos nuestra infraestructura de forma programática, por lo que necesitamos utilizar secretos para hacerlo. Más secretos significa más secretos filtrados en GitHub. Hay una gran cantidad de información que podemos encontrar en GitHub. Buscamos secretos específicos y los validamos cuando los encontramos. Algunas de las cosas más interesantes que encontramos son, por ejemplo, que el 20% de los secretos que encontramos eran para proveedores de servicios en la nube, como Google Cloud Services o AWS. Y nuevamente, estas son credenciales válidas. Encontramos 2 millones de claves de proveedores de servicios en la nube válidas en lugares públicos de GitHub. Incluso encontramos diferentes cosas como sistemas de mensajería, claves de bases de datos e incluso claves para tu plataforma de control de versiones. Esto significa acceso a tus repositorios privados que has puesto en un repositorio público.

En cuanto a los lenguajes de programación, Python fue el lenguaje más común para los secretos filtrados, pero JavaScript es el segundo lenguaje cuando excluimos los archivos JSON y ENV, que son archivos independientes del lenguaje. Aquí nos estamos enfocando en las extensiones de archivos JavaScript. No es sorprendente que app.js o index.js sean las aplicaciones más comunes. Estos son archivos principales donde los desarrolladores han codificado sus credenciales en el código fuente. Esta es una práctica muy mala, pero no es una sorpresa en general. Sin embargo, podemos encontrar cosas interesantes a medida que revisamos estos datos. Por ejemplo, tenemos archivos de configuración para servicios específicos. Docosaurus es una especie de marco preconfigurado para construir sitios web. Viene con un archivo de configuración. Simplemente puedes reemplazar el texto de ejemplo y poner tus propias claves aquí, y hacer commit de esto en GitHub. Y ahora has expuesto tus claves. ¿Es esto realmente un riesgo de seguridad? ¿Los hackers realmente monitorean GitHub en busca de estas credenciales? La respuesta es sí.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Node Congress 2022Node Congress 2022
26 min
Es una jungla ahí fuera: ¿Qué está pasando realmente dentro de tu carpeta Node_Modules?
Top Content
¿Sabes qué está pasando realmente en tu carpeta node_modules? Los ataques a la cadena de suministro de software han explotado en los últimos 12 meses y solo están acelerándose en 2022 y más allá. Profundizaremos en ejemplos de recientes ataques a la cadena de suministro y qué pasos concretos puedes tomar para proteger a tu equipo de esta amenaza emergente.
Puedes consultar las diapositivas de la charla de Feross aquí.
El estado de la autenticación sin contraseña en la web
JSNation 2023JSNation 2023
30 min
El estado de la autenticación sin contraseña en la web
¿Podemos deshacernos de las contraseñas ya? Son una mala experiencia de usuario y los usuarios son notoriamente malos con ellas. El advenimiento de WebAuthn ha acercado al mundo sin contraseñas, pero ¿dónde nos encontramos realmente?
En esta charla exploraremos la experiencia actual del usuario de WebAuthn y los requisitos que un usuario debe cumplir para autenticarse sin contraseña. También exploraremos las alternativas y salvaguardias que podemos utilizar para mejorar la experiencia de las contraseñas y hacerla más segura. Al final de la sesión, tendrás una visión de cómo podría ser la autenticación en el futuro y un plan para construir la mejor experiencia de autenticación hoy en día.
5 Formas en las que Podrías Haber Hackeado Node.js
JSNation 2023JSNation 2023
22 min
5 Formas en las que Podrías Haber Hackeado Node.js
Top Content
Todos los lenguajes son o han sido vulnerables a algún tipo de amenaza. Soy parte del equipo de Seguridad de Node.js y durante el año 2022, hemos realizado muchas Liberaciones de Seguridad y algunas de ellas fueron realmente difíciles de pensar.
¿Sabías que puedes ganar dinero encontrando vulnerabilidades críticas en Node.js? En esta charla, te mostraré 5 formas en las que podrías haber hackeado Node.js y cómo el equipo de Node.js maneja las vulnerabilidades.
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
React Advanced Conference 2021React Advanced Conference 2021
22 min
Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real
Top Content
Los marcos de trabajo frontend modernos como React están bien considerados en su diseño de seguridad de aplicaciones y eso es genial. Sin embargo, todavía hay mucho espacio para que los desarrolladores cometan errores y utilicen APIs inseguras, componentes vulnerables, o en general hagan lo incorrecto que convierte la entrada del usuario en una vulnerabilidad de Cross-site Scripting (XSS). Permíteme mostrarte cómo las aplicaciones de React son hackeadas en el mundo real.
Cómo los Aplicaciones de React son Hackeadas en el Mundo Real
React Summit 2022React Summit 2022
7 min
Cómo los Aplicaciones de React son Hackeadas en el Mundo Real
React tiene un gran estándar de seguridad por defecto, pero si no prestas atención a los detalles, podrías ser víctima de algunas de las APIs de escape, o incluso de pasar props de forma insegura a los componentes. Te enseñaré cómo evitar estos problemas.
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
React Summit US 2023React Summit US 2023
9 min
Política de Seguridad de Contenido con Next.js: Mejorando la Seguridad de tu Sitio Web
En esta charla, exploraremos la poderosa característica de seguridad de la Política de Seguridad de Contenido (CSP) y cómo se puede implementar en Next.js para reforzar las defensas de tu sitio web contra ataques web comunes como Cross-Site Scripting (XSS) e inyección de datos. Cubriremos los conceptos básicos de CSP, sus beneficios y las mejores prácticas para implementarlo en Next.js.
Además, compartiremos algunas herramientas para evaluar y probar tu política. Al final de esta charla, tendrás una sólida comprensión de cómo mejorar la seguridad de tu sitio web con CSP y proteger a tus usuarios de las siempre presentes amenazas de la web moderna.

Workshops on related topic

De 0 a Autenticación en una hora con ReactJS
React Summit 2023React Summit 2023
56 min
De 0 a Autenticación en una hora con ReactJS
WorkshopFree
Kevin Gao
Kevin Gao
La autenticación sin contraseña puede parecer compleja, pero es simple de agregar a cualquier aplicación utilizando la herramienta adecuada. Hay múltiples alternativas que son mucho mejores que las contraseñas para identificar y autenticar a tus usuarios, incluyendo SSO, SAML, OAuth, Magic Links, One-Time Passwords y Authenticator Apps.
Mientras abordamos los aspectos de seguridad y evitamos errores comunes, mejoraremos una aplicación JS de pila completa (backend Node.js + frontend React) para autenticar a los usuarios con OAuth (inicio de sesión social) y One Time Passwords (correo electrónico), incluyendo:- Autenticación de usuarios - Gestión de interacciones de usuarios, devolviendo JWTs de sesión / actualización- Gestión y validación de sesiones - Almacenamiento seguro de la sesión para solicitudes de cliente posteriores, validación / actualización de sesiones- Autorización básica - extracción y validación de reclamaciones del token JWT de sesión y manejo de autorización en flujos del backend
Al final del masterclass, también exploraremos otros enfoques de implementación de autenticación con Descope, utilizando SDKs de frontend o backend.
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
JSNation 2024JSNation 2024
97 min
Principales Diez Vulnerabilidades de Seguridad OWASP en Node.js
Workshop
Marco Ippolito
Marco Ippolito
En este masterclass, cubriremos las diez vulnerabilidades más comunes y riesgos de seguridad críticos identificados por OWASP, que es una autoridad confiable en Seguridad de Aplicaciones Web.Durante el masterclass, aprenderás cómo prevenir estas vulnerabilidades y desarrollar la capacidad de reconocerlas en aplicaciones web.El masterclass incluye 10 desafíos de código que representan cada una de las vulnerabilidades más comunes de OWASP. Se proporcionarán pistas para ayudar a resolver las vulnerabilidades y pasar las pruebas.El instructor también proporcionará explicaciones detalladas, diapositivas y ejemplos de la vida real en Node.js para ayudar a comprender mejor los problemas. Además, obtendrás información de un Mantenedor de Node.js que compartirá cómo gestionan la seguridad en un proyecto grande.Es adecuado para desarrolladores de Node.js de todos los niveles de habilidad, desde principiantes hasta expertos, se requiere un conocimiento general de aplicaciones web y JavaScript.
Tabla de contenidos:- Control de Acceso Roto- Fallas Criptográficas- Inyección- Diseño Inseguro- Configuración de Seguridad Incorrecta- Componentes Vulnerables y Obsoletos- Fallas de Identificación y Autenticación- Fallas de Integridad de Software y Datos- Fallas de Registro y Monitoreo de Seguridad- Falsificación de Solicitudes del Lado del Servidor
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
JSNation 2022JSNation 2022
99 min
Encontrar, Hackear y solucionar las vulnerabilidades de NodeJS con Snyk
WorkshopFree
Matthew Salmon
Matthew Salmon
npm y seguridad, ¿cuánto sabes sobre tus dependencias?Hack-along, hacking en vivo de una aplicación Node vulnerable https://github.com/snyk-labs/nodejs-goof, Vulnerabilidades tanto de código abierto como de código escrito. Se anima a descargar la aplicación y hackear junto con nosotros.Corrigiendo los problemas y una introducción a Snyk con una demostración.Preguntas abiertas.
Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.
Autenticación sin contraseña para servidores: práctica con ASA
DevOps.js Conf 2022DevOps.js Conf 2022
32 min
Autenticación sin contraseña para servidores: práctica con ASA
WorkshopFree
E. Dunham
E. Dunham
Hoy en día, no necesitas una contraseña separada para cada sitio web en el que inicias sesión. Sin embargo, gracias a la deuda tecnológica y la tradición, muchos profesionales de DevOps todavía tienen que lidiar con una gran cantidad de claves SSH para acceder a los servidores en los que a veces necesitamos estar. Con OAuth moderno, un solo inicio de sesión y un segundo factor para demostrar tu identidad son suficientes para acceder de forma segura a todos los servicios a los que tienes autorización. ¿Y si SSHing en servidores fuera tan fácil? En este masterclass, utilizaremos la herramienta de Acceso Avanzado a Servidores de Okta (anteriormente ScaleFT) para experimentar una forma en que el sueño de enviar claves SSH como la contraseña se ha hecho realidad.
- discutiremos cómo funciona ASA y cuándo es la herramienta adecuada para el trabajo- guiaremos el proceso de configuración de una cuenta de prueba gratuita de Okta para usar ASA, y la configuración de la puerta de enlace ASA y el servidor en servidores Linux- luego nos conectaremos por SSH a nuestros hosts con los clientes ASA sin necesidad de proporcionar una clave SSH desde nuestras laptops- revisaremos los registros de auditoría de nuestras sesiones SSH para examinar qué comandos se ejecutaron
JS Automatización de Pruebas de Seguridad para Desarrolladores en Cada Compilación
TestJS Summit 2021TestJS Summit 2021
111 min
JS Automatización de Pruebas de Seguridad para Desarrolladores en Cada Compilación
WorkshopFree
Oliver Moradov
Bar Hofesh
2 authors
Como desarrollador, necesitas entregar rápido y simplemente no tienes tiempo para pensar constantemente en seguridad. Aún así, si algo sale mal, es tu trabajo arreglarlo, pero las pruebas de seguridad bloquean tu automatización, crean cuellos de botella y solo retrasan las versiones... pero no tiene por qué ser así...

El escáner de seguridad de NeuraLegion, enfocado en los desarrolladores, Dynamic Application Security Testing (DAST), permite a los desarrolladores detectar, priorizar y remediar problemas de seguridad de manera TEMPRANA, en cada confirmación, sin falsos positivos/alertas, sin ralentizarte.

¡Únete a esta masterclass para aprender diferentes formas en que los desarrolladores pueden acceder a Nexploit y comenzar a escanear sin salir de la terminal!

Recorreremos la configuración de principio a fin, mientras configuramos un pipeline, ejecutamos pruebas de seguridad y analizamos los resultados.

Tabla de contenidos:
- Qué es realmente DAST (Dynamic Application Security Testing) enfocado en los desarrolladores y cómo funciona
- Ver dónde y cómo encaja un DAST moderno y preciso en el CI/CD
- Integrar el escáner Nexploit de NeuraLegion con GitHub Actions
- Comprender cómo se pueden probar las aplicaciones modernas, las API y los mecanismos de autenticación
- Hacer un fork de un repositorio, configurar un pipeline, ejecutar pruebas de seguridad y analizar los resultados