Está en la página 1de 48

DevSecOps y la caída de Babilonia

Cómo olvidarse de lo básico

Helena Jalain
Daniel González
Net user

Helena Jalain Daniel González


@hlna_jb @dani_zerolynx
• Security Researcher en ZEROLYNX • Co-fundador de ZEROLYNX

• Experiencia en consultoría de ciberseguridad, • Socio director de ciberinteligencia de OSANE


hacking ético y desarrollo seguro Consulting

• Ingeniera de Telecomunicación y anteriormente • Profesor oficial del certificado CSX y


investigadora en la Universidad Politécnica de coordinador de las formaciones de
Madrid ciberseguridad de ISACA Madrid
DevOps + Sec
▪ Más facilidad para desarrollar, mayor número de
cambios que se pueden hacer.
▪ Nuevos gestores de dependencias (Maven, NPM,
Developement Security Composer…) facilitan la integración con otras
• Diseño • Requisitos tecnologías.
• Desarrollo • Análisis
• Tests • Pentest
▪ Ofrecer nuevas funcionalidades más rápido.
▪ Capacidad de subir a producción de manera
automática.
Operations
▪ Integra garantías de seguridad en todo el proceso.
• Monitorización
• Configuración ▪ Reducir costes a nivel de desarrollo, incluyendo el
• Integración coste de solucionar problemas de seguridad o
vulnerabilidades.
(Sec)Dev(Sec)Ops(Sec)¿?¿?

DevSECOps 920.000

SECDevOps 55.700
DevOpsSEC 17.600

2 1 3
Ciclo de desarrollo DevOps
• Análisis de código estático • Escaneo periódico de
• Escaneo de vulnerabilidades infraestructura
• Revisión de requisitos • Test unitarios de seguridad • Pentest activo

Diseño IDE CI Desarrollo Test Producción

• Análisis SSL
• Revisión de código
• Pentest pasivo
• Análisis de código estático
• Escaneo periódico de la infraestructura
Tendencia Desarrollos
seguros

Entorno de
desarrollo

Protección del entorno


Seguridad de los entornos de desarrollo
Escenario
Controlador de versión Administrador de tareas
Push commit Update Tickets

Trigger Build

Servidor de integración continua Sistema de mensajería en tiempo


real

Post Message
Riesgos y criticidades
Dependiendo de los siguientes factores:

Información y secretos
Vulnerabilidades: Evasión de la autenticación,
ejecución de código…
Permisos: Autenticación y Autorización

Exposición: Acceso interno o externo


Búsqueda de secretos
Información confidencial almacenada en
las herramientas o en el propio código
fuente:

Usuarios
Contraseñas
Claves
Tokens
Certificados
Repositorios de código

Commits
History
Código Comentarios
Dependencias
Vulnerabilidades
Credenciales
Claves criptográficas
Credenciales BBDD
Infraestructura
API tokens (AWS, etc) Configuración servicios (DHCP, SMTP, etc)
Bash history IPs y URLs internas
Claves SSH Puertos

[1] https://github.com/techgaun/github-dorks
Secretos en el código …Ups

Buenas prácticas:

Para evitar subir info sensible:


✓ git-secrets

Para eliminar la info de la history del repositorio:


✓ git filter-branch
✓ BFG Repo-Cleaner

[2] https://help.github.com/en/articles/removing-sensitive-data-from-a-repository
Administradores de tareas

Gestión de Agile Gestión de


incidencias proyectos

Usuarios
Nombres de usuario Proyectos
IDs internos
Nombres
Nombres y apellidos
Categorías
Emails
Descripciones
Cuentas LDAP
Dashboards
Información de proyectos - API

[3] https://developer.atlassian.com/cloud/jira/platform/rest/v2/

[4] https://medium.com/@sector035/gathering-company-intel-the-agile-way-6db12ca031c9
Información de usuarios – API

Por defecto solo accesible por administradores


o usuarios de Jira

Pero se pueden cambiar los permisos:


Servidores de integración continua

Usuarios
Código

Credenciales
Infraestructura
Pipeline
Plugins
Open Source
Integración Entrega
continua (CI) continua (CD)

Jenkinsfile (Declarative Pipeline)


pipeline {
agent any

stages {
stage('Build') {
steps {
echo 'Building..'
}
}
stage('Test') {
steps {
echo 'Testing..'
}
Stage Step Step Step }
stage('Deploy') {
steps {
echo 'Deploying....'

Build Test Deploy }


}
}

}
Código fuente

Workspace de Jenkins:
• Directorio “temporal” de archivos
específico para cada Job
• Se crea al clonar el código del
repositorio para procesarlo
Credenciales en logs

Eliminar el build que contiene información sensible:


