Muy frecuentemente. Un ejemplo que tuvimos el año pasado fue con Toyota, donde un contratista que trabajaba para Toyota filtró accidentalmente claves públicas, hizo accidentalmente un repositorio privado público, lo que filtró claves a una base de datos que la aplicación móvil de Toyota estaba utilizando, una aplicación móvil llamada T-Connect. Estas son claves que dieron acceso a toda la información de los usuarios que estaban utilizando T-Connect y que estaban expuestas en un repositorio público. Este es solo un ejemplo, pero hay muchos, muchos más ejemplos donde claves reales pertenecientes a organizaciones y con consecuencias reales se han filtrado en lugares públicos.
Pero no solo debes preocuparte por los repositorios públicos. También debes preocuparte por tus repositorios privados. El código fuente que es privado siempre encuentra su camino hacia lugares públicos de forma accidental, o como yo lo llamo, de forma involuntariamente de código abierto. El Grupo Lapsus, por ejemplo, el año pasado publicó públicamente el código fuente de NVIDIA, Samsung, Microsoft y muchos, muchos más. Puedes preguntarte, ¿cómo obtuvieron acceso al código fuente privado? Bueno, hay muchas formas diferentes. El código fuente es un activo muy permeable, lo que significa que se encuentra en todas partes. Está en las máquinas de tus desarrolladores, se hace una copia de seguridad, está en wikis, se comparte a través de sistemas de mensajería y, por supuesto, está en tus repositorios Git. Además, muchas personas tienen acceso a tus repositorios Git. Y sé a ciencia cierta que Lapsus simplemente estaba pagando a empleados para que les otorgaran acceso al código fuente privado público. Por lo tanto, no es tan difícil para un actor de amenazas motivado acceder a tu código fuente privado. Entonces, si crees que estás seguro porque no tienes repositorios de código abierto, no lo estás. Los secretos definitivamente no deben estar en tu código, independientemente de dónde se encuentren.
Entonces, ¿por qué se exponen los secretos? Hay muchas formas diferentes. Tal vez estás cometiendo cosas y estás probando claves, por lo que las has codificado en el código sin darte cuenta de que esas claves estarán en tu historial para siempre. Incluso si haces algo en una rama de desarrollo, codificas credenciales, las eliminas rápidamente más tarde porque solo las estás probando, esas credenciales seguirán estando en tu historial de Git y estarán allí para siempre. Pueden imprimirse en archivos generados automáticamente como registros de depuración. Puedes incluir archivos sensibles en tus repositorios Git, como archivos .env o archivos .pem. Nunca deben estar en tu repositorio, así que asegúrate de usar un archivo .gitignore y también puedes enviar código accidentalmente al lugar equivocado. Entonces, ¿cómo evitas que esto suceda? Bueno, nunca debes codificar los secretos, nunca debes escribir directamente el secreto en tu aplicación. Esa es la regla número uno, no importa si es privado, público o en qué tipo de rama estás trabajando o durante cuánto tiempo esté allí. Estará allí para siempre en Git. También podemos usar herramientas para evitar que se filtren. Por lo tanto, podemos utilizar herramientas que nos permitan hacer esto. Queremos almacenar las claves en el backend. Si estás construyendo una aplicación React y la estás haciendo lucir bonita, queremos asegurarnos de que accedas a tus credenciales a través del backend y que este te pase los datos que necesitas y no los manejes directamente. No hay muchos escenarios en los que realmente necesites manejar esas claves en el frontend.
Comments