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.

This talk has been presented at React Summit 2023, check out the latest edition of this React Conference.

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
The talk discusses the importance of supply chain security in the open source ecosystem, highlighting the risks of relying on open source code without proper code review. It explores the trend of supply chain attacks and the need for a new approach to detect and block malicious dependencies. The talk also introduces Socket, a tool that assesses the security of packages and provides automation and analysis to protect against malware and supply chain attacks. It emphasizes the need to prioritize security in software development and offers insights into potential solutions such as realms and Deno's command line flags.
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
Passwords are terrible and easily hacked, with most people not using password managers. The credential management API and autocomplete attribute can improve user experience and security. Two-factor authentication enhances security but regresses user experience. Passkeys offer a seamless and secure login experience, but browser support may be limited. Recommendations include detecting Passkey support and offering fallbacks to passwords and two-factor authentication.
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
The Node.js security team is responsible for addressing vulnerabilities and receives reports through HackerOne. The Talk discusses various hacking techniques, including DLL injections and DNS rebinding attacks. It also highlights Node.js security vulnerabilities such as HTTP request smuggling and certification validation. The importance of using HTTP proxy tunneling and the experimental permission model in Node.js 20 is emphasized. NearForm, a company specializing in Node.js, offers services for scaling and improving security.
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
React's default security against XSS vulnerabilities, exploring and fixing XSS vulnerabilities in React, exploring control characters and security issues, exploring an alternative solution for JSON parsing, and exploring JSON input and third-party dependencies.
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
Lucas Estevão, a Principal UI Engineer and Technical Manager at Avenue Code, discusses how to implement Content Security Policy (CSP) with Next.js to enhance website security. He explains that CSP is a security layer that protects against cross-site scripting and data injection attacks by restricting browser functionality. The talk covers adding CSP to an XJS application using meta tags or headers, and demonstrates the use of the 'nonce' attribute for allowing inline scripts securely. Estevão also highlights the importance of using content security reports to identify and improve application security.
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
How to hack a RealWorld live React application in seven minutes. Tips, best practices, and pitfalls when writing React code. XSS and cross-site scripting in React. React's secure by default, but not always. The first thing to discover: adding a link to a React application. React code vulnerability: cross-site scripting with Twitter link. React doesn't sanitize or output H ref attributes. Fix attempts: detect JavaScript, use dummy hashtag, transition to lowercase. Control corrector exploit. Best practices: avoid denialist approach, sanitize user inputs. React's lack of sanitization and output encoding for user inputs. Exploring XSS vulnerabilities and the need to pretty print JSON. The React JSON pretty package and its potential XSS risks. The importance of context encoding and secure coding practices.

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
How to Build Front-End Access Control with NFTs
JSNation 2024JSNation 2024
88 min
How to Build Front-End Access Control with NFTs
WorkshopFree
Solange Gueiros
Solange Gueiros
Understand the fundamentals of NFT technology and its application in bolstering web security. Through practical demonstrations and hands-on exercises, attendees will learn how to seamlessly integrate NFT-based access control mechanisms into their front-end development projects.
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