▪ Interfaz Gráfica
▪ Directorio del proyecto/builds/#nº
Credenciales en logs
Jenkins dispone de plugins (Credentials Binding Plugin,
Mask Passwords Plugin) para gestionar las
credenciales de aplicaciones de terceros y evitar que
éstas aparezcan embebidas en logs y archivos de
configuración.
Credenciales almacenadas

▪ credentials.xml:
– Secret text (API token)
– username:password
– Secret file
– SSH public/private key pair
– Certificate (PKCS#12)
– Docker Host Certificate Authentication

▪ /job/job_name/config.xml
Credenciales en claro – Consola de scripts

[5] https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console
Consola de scripts- Jira

[8] https://marketplace.atlassian.com/addons/app/jira/top-selling
Explotación de vulnerabilidades

[6] https://www.cvedetails.com/vendor/15865/Jenkins.html

[7] https://www.cvedetails.com/product/8170/Atlassian-Jira.html
Mal de muchos… consuelo de tontos
Explotación de vulnerabilidades - Jenkins

Critical
3

High
Medium 24
30
[10] https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
[11] https://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html

[9] https://nvd.nist.gov/vuln/search/results?form_type=Advanced&results_type=overview&query=Jenkins
DEMO TIME
Gestión de permisos
Cada plataforma tiene una gestión de permisos diferente con mayor o menor capacidad de
configuración.

Configuración por defecto


Cambios por “necesidad”

Principio de mínimo privilegio


Matriz de roles y permisos
Permisos – Configuración por defecto
Permisos – Configuración por defecto
Interfaces expuestas

80.177

1
2.603 2.532
2 3
Jenkins en datos

228.825 73.539 48.096


Vulnerables CVE-2018-1000861 Vulnerables (CVE-2018-1000861
TOTAL instalaciones (versión < 2.138/2.121.3 LTS) y CVE-2019-1003001)

80.177 29.593 ~66% de los vulnerables a


CVE 2018 -1000861
Vulnerables CVE-2018-1000861
Servidores expuestos (versión < 2.138/2.121.3 LTS) ~21% del total
~35 % del total ~31% de los vulnerables
(stats)
Peor escenario de autenticación
~41 % de los expuestos
49% expuestos
6.543 ~8% de los expuestos 34% del total
Sin autenticación +CVE 2018 -
Sin autenticación ~3% del total 1000861
[12] http://stats.jenkins.io/plugin-installation-trend/installations.json [11] http://stats.jenkins.io/plugin-installation-trend/jenkins-version-per-plugin-version.json
Empresas afectadas…
(muchas y variadas…)

No se mostrará ninguna vulnerabilidad de empresas en concreto.


Muchas de las vulnerabilidades se han detectado en terceros
DevSecOps Top 3 Fails
3 Datos sensibles en
incidencias
2
Información de más
de 1000 usuarios
1
EASY MODE
1
EASY MODE
1
EASY MODE
1
EASY MODE
1
EASY MODE
1
EASY MODE
1
EASY MODE
Conclusiones
Enlaces
[1] https://github.com/techgaun/github-dorks
[2] https://help.github.com/en/articles/removing-sensitive-data-from-a-repository
[3] https://developer.atlassian.com/cloud/jira/platform/rest/v2/
[4] https://medium.com/@sector035/gathering-company-intel-the-agile-way-6db12ca031c9
[5] https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console
[6] https://www.cvedetails.com/vendor/15865/Jenkins.html
[7] https://www.cvedetails.com/product/8170/Atlassian-Jira.html
[8] https://marketplace.atlassian.com/addons/app/jira/top-selling
[9] https://nvd.nist.gov/vuln/search/results?form_type=Advanced&results_type=overview&query=Jenkins
[10] https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
[11] https://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html
[12] http://stats.jenkins.io/plugin-installation-trend/installations.json
[13] http://stats.jenkins.io/plugin-installation-trend/jenkins-version-per-plugin-version.json

Otros enlaces de interés:


http://www.exfiltrated.com/research/Continuous_Integration_Continous_Compromise_Bsides2017_Wesley_Wineberg.pdf
https://www.youtube.com/watch?v=0H6jd5yG7_A
¡ Muchas gracias !
hjalain@zerolynx.com dgonzalez@zerolynx.com
@hlna_jb @dani_zerolynx

© 2019 Zerolynx S.L. Sociedad española de responsabilidad limitada. Todos los derechos reservados. Zerolynx y sus logotipos son marcas registradas por Zerolynx S.L. Diseño de iconos creado por Freepik para www.flaticon.com, licenciado bajo CC 3.0 BY. La información contenida es de carácter informativo. Para solicitar una cotización de un servicio debe contactar con el equipo comercial de Zerolynx.

También podría gustarte