Evitar la exposición de credenciales en el código
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Identificar por qué la exposición de secretos puede ser problemática para su organización.
- Explicar cómo evitar la exposición accidental de secretos.
Exposición de credenciales
Una de las brechas de seguridad más habituales ocurre con los datos confidenciales almacenados en el código que se desarrolla. Por este motivo, es importante aprender cómo proteger esos datos (tales como credenciales, claves de cifrado y más) que podrían permitir que los atacantes pusieran en riesgo los datos confidenciales de su organización.
Si es desarrollador, es responsable del código y de las secuencias de comandos que tienen acceso a las pilas de tecnología, como la nube, las aplicaciones y otras herramientas. Todas estas instancias suelen exigir credenciales que es fundamental proteger para evitar su exposición.
Muchos grupos de desarrollo que trabajan en desarrollo cíclico establecen fechas de objetivos ampliados, y suele haber presión por trabajar a gran velocidad. Los desarrolladores pueden usar GitHub u otro repositorio de código abierto para colaborar y ejecutar proyectos.
El riesgo de exposición de las credenciales es mayor en los repositorios de código porque, a veces, los desarrolladores atareados introducen las credenciales dentro del código para ahorrar tiempo. Luego, cuando el código se hace público, las credenciales de la organización quedan disponibles en el dominio público. Una vez que se confirma y se publica el código, no es fácil eliminarlo. Incluso si el sistema de control de versiones permite eliminar la confirmación del código comprometido, es posible que otro desarrollador o servicio haya hecho una copia del código comprometido antes de la eliminación.
Esto significa que cualquiera que sepa trabajar con el control de versiones o haya hecho una copia del código puede obtener estas credenciales, incluso del pasado, y acceder a ellas. Si no se aplican convenciones y prácticas de codificación segura, los desarrolladores pueden revelar accidentalmente las credenciales a individuos no autorizados y así otorgarles acceso a los sistemas centrales.
Es un error simple y habitual que cometen los desarrolladores cuando trabajan con prisa para llevar una nueva función a los clientes. Esto significa que hay que prestar aún más atención para asegurarse de nunca incluir credenciales en el código.
Credenciales filtradas
Los servicios de seguimiento de software como GitHub, Bitbucket y SoundForge llevan años trabajando para mitigar el problema de filtración de credenciales. Algunos de estos servicios incluso alertan al usuario si envía un token de acceso a un repositorio público y revocan esos tokens para que no puedan usarse en acciones no autorizadas. Sin embargo, sigue siendo habitual que los repositorios incluyan, por error, tokens y claves de la interfaz de programación de aplicaciones (API).
Su organización probablemente esté al tanto de este problema. Y su equipo de seguridad debería controlar regularmente si hay Ids. de usuarios, claves de API, tokens de acceso, archivos de bases de datos y otras claves que puedan haberse expuesto accidentalmente en código en repositorios públicos o instancias de nube.
Cómo evitar la exposición de credenciales
Así como se recomienda integrar el ciclo de vida de desarrollo seguro en el proceso de desarrollo, también es recomendable implementar buenas prácticas de gestión de credenciales en cada paso del proceso de codificación. Recuerde dos puntos importantes para evitar la exposición de credenciales en su código:
- Almacene los secretos únicamente en el servicio de gestión de secretos aprobado por su organización.
- Nunca incluya secretos en el código.
En los módulos que siguen de la ruta Implementar gestión de secretos en su organización, que incluye Infraestructura de clave pública y cifrado y Gestión de claves, abordamos las mejores prácticas que lo ayudarán a gestionar las claves que protegen sus secretos, así como métodos para proteger esos secretos en la transmisión y en reposo.
Resumen
En este módulo, se presentaron métodos para crear y proteger contraseñas sólidas, además de los beneficios de los gestores de contraseñas. También se explicó cómo implementar el principio de menor privilegio al gestionar el acceso privilegiado y la importancia de monitorear a sus usuarios y sus cuentas a lo largo del tiempo.
Al unir este contenido con la información del módulo Secretos de organización, debería tener una idea más clara sobre qué se necesita para proteger los secretos de su organización, incluidas las credenciales de acceso. En el siguiente módulo, Infraestructura de clave pública y cifrado, se explican los métodos para proteger los datos en transferencia y en reposo. Puede obtener más información sobre las mejores prácticas de ciberseguridad y conocer la experiencia de encargados de seguridad reales en el Centro de aprendizaje sobre ciberseguridad en Trailhead.