Slide 1

Slide 1 text

Y un par de historias de cómo casi nos hackearon PABLO FREDRIKSON SEGURIDAD EN KUBERNETES

Slide 2

Slide 2 text

@pablokbs Pablo Fredrikson ● Principal SRE @ Split Software ● Nerd ● 17 años de experiencia en el rubro ● 5 años con Kubernetes en Producción ● CNCF Ambassador ● YouTuber Extraordinaire

Slide 3

Slide 3 text

Kubernetes PABLO FREDRIKSON @pablokbs

Slide 4

Slide 4 text

Kubernetes - ¿Cómo atacarlo? PABLO FREDRIKSON @pablokbs

Slide 5

Slide 5 text

PABLO FREDRIKSON @pablokbs DEMO (voto.peladonerd.com)

Slide 6

Slide 6 text

PABLO FREDRIKSON @pablokbs Lo logramos! (espero)

Slide 7

Slide 7 text

Recapitulemos 1. Encontramos un sitio vulnerable para subir archivos (sin checkeo de tipo de archivo) 2. Ejecutamos una shell reversa 3. kubectl (no tenía permisos suficientes) 4. curl user-data y security-credentials (IMDSv1) a. Obtuvimos credenciales AWS b. Obtuvimos credenciales de Kubernetes 5. kubectl describe voto-app a. Obtuvimos credenciales Postgres 6. Descargamos psql y h4xx PABLO FREDRIKSON @pablokbs

Slide 8

Slide 8 text

PABLO FREDRIKSON @pablokbs ¿Cómo prevenimos esto?

Slide 9

Slide 9 text

Cómo prevenir: Cuidá tu aplicación PABLO FREDRIKSON @pablokbs

Slide 10

Slide 10 text

Cómo prevenir: Configurá bien tu cluster PABLO FREDRIKSON @pablokbs 1. Desactivá acceso externo a tu API de Kubernetes 2. No compartas usuarios de Kubernetes 3. No uses variables de entorno para secretos 4. Desactivá IMDSv1 (para AWS) $ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 …

Slide 11

Slide 11 text

Cómo prevenir: Usá IMDSv2! PABLO FREDRIKSON @pablokbs $ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/ $ curl http://169.254.169.254/latest/meta-data/ ami-id ami-launch-index ami-manifest-path block-device-mapping/ events/ hostname iam/ instance-action instance-id instance-type local-hostname local-ipv4 mac metrics/ network/ placement/ profile public-hostname public-ipv4 public-keys/ reservation-id security-groups services/

Slide 12

Slide 12 text

Cómo prevenir: Kubernetes CVEs PABLO FREDRIKSON @pablokbs https://kubernetes.io/security

Slide 13

Slide 13 text

OWASP Kubernetes Top 10 (2022) K01: Insecure Workload Configurations K02: Supply Chain Vulnerabilities K03: Overly Permissive RBAC Configurations K04: Lack of Centralized Policy Enforcement K05: Inadequate Logging and Monitoring K06: Broken Authentication Mechanisms K07: Missing Network Segmentation Controls K08: Secrets Management Failures K09: Misconfigured Cluster Components K10: Outdated and Vulnerable Kubernetes Components https://owasp.org/www-project-kubernetes-top-ten PABLO FREDRIKSON @pablokbs

Slide 14

Slide 14 text

Miren mi video con Tim Allclair https://youtube.com/peladonerd PABLO FREDRIKSON @pablokbs

Slide 15

Slide 15 text

PABLO FREDRIKSON @pablokbs Gracias peladonerd.com