EVITANDO un HACK de KUBERNETES - Mejores prácticas explicadas
HTML-код
- Опубликовано: 11 сен 2024
- Hoy voy a mostrar mi video sobre mi charla en nerdear.la, donde hackeé un cluster de pruebas y pude obtener acceso a una base de datos para tomar control de ella.
Usá mi link para probar Cast.AI y ahorrar hasta un 70% en tu cuenta de nube: cast.ai/pelado...
Slides: speakerdeck.co...
---
Repo con todos los archivos que uso: github.com/pab...
Merchandising Pelado Nerd: merch.peladone...
Micrófono: Rode VideoMic NTG
Cámara: Sony A7 Mark III
Lente: Sony 28-70mm 3.5
Laptop: Macbook Pro 16'' 2019
Puedes encontrar todos mis links en peladonerd.com
Hola Pela. Tengo dudas sobre lo obtener secrets en runtime desde un servicio externo (pongamosle por ej vault). Para poder obtener los secretos del servicio externo, la app necesitaría además de una url de dicho servicio, permisos y autenticación a ese servicio, ya sea un service account montado en el pod con permisos en vault, un token, datos de una autenticación básica o lo que sea para que logre autenticar se en dicho servicio; por lo cual siempre se terminaría cargando al menos un secreto en el pod que seria potencialmente accesible (ya sea variable de entorno o archivo). En tal caso, si un infiltrado llega a poder correr una Shell dentro del pod, de todas formas ya estaría "hackeado", xq mediante esas credenciales si la descubre podrá acceder al servicio de credenciales y de este obtener otras credenciales (más allá que la app pueda tener una policy que restrinja el acceso a ciertas credenciales). No sé si me entiendes , si estoy errado y me estoy perdiendo de algo 😢 o que no me he dado cuenta y debo estudiar mas. Podrías hechar un par de palabras de luz sobre esto? Excelente siempre tus videos
Como dije en el video, la seguridad es una suma de muchas prácticas, una sola práctica no hace tu entorno seguro o inseguro. Respondiendo tu pregunta concretamente, poniendo el ejemplo usando AWS:
- Usar AWS secret manager para guardar los secretos. (de esta forma no ponemos secretos como ENV o como archivos en el pod)
- Configurar IRSA para que el pod asuma un rol de AWS y pueda obtener esos secretos (de esta forma no ponemos credenciales de AWS como ENV o como archivo en el pod)
- Usar una imagen de Docker que no tenga shell (para que no puedan hacer una reversa)
- Usar IMDSv2 para que no se puedan obtener metadata sin credenciales
- Configurar RBAC para que el pod no pueda hacer nada mas de lo que necesite hacer
- Mantener actualizados tus paquetes de dependencias por las dudas que salga alguna vulnerabilidad
Ahi yo creo que tenés varios agujeros cubiertos, vuelvo a repetir, esto no lo hace 100% seguro, pero definitivamente hace muy dificil que te hackeen si seguis todas estas prácticas. Saludos!
Gracias pela! Excelente como siempre más claro que el agua 😊
@@matiasr2503 Hay un operador que esta muy bueno que se llama ESO (External Secrets Operator) que por debajo usa cualquier proveedor de secretos que te guste (Secrets Manager, Vault, etc), guarda las credenciales como k8s secrets y los sincroniza automaticamente cuando ya no son validos, aun no lo he usado mucho pero parece ser una buena soluciona tu problema, saludos!
Como estas Pelado, uso Cast hace unos meses y tiene buen soporte, en vez de hacerlo a manopla me hice un módulo con terraform y helm para automatizar el deploy de cast. Ahora me estoy peleando para correr instancias spot y ahorrar un poco más de costos, sobre todo en Argentina. Saludos!!!
Estaba esperando esto hoy en día muchos usan KUBERNETES , excelente data gracias pelado. Un saludo grande.
Hola Pelado, podrias hacer un video algun dia hablando sobre Pulumi? Lo he estado usando recientemente para el desarrollo de mi IaC y es taaan facil y comodo que me extrania que no mucha gente sepa de eso y sinceramente creo que necesita mas reconocimiento y mas ahora que obtuvo una Series C de financiamiento, asi que esperemos cosas mejores de ellos en el futuro, saludos
Intersantísimo! oro molido Pelado, porque no haces una sesión hands on para crear un cluster autoadministrado (k0,3 u8) e irlo asegurando? romperías record de audiencia. Que tal se ve afectada la seguridad del 0 al 10 para un servicio a) autoadministrado y otro b) de un proveedor como linode o vultr por ejemplo? Conoces o recomiendas un servicio de escaneo de seguridad para el cluster? (tipo castai pero en lugar de costos, seguridad?).
Impresionante como siempre Pela!!
Pelado, te quería felicitar por tu presentación en Nerdearla, creo que fue la mejor! 😀
Excelente video. Adicionalmente en el codigo de la aplicacion manipular cadenas secretas como un Array de caracteres y no como un String.
Creo que aqui me salto una duda 13:09 si el pod no tiene internet tampoco deberia poder conectarse con tu shell y si tiene un SG que limita el outbound traffic tambien deberia fallar, no?
Peladito eres una maravilla
Pela, como siempre, excelentes las recomendaciones 👌🏽un craa
Excelente video muy muy util ! Saludos desde el salvador.
El final fue muy chistoso jajaja ¡Buen Contenido!
La falta de validación de archivos es una vulnerabilidad clásica y común en aplicaciones web, especialmente en aquellas que utilizan PHP u otros lenguajes de servidor que permiten la carga y manipulación de archivos.
De hecho cuando uno revisa las herramientas de pentesting sobre kubernetes/cloud/otros servicios al final terminan siendo un script de validación de la configuración. Cosas que con un poco de cuidado, buenas prácticas se solucionan.
como data extra el metadata que usas para traer info de la vm tambien es compatible con openstack ya que utilizan un protocolo similar, por si alguien quiere hacer pruebas
Manso video pela, abrazo!!
Que maravilla de video
Buen video, saludos desde Perú!
Final Épico...! Jajajajaja
Saludos Pelado, por curiosidad tienes alguna certificación de Kubernetes? me interesa saber que tan importantes son en el día a día y a la hora de buscar trabajo
Hola Pelado, puse la IP de mi clúster pública y desplegué un nginx que tiene en la carpeta HTML el kubeconfig pero con nombre index.html, ¿Qué opinas?😂 Muchas gracias por compartir tantos conocimientos, definitivamente necesario ver tus videos, saludos desde Costa Rica
Claro! desde que pudiste subir una backshell o incluso podría haber sido un backdoor las puertas se abrieron.
Oe cual es esa app donde sacas snippes de commandos para el curl? Me molo un monto, podrias dajarte por aqui un link? Merci!
Pelado cuando publican tu charla en Nedearla? ajaja
Que tuviste que hacer para conseguir el título de cncf ambassador??
Hola pelado, pregunta si tengo un ambiente controlado de integracion continua, cual seria la mejor manera de manejar los scripts, ejecucion de procedimientos, inserts updates, paquetes etc, esto con el fin de automatizar llevar control sobre una base de datos QA, agradezco tu respuesta. (el ambiente esta jenkins, gitlab, bd oracle)
Un abrazo desde Ecuador, pregunta si tengo levantado un bastión pero con la VPN, estará seguro el clúster 🤔
Quiza usar imagenes distroless podria ayudar a evitar un ataque de este tipo?
Excelente video
jajajaj super especifico ese numero del final
Me convenciste, yo ponía mis manos al fuego por kubernates 🔥
bro, saludos, .. requiero de tu ayuda.. deseo instalar una maquina (local) para compartir mis videos a traves de rclone, dame una idea de como hacerlo... agradeciendo de antemano tu colaboracion.. me ayudarias un monton....un abrazo
Hola, mucha gracias por el vídeo.
Tengo una duda, como se hizo para ejecutar el script que lanza el shell reverse?
Si el servicio almacena archivos, como fue capaz de ejecutar el script?
Tiene permisos de ejecución?
Simplemente visité la página apuntándole al script y PHP lo ejecutó
@@PeladoNerd gracias Pelado
Hola peladito que tal sos mi mentor queria que sepas eso y por otro lado quiero hacerte una consulta o una ayuda, como hago para asignar una IP a un contenedor pero que siempre sea esa IP asi reinicie el docker o asi reinicie el sistema anfitrion pase lo que pase quiero que mantenga esa IP que yo le asigne como haria?
Buenas! Eso que comentas no tendria sentido.
Para mantener una IP unica por ejemplo estando en un cluster de alguna nube directamente podes utilizar un Service como LoadBalancer. En ese caso ese LoadBalancer es un recurso concreto de cada nube que te genera la IP publica unica.
Nunca nos nos pasó que nos hayan puesto a minar en un server con un CMS brasilero de mapas de extraña procedencia 😆
Muy buen ejemplo 😬, se ve la maldad en tu risa 😬
PeladoHacker,PeladoNinja,PeladoRedHat,PeladoBlackHack
Aaaaa eso nada más tu lo sabes, cómo crees que la gente normal va a poder saber eso, creo que necesitas ser un nerd, no tener vida social y estudiar mucho para tener este nivel de conocimientos, yo si pude hackear varios sitios pero solo cuando antes no era tan avanzado como ahora
iptables -A INPUT -p tcp --dport-kuberenetes-only-god-knows -j DROP --update-you-resume --send-automatic-resign-letter , listo! estoy contratado?
Lo veo bien , pero hay que probarlo