SREDevOps.org

@index.sredevops.org.ap.brid.gy

SRE, DevOps, Linux, Ethical Hacking, AI, ML, Open Source, Cloud Native, Platform Engineering en Español, Portugués (Brasil) and English 🌉 bridged from ⁂ https://www.sredevops.org/, follow @ap.brid.gy to interact

"O cuando la computación dejó de ser un lugar" Hubo una época en que podíamos señalar un servidor con el dedo. Allí está la memoria, allí la CPU, esos son los discos y la red es ese desorden de cables detrás del rack. La diferencia con el software se resumía en una frase que muchos repetíamos […]

Del silicio al vapor

_"O cuando la computación dejó de ser un lugar"_ Hubo una época en que podíamos señalar un servidor con el dedo. Allí está la memoria, allí la CPU, esos son los discos y la red es ese desorden de cables detrás del rack. La diferencia con el software se resumía en una frase que muchos repetíamos con una sonrisa: "_El hardware se puede patear; el software, solo maldecir._ " ## La virtualización licuó el hardware**.** A fines de los noventa, la virtualización salió del mundo mainframe y llegó al escritorio, de pronto, el servidor dejó de ser un objeto físico para convertirse en una ilusión administrada por un hipervisor. La tarjeta de red es software, los discos, archivos y la memoria una asignación dinámica. El hardware seguía existiendo, pero desaparecio de nuestro campo visual. ## **Y la nube convirtío lo líquido en gaseoso.** La nube completó esa transformación. Ya no administramos servidores: declaramos estados. No configuramos redes: escribimos manifiestos. No instalamos infraestructura: la versionamos. La infraestructura dejó de ser un conjunto de dispositivos para convertirse en un conjunto de documentos. _Infrastructure as Code_ no convirtió el hardware en software; solo su administración. Y ese cambio impactó también en la ciberseguridad. ## **La complejidad no desaparece. Solo cambia de domicilio.** Durante decadas protegimos equipos, firewalls, routers y sistemas operativos. Incluso los ataques más sofisticados terminaban en un activo físico. Hoy una parte importante de una auditoría consiste en revisar un repositorio Git. Analizamos archivos YAML, módulos de Terraform, manifiestos de Kubernetes y pipelines CI/CD. La superficie de ataque migró hacia donde migró la infraestructura: al texto. Nuestro oficio cambió también, cada vez dedicamos menos tiempo a investigar fallas del hardware y más a comprender errores de diseño, decisiones arquitectónicas y configuraciones equivocadas. Primero vivía en los racks, después en el hipervisor y luego en los proveedores de nube. Hoy habita en repositorios Git, plantillas declarativas y cadenas de suministro de software. La inteligencia artificial parece ser el siguiente paso de ese mismo recorrido. Primero abstrajimos el hardware, luego la infraestructura. Ahora comenzamos a abstraer parte de la programación y, con ella, parte del razonamiento del ingeniero. (_Esa es una conversación que merece un artículo aparte_). Cada nueva capa de abstracción nos aleja un poco más, pero no elimina la complejidad. Solo la desplaza. Durante décadas nos preguntamos dónde estaba el servidor. Hoy la pregunta es: **¿quién está aplicando el criterio?**

sredevops.org

Managing Kubernetes clusters entirely from the command line is a rite of passage. We have all typed kubectl get pods -n kube-system more times than we care to admit. But when you are troubleshooting a cascading failure across multiple namespaces at 3:00 AM, staring at raw JSON or squinting at […]

Freelens: Taking back control of your Kubernetes clusters with a truly open-source desktop client

Managing Kubernetes clusters entirely from the command line is a rite of passage. We have all typed `kubectl get pods -n kube-system` more times than we care to admit. But when you are troubleshooting a cascading failure across multiple namespaces at 3:00 AM, staring at raw JSON or squinting at nested YAML in a terminal window isn't just exhausting—it is a liability. Enter Freelens, a free, open-source, cross-platform desktop application designed to take the squinting out of Kubernetes administration. ## Why Freelens? The open-source alternative we actually need If Freelens looks familiar, that is because it is a direct fork of OpenLens, the open-source core that originally powered Mirantis's popular Lens Desktop. When the commercial version of Lens began locking features behind paywalls and subscription models, the community did what the community does best: they forked it. Freelens is built to preserve the dream of a powerful, unrestricted, and highly extensible Kubernetes IDE. It runs locally on your machine, respects your existing `kubeconfig` files, and does not require you to sign up for a cloud account just to view your local development clusters. * * * ## Installation guide Freelens is built using Electron, meaning it runs natively across macOS, Linux, and Windows. Below is the breakdown of how to get it running on your machine of choice. ### macOS Freelens requires macOS 12 (Monterey) or later. The project provides native binaries for both Apple Silicon (`arm64` for M1/M2/M3 chips) and Intel (`amd64`) architectures. #### The quick way (Homebrew) If you use Homebrew, you can install the cask with a single command: brew install --cask freelens #### Manual installation Alternatively, you can download the `.dmg` or `.pkg` installers directly from the Freelens Releases page. * * * ### Linux To run Freelens on Linux, your system must have GNU C Library (glibc) 2.34 or later. This is standard on modern distributions such as Debian 12, Fedora 35, Ubuntu 22.04, Arch Linux, and their derivatives. #### Flatpak (Recommended for sandboxed security) The Flatpak package is hosted on Flathub. It comes bundled with `kubectl` and `helm`, and automatically reads your local `~/.kube/config`. To install and run it: flatpak install flathub app.freelens.Freelens flatpak run app.freelens.Freelens _Note on Flatpak Sandboxing:_ Because Flatpak runs applications in an isolated environment, Freelens includes built-in wrappers to access host-installed CLI tools like `aws`, `doctl`, `gke-gcloud-auth-plugin`, and `kubelogin`. If you need to drop into a terminal within Freelens, it defaults to `/bin/sh` inside the sandbox, but you can configure it to use `/app/bin/host-spawn` to interact directly with your host system's shell. #### Snap Store For Ubuntu and other Snap-enabled distributions: sudo snap install freelens --classic #### APT repository (Debian/Ubuntu) If you prefer native package management via `apt`, you can add the official repository: # Add the repository signing key curl -L https://raw.githubusercontent.com/freelensapp/freelens/refs/heads/main/freelens/build/apt/freelens.asc | sudo tee /etc/apt/keyrings/freelens.asc # Add the source list curl -L https://raw.githubusercontent.com/freelensapp/freelens/refs/heads/main/freelens/build/apt/freelens.sources | sudo tee /etc/apt/sources.list.d/freelens.sources # Update and install sudo apt update sudo apt install freelens #### Arch User Repository (AUR) Arch users can find the precompiled binary package in the AUR under freelens-bin. #### AppImage If you prefer a portable executable, grab the `.AppImage` from the releases page. First, ensure you have the necessary fuse and compression libraries installed: sudo apt install libfuse2 zlib1g-dev Then, run the AppImage with the recommended flags to ensure smooth rendering under modern display servers (like Wayland) and to bypass sandbox-related GPU issues: ./Freelens*.AppImage --no-sandbox --ozone-platform-hint=auto --enable-features=WebRTCPipeWireCapturer --enable-features=WaylandWindowDecorations --disable-gpu-compositing * * * ### Windows Freelens supports Windows 10 or later, offering native builds for both `x64` and `arm64` architectures. #### WinGet (Windows Package Manager) You can install Freelens silently using Microsoft's native package manager: winget install Freelensapp.Freelens _Tip:_ Use the `--scope machine` flag if you want to install it globally to `C:\Program Files` instead of the local user directory. #### Scoop If you prefer the developer-focused Scoop installer: scoop bucket add extras scoop install freelens #### Portable and manual installers If you prefer a zero-installation footprint, download the **Portable EXE** from the releases page. Standard `.exe` (NSIS) and `.msi` installers are also available. * * * ## Extending Freelens One of the greatest strengths of the original OpenLens ecosystem was its extension API. Freelens maintains full compatibility with this ecosystem. Developers can easily port existing OpenLens extensions or write brand-new ones. * **Extensions Wiki:** Check out the Freelens Extensions Wiki to see a list of community-supported extensions. * **Get Involved:** If you have an extension you want to migrate or propose, join the discussion on GitHub Discussion #117. * **Documentation:** Read the Freelens Docs to learn how to build your own custom UI components and integrations. * * * ## Development and contribution Freelens is a community-driven project that welcomes contributors of all skill levels. Whether you want to fix a bug in the UI, optimize the build pipeline, or write documentation, your help is welcome. * **Building from source:** If you want to hack on the codebase, follow the step-by-step guide on the Development Wiki. * **Contributing guidelines:** Read the CONTRIBUTING.md file in the repository to understand the pull request process and coding standards. ### Earn money by contributing The Freelens project utilizes BountyHub, allowing community members to fund specific feature requests or bug fixes. Developers can claim these bounties by submitting successful pull requests that resolve the issues. To learn more about how to fund an issue or get paid for your code, check out the Fund an issue or earn money by developing wiki page. * * * ## Meet the team The rapid growth of Freelens is driven by a dedicated group of open-source maintainers: ### Core Team * Roberto Bandini (@robertobandini) – Founder: General management, community outreach, and product direction. * Piotr Roszatycki (@dex4er) – Maintainer: Architecture, release engineering, and extension development. * Mario Offertucci (@mariomamo) – Maintainer: UI/UX design, documentation, and AI integrations. * Leopoldo Capuano (@leo-capvano) – Maintainer: Generative AI solutions and smart extension development. ### Release Engineering Team * Piotr Roszatycki (@dex4er) – Release Engineering Lead * Omar Alani (@omarluq) – Release Engineering Member * Matías Roje (@MatiasRoje) – Release Engineering Member * * * ## Community and support Stay connected with the community, report bugs, or discuss new feature ideas through these channels: * **Chat & Discussion:** Join the Discord Server or participate in GitHub Discussions. * **Social Media:** Follow the project on Bluesky, X (formerly Twitter), and LinkedIn. * **Video Content:** Watch tutorials and updates on YouTube. * **Issues:** Spot a bug? Open an issue on the GitHub Issue Tracker. If your organization uses Freelens, consider adding your name to the official Adopters List to show your support for sustainable open-source software. * * * ## License Freelens is distributed under the permissive MIT License.

sredevops.org

El lado "defensivo" de la ciberseguridad es, a menudo, el lado "ofensivo" con una licencia diferente. La misma AI que puede "detectar una vulnerabilidad para parchearla" también puede "detectar una vulnerabilidad para explotarla".

El lobo disfrazado de oveja: el creador de Pegasus ahora quiere vendernos "el remedio"

Imagina que los creadores de la "aplicación" más peligrosa del mundo, llamada "Pegasus", deciden empezar a vender el "antipegasus"? Bueno, el resultado es **Dream** , una startup israelí de _**ciberseguridad basada en AI** (uy, qué novedad...)_ quienes están "migrando" desde la **_"vigilancia ofensiva"_** hacia la **_"defensa soberana"... bueno, están con ganas de vendernos nuestro propio derecho soberano a la ciberseguridad en Latinoamérica._** La ironía es tan densa que podría ser la trama de una novela cyberpunk / techno-thriller: Shalev Hulio, cofundador de NSO Group y la mente maestra detrás del infame spyware Pegasus, ahora se quiere posicionar como el salvador de las infraestructuras nacionales. ## Del "Modo Dios" del spyware a la AI defensiva Para los que se perdieron el caos de los últimos años, Pegasus no era simplemente "spyware". Era una clase magistral de _zero-click exploits_ : la capacidad de comprometer un dispositivo sin que el usuario tuviera que hacer clic en un solo link ni siquiera contestar una llamada. Básicamente, convirtió los smartphones en micrófonos de vigilancia 24/7 para gobiernos de todo el mundo, apuntando frecuentemente a la gente "equivocada" (periodistas, activistas y algún que otro parlamentario). ### Avancemos hasta enero de 2023: Hulio deja NSO y lanza **Dream**. El discurso cambió. En lugar de crear herramientas para romper sistemas, Dream afirma construir plataformas impulsadas por AI que detectan amenazas y parchan vulnerabilidades antes de que puedan ser explotadas. Es el clásico pitch de ventas de _"yo sé cómo piensan los malos porque yo fui el arquitecto jefe de los malos"_. Desde un punto de vista técnico, es una transición lógica; la defensa más efectiva suele ser construida por alguien que entiende las primitivas ofensivas de la superficie de ataque, pero es el equivalente de ir a buscar a tu jefe de seguridad a una cárcel de alta seguridad. ## Por qué América Latina es el blanco perfecto Si estás vendiendo un "antídoto" carísimo, necesitas una región que sienta que el veneno ya está corriendo por las venas. América Latina calza perfecto por tres razones: ### 1. La brecha de vulnerabilidad Se reporta que los ciberataques en la región crecen un 25% anual. Según evaluaciones del Banco Mundial, la preparación en ciberseguridad de la región es mediocre, para decir lo menos (con un promedio de 10.2/20). Cuando tu defensa nacional es básicamente una estrategia de "cruzar los dedos y esperar que no pase nada", una startup de AI valuada en 3 billones de dólares parece un salvavidas. ### 2. El golpe de realidad de Costa Rica Los ataques de 2022 en Costa Rica son un caso de estudio sobre la fragilidad sistémica. Primero, el grupo de ransomware **Conti** dejó fuera de combate a 30 instituciones gubernamentales, forzando una emergencia nacional —la primera en el mundo causada por un ciberataque—. Poco después, el grupo **Hive** golpeó el sistema de salud, obligando a los hospitales a volver a la era del papel y el lápiz. Para los países vecinos, esto fue una demostración _cuática_ de que una nación mediana puede quedar paralizada por actores remotos si su perímetro es poroso y sus ciclos de parcheo son inexistentes. ### 3. Alineación política La ciberseguridad a nivel soberano no se trata solo de código; se trata de confianza (o de la ilusión de ella). Dream está apuntando a gobiernos alineados con Washington y Tel Aviv. * **Argentina:** Bajo Javier Milei, el país está girando hacia un hub centrado en AI y fortaleciendo lazos con Israel. * **Colombia:** La administración actual, con Abelardo De la Espriella, está restaurando vínculos diplomáticos con Israel. Vender una "plataforma de AI soberana" a una agencia de seguridad nacional requiere un nivel de cercanía política que un contrato estándar de SaaS no ofrece. La identidad israelí de Dream, que alguna vez fue una carga para NSO ante los grupos de derechos humanos, es ahora un activo estratégico en las capitales de derecha. ## La jugada técnica: AI Soberana y air-gapping Una de las mayores ventajas competitivas de Dream es su apuesta por los **centros de datos _"soberanos"_**. Construyeron una instalación cerca de Modiin, Israel, para entrenar Large Language Models (LLMs) propietarios sin depender de proveedores de nube pública como AWS, Azure o GCP. Para un gobierno, esto es un requisito crítico. Ninguna agencia de inteligencia quiere que sus datos sensibles de vulnerabilidades fluyan a través de un proveedor de nube basado en EE. UU. sujeto al CLOUD Act. Al ofrecer "AI soberana", Dream promete: * **Residencia de Datos:** Tus datos se quedan dentro de tus fronteras (o las de un "socio confiable"). * **Despliegue Air-gapped:** La capacidad de desplegar agentes de AI en entornos que no tienen conexión con la internet pública. * **LLMs personalizados:** Modelos entrenados específicamente con telemetría de ciberseguridad en lugar de prosa general de internet. ## La paradoja ética: ¿Podemos confiar en el antídoto? El caso de negocio está clarísimo: se reporta que las ventas han superado los 300 millones de dólares y la valoración se ha triplicado a 3 billones. Pero la pregunta ética sigue ahí: **¿Es este un giro genuino hacia la defensa, o es simplemente un modelo de negocio más sostenible para el mismo set de habilidades?** El lado "defensivo" de la ciberseguridad es, a menudo, el lado "ofensivo" con una licencia diferente. La misma AI que puede "detectar una vulnerabilidad para parcharla" también puede "detectar una vulnerabilidad para explotarla". Para los grupos de la sociedad civil en América Latina, la distinción es puramente académica. Ya sea que la herramienta se use para detener un ataque de ransomware o para monitorear a un disidente, el poder reside en quien tiene las llaves. En este caso, las llaves las tiene el hombre que construyó la herramienta de vigilancia más poderosa e ilegal de la historia reciente, respaldado por organismos de seguridad israelíes responsables de un genocidio que sigue en curso, lo cual supera cualquier argumento técnico para dar un rotundo rechazo a cualquier intento de apropiarse de los datos de empresas y personas en Latinoamér * * * ### Referencias y Recursos * **Artículo Original:** The man who built Pegasus now sells governments the antidote por Alina Maria Stan. * **Lecturas Adicionales:** * NSO Group and the Pegasus Project - Amnesty International. * Conti Ransomware Analysis - CISA (Buscar avisos de Conti/Hive). * Sovereign AI Concepts - Entendiendo el giro hacia la infraestructura de AI nacionalizada.

sredevops.org

Is this a "Linux-ification" of Windows? Not quite. It's more of a pragmatic bridge.

Microsoft brings Linux-style coreutils natively to Windows

Is this a "Linux-ification" of Windows? Not quite. It's more of a pragmatic bridge. Coreutils for Windows won't make you forget you're on Windows, and it won't replace the need for a full WSL instance when you're doing heavy-duty Linux systems engineering. However, for the developer who just wants to `grep` a log file or `find` a config without fighting the shell, it is a massive quality-of-life improvement. For years, the relationship between Microsoft and the Linux ecosystem was one of mutual suspicion and occasional hostility. Fast forward to 2026, and the irony is palpable: Microsoft is now officially shipping Unix-style utilities to make Windows feel a little more like the environments developers actually live in. Announced at Microsoft Build 2026, **Coreutils for Windows** is a new, Microsoft-maintained suite of command-line tools designed to run natively on Windows. No WSL required, no heavy virtualization layers—just your familiar commands, running directly on the Windows kernel. ## The Rust-powered foundation Rather than attempting a messy port of aging GNU C code, Microsoft has gone the modern route. Coreutils for Windows is built upon uutils, a cross-platform, high-performance reimplementation of GNU Coreutils written in **Rust**. By leveraging Rust, Microsoft is tapping into the language's inherent memory safety and concurrency strengths, which is a smart move for system-level utilities. The package is distributed as a single, multi-call binary and includes Microsoft-maintained builds of: * `uutils/coreutils` * `uutils/findutils` * A specialized Microsoft fork of `uutils/grep` The goal is to reduce the "context-switching tax" paid by DevOps engineers and SREs who bounce between local Windows workstations, macOS laptops, and Linux-based cloud environments. ## Installation and setup Getting started is straightforward, assuming you aren't still clinging to the legacy CMD prompt. The package is distributed via **WinGet** , making it easy to integrate into automated setup scripts or developer onboarding workflows. # Install the coreutils package via WinGet winget install Microsoft.Coreutils _**Note:** To get the most out of this, you will need **PowerShell 7.4 or later**. If you are still running Windows PowerShell 5.1, you might want to upgrade before you start expecting modern behavior._ ## The "curated" experience: Limitations and conflicts Before you go rewriting all your `.bat` scripts, let's manage some expectations. This is not a complete, 1:1 replacement for a Linux distribution. It is a "Windows-focused subset." ### Command conflicts and aliases Because Windows has its own way of doing things, several common commands will collide with existing PowerShell or CMD built-ins and aliases. If you try to use `ls`, `cat`, `cp`, `mv`, `rm`, or `pwd`, you might find yourself in a tug-of-war between the native Windows behavior and the new Coreutils implementation. You'll need to be mindful of your environment's execution policy and alias precedence. ### What's missing? Microsoft has been quite selective about what they include. While the "essentials" are there, many power-user tools have been left on the cutting room floor. **Explicitly excluded utilities:** * `dd` (Because direct disk manipulation on Windows is a recipe for disaster) * `dircolors` * `shred` * `sync` * `uname` **Missing POSIX-specific tools:** If your workflow relies heavily on permission management or process inspection, you'll notice the absence of `chmod`, `chown`, `chroot`, `mkfifo`, `tty`, `users`, and `who`. Attempting to map POSIX permissions to the NTFS filesystem is a complex beast, and it seems Microsoft has decided to punt that particular headache for another day. ## The bigger picture: WSL containers The release of Coreutils for Windows isn't happening in a vacuum. Alongside this, Microsoft introduced **WSL containers**. While Coreutils aims to make the Windows CLI more familiar, WSL containers aim to make Linux containerization more native. Unlike the Coreutils package, WSL containers are currently in the works and are expected to enter public preview in the coming months. They promise a way to build and run Linux containers through a dedicated CLI and API, providing enterprises with policy-based control over image sources and host interaction—essentially bringing the "managed" feel of cloud-native environments to the local Windows desktop. Coreutils for Windows is available now via the Microsoft GitHub repository * * * **References & Credits:** * Original reporting by Bobby Borisov via Linuxiac * uutils/coreutils Project * Microsoft Build 2026 Announcements

sredevops.org

¿Es esto una "Linux-ización" de Windows? No exactamente. Es más bien un puente pragmático.

Microsoft trae coreutils al estilo Linux de forma nativa a Windows

¿Es esto una "Linux-ización" de Windows? No exactamente. Es más bien un puente pragmático. Coreutils for Windows no hará que olvides que estás en Windows, ni reemplazará la necesidad de una instancia completa de WSL cuando estés haciendo ingeniería de sistemas Linux pesada. Sin embargo, para el desarrollador que solo quiere hacer un `grep` a un archivo de log o un `find` a una config sin pelearse con la shell, es una mejora gigante en la calidad de vida. Durante años, la relación entre Microsoft y el ecosistema Linux fue de sospecha mutua y hostilidad ocasional. Damos un salto al 2026 y la ironía es evidente: Microsoft ahora está distribuyendo oficialmente utilidades estilo Unix para que Windows se sienta un poco más como los entornos donde los devs realmente se mueven. Anunciado en el Microsoft Build 2026, **Coreutils for Windows** es una nueva suite de herramientas de línea de comandos mantenida por Microsoft y diseñada para ejecutarse nativamente en Windows. Sin necesidad de WSL, sin capas pesadas de virtualización; solo tus comandos conocidos, corriendo directamente sobre el kernel de Windows. ## La base potenciada por Rust En lugar de intentar un porteo desordenado de código antiguo de GNU C, Microsoft tomó el camino moderno. Coreutils for Windows está construido sobre uutils, una reimplementación de GNU Coreutils de alto rendimiento y multiplataforma escrita en **Rust**. Al aprovechar Rust, Microsoft está sacando partido de la seguridad de memoria inherente al lenguaje y sus fortalezas en concurrencia, lo cual es una jugada inteligente para utilidades a nivel de sistema. El paquete se distribuye como un único binario multi-llamada e incluye builds mantenidas por Microsoft de: * `uutils/coreutils` * `uutils/findutils` * Un fork especializado de Microsoft de `uutils/grep` El objetivo es reducir el "impuesto del cambio de contexto" que pagan los ingenieros de DevOps y SREs que saltan entre estaciones de trabajo locales con Windows, laptops macOS y entornos de nube basados en Linux. ## Instalación y configuración Empezar es bastante simple, asumiendo que no sigas aferrado al viejo CMD. El paquete se distribuye vía **WinGet** , lo que facilita su integración en scripts de configuración automatizados o flujos de onboarding para desarrolladores. # Install the coreutils package via WinGet winget install Microsoft.Coreutils **Nota:** Para sacarle el máximo provecho a esto, necesitarás **PowerShell 7.4 o superior**. Si todavía estás usando Windows PowerShell 5.1, quizás quieras actualizar antes de esperar un comportamiento moderno. ## La experiencia "curada": Limitaciones y conflictos Antes de que te pongas a reescribir todos tus scripts `.bat`, bajemos un poco las expectativas. Esto no es un reemplazo completo 1:1 de una distribución de Linux. Es un "subconjunto enfocado en Windows". ### Conflictos de comandos y alias Como Windows tiene su propia forma de hacer las cosas, varios comandos comunes chocarán con los built-ins y alias existentes de PowerShell o CMD. Si intentas usar `ls`, `cat`, `cp`, `mv`, `rm` o `pwd`, podrías terminar en un tira y afloja entre el comportamiento nativo de Windows y la nueva implementación de Coreutils. Tendrás que tener ojo con la política de ejecución de tu entorno y la precedencia de los alias. ### ¿Qué falta? Microsoft ha sido bastante selectivo con lo que incluyó. Aunque los "esenciales" están ahí, muchas herramientas para power-users quedaron fuera del corte. **Utilidades explícitamente excluidas:** * `dd` (Porque la manipulación directa de discos en Windows es una receta para el desastre) * `dircolors` * `shred` * `sync` * `uname` **Herramientas específicas de POSIX faltantes:** Si tu flujo de trabajo depende mucho de la gestión de permisos o la inspección de procesos, notarás la ausencia de `chmod`, `chown`, `chroot`, `mkfifo`, `tty`, `users` y `who`. Intentar mapear permisos POSIX al sistema de archivos NTFS es un bicho complejo, y parece que Microsoft decidió patear ese dolor de cabeza para más adelante. ## El panorama general: WSL containers El lanzamiento de Coreutils for Windows no ocurre de forma aislada. Junto a esto, Microsoft introdujo los **WSL containers**. Mientras que Coreutils busca que la CLI de Windows sea más familiar, los WSL containers buscan que la contenerización de Linux sea más nativa. A diferencia del paquete de Coreutils, los WSL containers están actualmente en desarrollo y se espera que entren en preview pública en los próximos meses. Prometen una forma de construir y ejecutar contenedores de Linux a través de una CLI y API dedicada, brindando a las empresas un control basado en políticas sobre las fuentes de las imágenes y la interacción con el host; básicamente, trayendo esa sensación de entorno "managed" de la nube al escritorio local de Windows. Coreutils for Windows ya está disponible a través del repositorio de GitHub de Microsoft. * * * **Referencias y Créditos:** * Reporte original de Bobby Borisov vía Linuxiac * Proyecto uutils/coreutils * Anuncios de Microsoft Build 2026

sredevops.org

Is this a "Linux-ification" of Windows? Not quite. It's more of a pragmatic bridge.

Microsoft brings Linux-style coreutils natively to Windows

Is this a "Linux-ification" of Windows? Not quite. It's more of a pragmatic bridge. Coreutils for Windows won't make you forget you're on Windows, and it won't replace the need for a full WSL instance when you're doing heavy-duty Linux systems engineering. However, for the developer who just wants to `grep` a log file or `find` a config without fighting the shell, it is a massive quality-of-life improvement. For years, the relationship between Microsoft and the Linux ecosystem was one of mutual suspicion and occasional hostility. Fast forward to 2026, and the irony is palpable: Microsoft is now officially shipping Unix-style utilities to make Windows feel a little more like the environments developers actually live in. Announced at Microsoft Build 2026, **Coreutils for Windows** is a new, Microsoft-maintained suite of command-line tools designed to run natively on Windows. No WSL required, no heavy virtualization layers—just your familiar commands, running directly on the Windows kernel. ## The Rust-powered foundation Rather than attempting a messy port of aging GNU C code, Microsoft has gone the modern route. Coreutils for Windows is built upon uutils, a cross-platform, high-performance reimplementation of GNU Coreutils written in **Rust**. By leveraging Rust, Microsoft is tapping into the language's inherent memory safety and concurrency strengths, which is a smart move for system-level utilities. The package is distributed as a single, multi-call binary and includes Microsoft-maintained builds of: * `uutils/coreutils` * `uutils/findutils` * A specialized Microsoft fork of `uutils/grep` The goal is to reduce the "context-switching tax" paid by DevOps engineers and SREs who bounce between local Windows workstations, macOS laptops, and Linux-based cloud environments. ## Installation and setup Getting started is straightforward, assuming you aren't still clinging to the legacy CMD prompt. The package is distributed via **WinGet** , making it easy to integrate into automated setup scripts or developer onboarding workflows. # Install the coreutils package via WinGet winget install Microsoft.Coreutils _**Note:** To get the most out of this, you will need **PowerShell 7.4 or later**. If you are still running Windows PowerShell 5.1, you might want to upgrade before you start expecting modern behavior._ ## The "curated" experience: Limitations and conflicts Before you go rewriting all your `.bat` scripts, let's manage some expectations. This is not a complete, 1:1 replacement for a Linux distribution. It is a "Windows-focused subset." ### Command conflicts and aliases Because Windows has its own way of doing things, several common commands will collide with existing PowerShell or CMD built-ins and aliases. If you try to use `ls`, `cat`, `cp`, `mv`, `rm`, or `pwd`, you might find yourself in a tug-of-war between the native Windows behavior and the new Coreutils implementation. You'll need to be mindful of your environment's execution policy and alias precedence. ### What's missing? Microsoft has been quite selective about what they include. While the "essentials" are there, many power-user tools have been left on the cutting room floor. **Explicitly excluded utilities:** * `dd` (Because direct disk manipulation on Windows is a recipe for disaster) * `dircolors` * `shred` * `sync` * `uname` **Missing POSIX-specific tools:** If your workflow relies heavily on permission management or process inspection, you'll notice the absence of `chmod`, `chown`, `chroot`, `mkfifo`, `tty`, `users`, and `who`. Attempting to map POSIX permissions to the NTFS filesystem is a complex beast, and it seems Microsoft has decided to punt that particular headache for another day. ## The bigger picture: WSL containers The release of Coreutils for Windows isn't happening in a vacuum. Alongside this, Microsoft introduced **WSL containers**. While Coreutils aims to make the Windows CLI more familiar, WSL containers aim to make Linux containerization more native. Unlike the Coreutils package, WSL containers are currently in the works and are expected to enter public preview in the coming months. They promise a way to build and run Linux containers through a dedicated CLI and API, providing enterprises with policy-based control over image sources and host interaction—essentially bringing the "managed" feel of cloud-native environments to the local Windows desktop. Coreutils for Windows is available now via the Microsoft GitHub repository * * * **References & Credits:** * Original reporting by Bobby Borisov via Linuxiac * uutils/coreutils Project * Microsoft Build 2026 Announcements

sredevops.org

Ya sea que necesites gestionar un millón de H100s o solo quieras asegurarte de que tu agente de IA no tire un rm -rf / en producción, las actualizaciones del Next '26 de GKE sugieren que el futuro de la IA es, inevitablemente, un archivo YAML.

Kubernetes será "el sistema operativo de la IA": La apuesta de Google con GKE Agent Sandbox e Hypercluster

En la reciente **Google Cloud Next '26** , el mensaje fue clarito, fuerte y un poco intimidante: **Kubernetes ya no es solo un orquestador de contenedores; es el _"sistema operativo para la era de la IA"_.** Mientras algunos de nosotros todavía estamos tratando de solucionar un `ImagePullBackOff`, Google está preparando GKE para gestionar un millón de chips aceleradores y ejecutar código de _"agentes autónomos muy confiables" (léase OpenClaw)_ a gran escala. Los anuncios se centraron en dos pilares gigantes: * **GKE Agent Sandbox** para la ejecución segura de múltiples agentes * **GKE Hypercluster** para una infraestructura que ya roza lo absurdo. ## El auge de los poco confiables _"agentes autónomos"_ (léase OpenClaw) Ya pasamos la etapa de los chatbots. Los flujos de trabajo de IA multi-agente han subido más de un 300% últimamente y, como era de esperarse, darle a un LLM las llaves para ejecutar código es una pesadilla de seguridad cuyas consecuencias ya son visibles, evidenciado en la impresionante frecuencia y cantidad de CVEs, explloits, vulnerabilidades y leaks ocurridos en los últimos meses. La respuesta de Google es GKE Agent Sandbox. Esto no es solo un nombre de marketing, es una capa de aislamiento a nivel de kernel potenciada por gVisor, la misma tecnología de sandboxing que Google usa para evitar que Gemini se muerda la cola. ### Nuevos componentes de Kubernetes Google no solo está envolviendo contenedores; están introduciendo tres nuevos componentes de Kubernetes -lanzadas originalmente como un subproyecto de SIG Apps- para estandarizar cómo viven y respiran los agentes: * **Sandbox:** El recurso principal de la carga de trabajo (workload). * **SandboxTemplate:** El blueprint de seguridad (piénsalo como la configuración de "no dejes que el agente se escape"). * **SandboxClaim:** Un recurso transaccional para solicitar entornos de ejecución desde frameworks como LangChain o ADK, conceptualmente similar a un `persistentVolumeClaim` Para solucionar el problema del "cold start" que tanto nos pena en las ejecuciones tipo serverless, GKE ahora usa "_warm pools"_ de pods pre-provisionados, bajando la latencia a niveles de sub-segundos. Si estás corriendo sobre los procesadores Axion personalizados de Google, ellos aseguran una ventaja de precio-rendimiento del 30% frente a otros hyperscalers. ## Hypercluster: Un millón de chips, un solo control plane Si el Agent Sandbox se trata de lo "micro", GKE Hypercluster se trata de lo "macro". Actualmente en GA privada, Hypercluster permite que un solo control plane de GKE gestione hasta **un millón de chips aceleradores** a través de 256.000 nodos. Aunque la escala es _brígida (intimidante)_ , la preocupación por el _"blast radius"_ (radio de explosión) es real. Gestionar un millón de chips desde un solo punto de falla es una movida arriesgada, lo que probablemente explica por qué Google lo mantiene en GA privada por ahora. Para asegurar estas cargas de trabajo masivas, Google se apoya en el Titanium Intelligence Enclave. Esta arquitectura basada en hardware y "sin acceso de administrador" garantiza que ni siquiera los administradores de la plataforma —la gente a la que le pagan para que mantenga la cuestión andando— puedan ver los _weights_ de los modelos propietarios o los prompts. Todo se mantiene sellado criptográficamente. ## Solucionando el cuello de botella de la inferencia Escalar no sirve de nada si la latencia de inferencia hace que los usuarios sientan que volvieron al internet de los 90. Google introdujo dos funciones clave para que los tokens sigan fluyendo: ### 1. Predictive Latency Boost Basado en el proyecto llm-d (que ahora es un proyecto Sandbox de la CNCF), esta función usa ruteo basado en ML. En vez de depender de un round-robin "fome" o de un agendamiento heurístico, el GKE Inference Gateway predice qué nodo tendrá el menor time-to-first-token (TTFT) y rutea el tráfico según eso. Google dice que esto reduce la latencia hasta en un 70%. ### 2. Automatic KV Cache Tiering Las ventanas de contexto (context window) son devoradoras de memoria. GKE ahora soporta almacenamiento por niveles (tiering) automático de KV Cache entre RAM, SSD local y Google Cloud Storage (GCS). * **Offloading a RAM:** 50% de ganancia en throughput para 10K prompts. * **Offloading a SSD:** Casi un 70% de mejora en throughput para 50K prompts. ## Reinforcement Learning (RL) y autoscaling basado en _intención_ En cuanto a **Reinforcement Learning (RL)** , Google anunció **RL Scheduler** y **RL Sandbox**. Estas herramientas optimizan las cargas de trabajo de _evaluación de recompensas_ manteniendo el mismo aislamiento a nivel de kernel de Agent Sandbox. Finalmente, el **Horizontal Pod Autoscaler (HPA)** por fin va a andar más rápido. El **Intent-based autoscaling** reduce los tiempos de reacción de 25 segundos a apenas 5 segundos. Lo logra sacando las métricas directamente de los pods en vez de esperar a que el stack de monitoreo externo se dé cuenta de que tu cluster se está incendiando. La gran unificación de google cloud: opentelemetry se vuelve obligatorio (y ya era hora)Si pensabas que podrías seguir ignorando el avance de OpenTelemetry (OTel) mientras te escondías en tus scripts legacy, Google Cloud acaba de enviarte un recordatorio amistoso —o una amenaza elegante, según cómo lo mires—. La plataforma ha lanzado una nueva API de ingestión que soporta de forma nativa los protocolosSREDevOps.orgNicolás Georger ## Resumen: El diferenciador open-source Quizás lo más interesante de todo es el compromiso de Google con el camino del código abierto. Al convertir el Agent Sandbox en un proyecto de Kubernetes SIG, están apostando a que el mismo Kubernetes debería ser el runtime de los agentes. A diferencia de las soluciones propietarias, cualquier cluster de Kubernetes que cumpla con los estándares podría, en teoría, correr estas primitivas de agentes. Ya sea que necesites gestionar un millón de H100s o solo quieras asegurarte de que tu agente de IA no tire un `rm -rf /` en producción, las actualizaciones del Next '26 de GKE sugieren que el futuro de la IA es, inevitablemente, un archivo YAML. ### Referencias y lecturas adicionales * Official Google Cloud Blog: What’s new in GKE at Next '26 * gVisor Documentation * CNCF: Kubernetes as foundational infrastructure for AI * llm-d: Predicted latency-based scheduling * Original Article Source: InfoQ

sredevops.org

copy fail in kubernetes: when your pod escapes to the host with four bytes if you thought containers were a security boundary, cve-2026-31431 ("copy fail") has some unfortunate news for you. discovered by xint, this linux kernel vulnerability lets an unprivileged local user overwrite four […]

How the Linux kernel copyfail vulnerability impacts kubernetes: What you need to know and what you can do

## copy fail in kubernetes: when your pod escapes to the host with four bytes if you thought containers were a security boundary, cve-2026-31431 ("copy fail") has some unfortunate news for you. discovered by xint, this linux kernel vulnerability lets an unprivileged local user overwrite four controlled bytes in the page cache of _any readable file_ —and yes, that includes binaries inside your containers. worse: because the page cache is a host-wide resource, corruption in one container can silently propagate to another. the result? a fully unprivileged pod can achieve node-level code execution. this isn't a theoretical "what if." a public 732-byte python proof-of-concept demonstrates container escape on every major kubernetes distribution by exploiting shared image layers between an attacker-controlled pod and a privileged daemonset like `kube-proxy`. if your cluster runs linux kernels built between 2017 and april 2026, you should probably stop reading and start patching. ## the container escape primitive: shared page cache, shared fate the core vulnerability lives in the kernel's `algif_aead` subsystem, where improper handling of scatter-gather lists during in-place aead decryption allows a controlled 4-byte write into the page cache. the exploit chain is elegantly brutal: # simplified exploit flow (full PoC: https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC) import os, socket # 1. open AF_ALG socket to vulnerable crypto template s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET) s.bind(("aead", "authencesn(hmac(sha256),cbc(aes))")) # ... set key, accept request socket ... # 2. splice target file (e.g., /usr/sbin/ipset) into crypto operation os.splice(target_fd, pipe_wr, offset=chosen_offset) os.splice(pipe_rd, alg_fd, length=auth_tag_size) # 3. trigger decrypt → kernel writes 4 controlled bytes into page cache req_socket.recv(1) # hmac fails, but corruption persists the magic—and the danger—lies in how linux manages file i/o. when a container reads a file from a shared image layer, the kernel serves it from the _same physical page cache pages_ across all containers on that node. this is a performance optimization, not a bug. but when combined with copy fail, it becomes an escape hatch. ### why overlay filesystems make this worse container runtimes like `containerd` and `cri-o` use overlayfs to implement copy-on-write semantics. when multiple pods reference the same image layer: host page cache ├── lowerdir: /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/<layer>/usr/sbin/ipset ├── upperdir: (container-specific, empty for read-only files) └── merged view: served from shared page cache pages if an unprivileged pod corrupts `/usr/sbin/ipset` in the page cache, _every_ pod on that node that reads the same file from the same layer sees the corrupted in-memory version—without any cross-container communication, without touching disk, and without triggering traditional file integrity monitors. ## the kube-proxy attack vector: a privileged daemonset waiting to happen the public kubernetes poc targets `/usr/sbin/ipset`, a binary used by `kube-proxy` to manage iptables/ipset rules. here's why this is a perfect storm: characteristic | why it matters ---|--- `kube-proxy` runs as a privileged daemonset | executes with `hostnetwork: true`, full capabilities, and root uid `ipset` is invoked periodically | corrupted binary gets executed automatically, no user interaction needed image layer is shared across nodes | same base image (`registry.k8s.io/kube-proxy:v1.35.2`) means same page cache mapping binary is readable by unprivileged users | satisfies the "any readable file" prerequisite for copy fail the attack sequence: 1. attacker deploys an unprivileged pod with the poc script (no special capabilities required) 2. poc corrupts the page cache for `/usr/sbin/ipset` in the shared image layer 3. `kube-proxy` on the same node executes the corrupted binary during its next reconciliation loop 4. attacker-controlled shellcode runs with kube-proxy's privileges: root on the node, access to host namespaces, and full cluster control via the node's service account this isn't a "maybe." the poc has been tested and confirmed working on ubuntu, amazon linux, rhel, and suse kernels spanning versions 6.12 through 6.18. GitHub - Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoCContribute to Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC development by creating an account on GitHub.GitHubPercivalll ## kubernetes-specific mitigations: patch first, architect second ### immediate actions (today) **disable the vulnerable kernel module** (temporary) # node-level mitigation via DaemonSet apiVersion: apps/v1 kind: DaemonSet metadata: { name: disable-algif-aead } spec: template: spec: hostPID: true containers: - name: mitigator image: alpine:latest command: ["/bin/sh", "-c"] args: - | echo "install algif_aead /bin/false" > /host/etc/modprobe.d/disable-algif.conf chroot /host rmmod algif_aead 2>/dev/null || true volumeMounts: - name: host-root mountPath: /host volumes: - name: host-root hostPath: { path: /, type: Directory } **block`af_alg` at the runtime level** use seccomp profiles to prevent `af_alg` socket creation in untrusted pods: # pod securityContext with seccomp securityContext: seccompProfile: type: Localhost localhostProfile: profiles/block-af-alg.json // profiles/block-af-alg.json { "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [{ "names": ["socket"], "action": "SCMP_ACT_ERRNO", "args": [{"index": 0, "value": 38, "op": "SCMP_CMP_EQ"}] // AF_ALG = 38 }] } **patch your nodes** apply a kernel containing the upstream fix (commit a664bf3d603d). for managed kubernetes services: # EKS: trigger node group update aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name my-ng \ --launch-template version=$NEW_VERSION # GKE: enable auto-upgrade or manually upgrade nodes gcloud container clusters upgrade my-cluster --node-pool default-pool \ --cluster-version=1.35.2-gke.100 ### architectural hardening (this quarter) * **isolate image layers for privileged workloads** use distinct base images for daemonsets like `kube-proxy` that aren't shared with user workloads. this breaks the page-cache propagation path. * **adopt pod security admission (psa) or gatekeeper policies** enforce that pods cannot request `hostpath` volumes, `privileged` mode, or `af_alg`-capable seccomp exemptions. **restrict pod placement with node affinity** prevent untrusted workloads from scheduling on nodes running privileged daemonsets with shared base images: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/control-plane operator: DoesNotExist - key: workload-trust-level operator: In values: ["untrusted"] **enforce read-only root filesystems** while copy fail bypasses on-disk checks, a read-only rootfs limits post-exploitation persistence options: securityContext: readOnlyRootFilesystem: true allowPrivilegeEscalation: false ## detection strategies for kubernetes environments copy fail is stealthy by design: the corrupted page is never marked dirty, so on-disk checksums remain valid. detection requires behavioral signals: 1. **monitor for anomalous`kube-proxy` behavior** corrupted `ipset` execution may cause: * unexpected iptables rule modifications * `kube-proxy` crash loops with unusual stack traces * auth.log entries with missing invoking usernames (see original advisory) 2. **watch for poc network artifacts** non-stealthy attackers may fetch exploit code from `https://copy.fail/exp`. alert on egress to this domain from cluster pods. **correlate pod scheduling with kernel version** flag any unprivileged pod scheduled on a node running an unpatched kernel: # quick cluster audit kubectl get nodes -o json | jq -r '.items[] | select(.status.nodeInfo.kernelVersion | test("6\\.(1[0-7]|[0-9])")) | .metadata.name' **audit`af_alg` socket creation** use auditd or ebpf-based tracing to alert on unexpected `socket(AF_ALG, ...)` calls from containerized processes: # ebpf trace example (bpftrace) tracepoint:syscalls:sys_enter_socket /args->family == 38/ { printf("AF_ALG socket from pid %d (%s)\n", pid, comm); } ## the uncomfortable truth about container "isolation" copy fail exposes a fundamental tension in container security: performance optimizations (shared page cache, overlayfs) directly conflict with isolation guarantees. the linux kernel was never designed with multi-tenant container workloads as a primary threat model—and it shows. this isn't a call to abandon containers. it's a reminder that "isolation" is a spectrum, not a binary. defense-in-depth means: * assuming local privesc vulnerabilities will exist * minimizing the blast radius when they do * treating kernel patch latency as a first-order risk metric because when four bytes can buy you the entire node, your pod security policy just became a suggestion. * * * ## references * wiz.io: copy fail vulnerability advisory * xint technical writeup: copy fail * kubernetes poc: cve-2026-31431 container escape * upstream kernel fix: commit a664bf3d603d * kubernetes pod security admission docs * seccomp profiles for kubernetes _source: adapted from wiz.io blog post by amitai cohen, merav bar, and shahar dorfman (may 1, 2026) and xint code research (april 29, 2026)_

sredevops.org

And you might need to roll your keys, too.

If you are on less than Ghost 6.19.1, it's way past time to upgrade

Hey self-hosting folks, **REMINDER: I don’t work for Ghost. The content below is my own opinion, not that of the Ghost Foundation, blah blah blah. Might be wrong, and possibly worth only what you paid for it (nothing).** In case you’ve missed it, Ghost had a baaad security vulnerability back in February, disclosed here: SQL injection in Content API### Impact A SQL injection vulnerability existed in Ghost’s Content API that allowed unauthenticated attackers to read arbitrary data from the database. ### Vulnerable Versions This vulne…GitHubTryGhost That’s a bad one. Specifically, it allows an attacker to read your whole site, include admin api keys, and once they’ve got the admin api key, there’s a lot that can go wrong. 💡 If you are in managed hosting (at least Ghost Pro, Synaps, Magic Pages), you got patched as soon as 6.19.1 was released. You can probably give a sigh of relief and stop reading. This post is mostly for self-hosters who haven't upgraded, or who wanted a while before upgrading. So, if you’re self hosting, you should IMMEDIATELY upgrade. Do not pass go, do not collect $200, just upgrade. (The vulnerability is there all the way back to 3.x, so older sites are not safe.) If you updated right when 6.19.1 was released, it might be ok to assume that your site wasn’t compromised before you updated, since the vulnerability probably wasn’t widely known… maybe. If you’re still at < 6.19.1 NOW, you need to seriously consider the possibility that attackers might already have your admin api key, and that upgrading will remove the ability to get a key, but not fix any existing key leakage. My possibly over-cautious thought is that y _ou should probably roll all your keys, including staff tokens_. I’m not sure if this is overly alarmist, but better safe than sorry? My thinking here is that **NOTE: If you have services connected through these keys, you WILL break them by doing this. You’ll need to revisit each service and provide the newly regenerated key/token. Yes, that sounds like a pain.** Staff tokens can be regenerated from the individual staff profile (only for the logged in user). Scroll down and click ‘regenerate’. Suspend any admin or enhanced editor users you can’t get to regenerate their own tokens. (Editors with the enhanced editor role can read the members list.) Your Admin API keys in custom integrations can be regenerated from /ghost > settings > custom - click into each integration and regenerate. You also need to regenerate your Zapier token - in /ghost > settings > integrations, click ‘configure’ next to zapier and regenerate the token. I’ve seen two reports of sites being compromised via Zapier token, specifically. I’m not _sure_ it’s from this vulnerability instead of a Zapier vulnerability/leak, but I’m suspicious. * * * That’s all I know. Wanted to get it out there in case it helps someone. Even if key rolling sounds like too much to do today, please please please do yourself a favor and update to >= 6.19.1. (This is a crosspost with the Ghost forum: https://forum.ghost.org/t/if-you-are-on-ghost-6-19-1-you-really-need-to-update/62706 ) * * * Hey, before you go... If your finances allow you to keep this tea-drinking ghost and the freelancer behind her supplied with our hot beverage of choice, we'd both appreciate it! Buy me a tea ☕️

spectralwebservices.com

Kubernetes es un orquestador increíble, pero es fundamentalmente ciego al caos semántico de la IA. Por eso, confiar únicamente en K8s para la seguridad de un LLM es el equivalente digital a instalar una cerradura biométrica de alta tecnología en una puerta de cartón.

¿Kubernetes es seguro para inteligencia artificial? Si, pero debes saber estos detalles

Si has pasado tiempo en el ecosistema _cloud-native_ , conoces esa sensación: has configurado meticulosamente tus `NetworkPolicies`, tu RBAC es lo suficientemente estricto como para hacer llorar de alegría a cualquier auditor de seguridad y todos tus pods están en un hermoso y saludable color verde. Te sientes seguro. Te sientes protegido. Entonces, despliegas un Modelo de Lenguaje Extenso (LLM) y te das cuenta de que, aunque tu infraestructura es una fortaleza, básicamente le has entregado las llaves del reino a un loro parlanchín que puede ser engañado para filtrar las credenciales de tu base de datos simplemente porque alguien le dijo que "ignore todas las instrucciones anteriores". La Cloud Native Computing Foundation (CNCF) lanzó recientemente una verdad lapidaria: Kubernetes es un orquestador increíble, pero es fundamentalmente ciego al caos semántico de la IA. Por eso, confiar únicamente en K8s para la seguridad de un LLM es el equivalente digital a instalar una cerradura biométrica de alta tecnología en una puerta de cartón. ## La ilusión del "pod en verde" Kubernetes es excelente en el "dónde" y el "cómo" del despliegue. Asegura que el pod de tu LLM tenga suficiente memoria de GPU, lo reinicia cuando falla y lo aísla de otras cargas de trabajo. Sin embargo, Kubernetes tiene cero visibilidad sobre el _contenido_ del tráfico que fluye hacia ese pod. Para Kubernetes, un _prompt_ que solicita el resumen de un PDF y un _prompt_ que le ordena al modelo "eliminar todos los buckets de S3 y enviar los logs a una IP aleatoria en Europa del Este" se ven exactamente igual: ambos son simplemente solicitudes HTTP. Esto crea una brecha peligrosa: **`salud operacional != seguridad`.** Tu clúster puede estar perfectamente saludable mientras tu IA desmantela activamente la privacidad de los datos de tu empresa desde adentro. ## Manejar el caos dentro del caos: el modelo de amenazas de LLM Las aplicaciones tradicionales son deterministas. Proporcionas la entrada A y el código ejecuta la ruta B. Los LLMs, sin embargo, son entidades de toma de decisiones programables. Cuando le das a un LLM acceso a herramientas internas, APIs o logs, no estás desplegando solo un servicio; estás desplegando un agente. Esto introduce riesgos que `kube-proxy` no puede resolver: * **Prompt Injection:** El arte de engañar a un LLM para que ignore sus _system prompts_ y realice acciones no autorizadas. * **Exposición no intencionada de datos:** El modelo "alucina" o filtra accidentalmente datos de entrenamiento sensibles o secretos del sistema en una respuesta. * **Uso indebido de herramientas:** Si tu LLM tiene un "plugin" para consultar tu base de datos, un usuario astuto podría engañarlo para que ejecute un comando `DROP TABLE` a través de un _prompt_ en lenguaje natural. ## Donde la seguridad tradicional se queda corta Seamos claros: sigues necesitando tu seguridad estándar de K8s. Si no estás usando Pod Security Admissions o Network Policies, tienes problemas más graves. Pero estas herramientas operan en las capas de red y de sistema operativo, mientras que las amenazas de los LLM operan en la **capa semántica**. Capa de Seguridad | Herramienta de Kubernetes | Vulnerabilidad de LLM | ¿Puede K8s detenerlo? ---|---|---|--- **Red** | NetworkPolicy | Prompt Injection | No **Identidad** | RBAC | Filtración de datos vía Chat | No **Cómputo** | Resource Quotas | Alucinaciones del modelo | No **Runtime** | Seccomp/AppArmor | Ejecución de herramientas maliciosas | Parcialmente Por ejemplo, una `NetworkPolicy` puede evitar que un pod se comunique con una IP externa, pero no puede evitar que un LLM le diga a un usuario: "Claro, aquí tienes la contraseña de administrador que encontré en las variables de entorno". ## Construyendo guardrails reales Para asegurar tus workloads LLM, debemos movernos hacia una **ingeniería de plataformas consciente de la IA (AI-aware platform engineering)**. Esto significa tratar al modelo como un usuario no confiable y envolverlo en una capa de gobernanza semántica. ### 1. Adopta OWASP Top 10 para LLMs OWASP Top 10 for LLM Applications es el estándar de oro para comprender estos riesgos. Cubre desde la Inyección de Prompts (LLM01) hasta la Divulgación de Información Sensible (LLM06). ### 2. Implementa guardrails semánticos En lugar de confiar en la infraestructura para bloquear el tráfico, implementa una capa intermedia (un "_guardrail_ ") que inspeccione tanto el _prompt_ de entrada como la respuesta de salida. ## Ejemplo conceptual de una Política de Guardrail ## (No es un CRD real de K8s, sino un flujo lógico) apiVersion: ai.security.io/v1 kind: LLMGuardrail metadata: name: pii-filter spec: inputValidation: - blockKeywords: ["ignore previous instructions", "system prompt"] - detectInjection: true outputValidation: - maskPII: true # Enmascarar emails, tarjetas de crédito, etc. - toxicityFilter: high ### 3. Usa el principio de menor privilegio Si tu LLM utiliza herramientas (_Function Calling_), no le otorgues privilegios de `cluster-admin` a la cuenta de servicio del LLM. Asígnale una identidad dedicada con los permisos mínimos absolutos requeridos para realizar su tarea específica. ## Reflexiones finales: confía, pero verifica (y luego verifica de nuevo) La industria está pasando de un modelo de seguridad "basado en el perímetro" a uno "basado en el comportamiento". En el mundo de la IA Generativa, el _prompt_ es el nuevo vector de ataque. Kubernetes sigue siendo la capa fundacional; es el terreno sobre el cual construimos. Pero si crees que un archivo `yaml` es suficiente para detener un ataque sofisticado de _prompt injection_ , no estás practicando la seguridad; estás practicando la esperanza. Y como cualquier SRE te dirá, la esperanza no es una estrategia de recuperación confiable. **Fuente:** Basado en análisis de la Cloud Native Computing Foundation (CNCF).

sredevops.org

Kubernetes es un orquestador increíble, pero es fundamentalmente ciego al caos semántico de la IA. Por eso, confiar únicamente en K8s para la seguridad de un LLM es el equivalente digital a instalar una cerradura biométrica de alta tecnología en una puerta de cartón.

¿Kubernetes es seguro para inteligencia artificial? Si, pero debes saber estos detalles

Si has pasado tiempo en el ecosistema _cloud-native_ , conoces esa sensación: has configurado meticulosamente tus `NetworkPolicies`, tu RBAC es lo suficientemente estricto como para hacer llorar de alegría a cualquier auditor de seguridad y todos tus pods están en un hermoso y saludable color verde. Te sientes seguro. Te sientes protegido. Entonces, despliegas un Modelo de Lenguaje Extenso (LLM) y te das cuenta de que, aunque tu infraestructura es una fortaleza, básicamente le has entregado las llaves del reino a un loro parlanchín que puede ser engañado para filtrar las credenciales de tu base de datos simplemente porque alguien le dijo que "ignore todas las instrucciones anteriores". La Cloud Native Computing Foundation (CNCF) lanzó recientemente una verdad lapidaria: Kubernetes es un orquestador increíble, pero es fundamentalmente ciego al caos semántico de la IA. Por eso, confiar únicamente en K8s para la seguridad de un LLM es el equivalente digital a instalar una cerradura biométrica de alta tecnología en una puerta de cartón. ## La ilusión del "pod en verde" Kubernetes es excelente en el "dónde" y el "cómo" del despliegue. Asegura que el pod de tu LLM tenga suficiente memoria de GPU, lo reinicia cuando falla y lo aísla de otras cargas de trabajo. Sin embargo, Kubernetes tiene cero visibilidad sobre el _contenido_ del tráfico que fluye hacia ese pod. Para Kubernetes, un _prompt_ que solicita el resumen de un PDF y un _prompt_ que le ordena al modelo "eliminar todos los buckets de S3 y enviar los logs a una IP aleatoria en Europa del Este" se ven exactamente igual: ambos son simplemente solicitudes HTTP. Esto crea una brecha peligrosa: **`salud operacional != seguridad`.** Tu clúster puede estar perfectamente saludable mientras tu IA desmantela activamente la privacidad de los datos de tu empresa desde adentro. ## Manejar el caos dentro del caos: el modelo de amenazas de LLM Las aplicaciones tradicionales son deterministas. Proporcionas la entrada A y el código ejecuta la ruta B. Los LLMs, sin embargo, son entidades de toma de decisiones programables. Cuando le das a un LLM acceso a herramientas internas, APIs o logs, no estás desplegando solo un servicio; estás desplegando un agente. Esto introduce riesgos que `kube-proxy` no puede resolver: * **Prompt Injection:** El arte de engañar a un LLM para que ignore sus _system prompts_ y realice acciones no autorizadas. * **Exposición no intencionada de datos:** El modelo "alucina" o filtra accidentalmente datos de entrenamiento sensibles o secretos del sistema en una respuesta. * **Uso indebido de herramientas:** Si tu LLM tiene un "plugin" para consultar tu base de datos, un usuario astuto podría engañarlo para que ejecute un comando `DROP TABLE` a través de un _prompt_ en lenguaje natural. ## Donde la seguridad tradicional se queda corta Seamos claros: sigues necesitando tu seguridad estándar de K8s. Si no estás usando Pod Security Admissions o Network Policies, tienes problemas más graves. Pero estas herramientas operan en las capas de red y de sistema operativo, mientras que las amenazas de los LLM operan en la **capa semántica**. Capa de Seguridad | Herramienta de Kubernetes | Vulnerabilidad de LLM | ¿Puede K8s detenerlo? ---|---|---|--- **Red** | NetworkPolicy | Prompt Injection | No **Identidad** | RBAC | Filtración de datos vía Chat | No **Cómputo** | Resource Quotas | Alucinaciones del modelo | No **Runtime** | Seccomp/AppArmor | Ejecución de herramientas maliciosas | Parcialmente Por ejemplo, una `NetworkPolicy` puede evitar que un pod se comunique con una IP externa, pero no puede evitar que un LLM le diga a un usuario: "Claro, aquí tienes la contraseña de administrador que encontré en las variables de entorno". ## Construyendo guardrails reales Para asegurar tus workloads LLM, debemos movernos hacia una **ingeniería de plataformas consciente de la IA (AI-aware platform engineering)**. Esto significa tratar al modelo como un usuario no confiable y envolverlo en una capa de gobernanza semántica. ### 1. Adopta OWASP Top 10 para LLMs OWASP Top 10 for LLM Applications es el estándar de oro para comprender estos riesgos. Cubre desde la Inyección de Prompts (LLM01) hasta la Divulgación de Información Sensible (LLM06). ### 2. Implementa guardrails semánticos En lugar de confiar en la infraestructura para bloquear el tráfico, implementa una capa intermedia (un "_guardrail_ ") que inspeccione tanto el _prompt_ de entrada como la respuesta de salida. ## Ejemplo conceptual de una Política de Guardrail ## (No es un CRD real de K8s, sino un flujo lógico) apiVersion: ai.security.io/v1 kind: LLMGuardrail metadata: name: pii-filter spec: inputValidation: - blockKeywords: ["ignore previous instructions", "system prompt"] - detectInjection: true outputValidation: - maskPII: true # Enmascarar emails, tarjetas de crédito, etc. - toxicityFilter: high ### 3. Usa el principio de menor privilegio Si tu LLM utiliza herramientas (_Function Calling_), no le otorgues privilegios de `cluster-admin` a la cuenta de servicio del LLM. Asígnale una identidad dedicada con los permisos mínimos absolutos requeridos para realizar su tarea específica. ## Reflexiones finales: confía, pero verifica (y luego verifica de nuevo) La industria está pasando de un modelo de seguridad "basado en el perímetro" a uno "basado en el comportamiento". En el mundo de la IA Generativa, el _prompt_ es el nuevo vector de ataque. Kubernetes sigue siendo la capa fundacional; es el terreno sobre el cual construimos. Pero si crees que un archivo `yaml` es suficiente para detener un ataque sofisticado de _prompt injection_ , no estás practicando la seguridad; estás practicando la esperanza. Y como cualquier SRE te dirá, la esperanza no es una estrategia de recuperación confiable. **Fuente:** Basado en análisis de la Cloud Native Computing Foundation (CNCF).

sredevops.org

la ironía de la seguridad: las github actions de trivy secuestradas (otra vez) En un giro del destino que haría que cualquier SRE se sirviera un trago fuerte, Trivy —el escáner de vulnerabilidades estándar de la industria mantenido por Aqua Security— ha sido comprometido por segunda vez en un […]

Grave brecha de Trivy en Github Actions amenaza tus secretos, tokens, credenciales e incluso tus artefactos, qué debes hacer y saber

## la ironía de la seguridad: las github actions de trivy secuestradas (otra vez) En un giro del destino que haría que cualquier SRE se sirviera un trago fuerte, Trivy —el escáner de vulnerabilidades estándar de la industria mantenido por Aqua Security— ha sido comprometido por segunda vez en un mes. Parece que la herramienta diseñada para encontrar brechas en tu infraestructura era, en sí misma, una brecha bastante grande. Esto no es solo un pequeño error en un archivo README. Estamos hablando de un ataque a la cadena de suministro (_supply chain attack_) a gran escala, donde se secuestraron 75 etiquetas de versión (_tags_) para distribuir un _infostealer_ diseñado para succionar cada secreto en tu pipeline de CI/CD. ## el segundo acto de una tragedia en la cadena de suministro El la brecha afectó a dos GitHub Actions principales: `aquasecurity/trivy-action` y `aquasecurity/setup-trivy`. Estas son el pan de cada día en los pipelines de DevOps modernos, utilizadas para escanear imágenes de contenedores y configurar el entorno de Trivy. Según investigadores de Socket, un atacante logró realizar un _force-push_ en 75 de las 76 etiquetas de versión en el repositorio `trivy-action`. Al sobrescribir las etiquetas existentes (como `v0.1.0`, `v0.2.0`, etc.), el atacante se aseguró de que cualquiera que apuntara a estas versiones "estables" descargara automáticamente un _payload_ malicioso. Es un ataque clásico de "Tag Poisoning" (envenenamiento de etiquetas), demostrando una vez más que, en el mundo de Git, un _tag_ es tan permanente como una promesa de año nuevo. ## cómo ocurrió el atraco: tag poisoning 101 El atacante no necesitó explotar un _zero-day_ en Git. Simplemente utilizó credenciales válidas —probablemente un Personal Access Token (PAT) o un token de automatización— obtenidas de una brecha anterior. ### la mecánica del ataque 1. **Reutilización de credenciales:** Los atacantes aprovecharon secretos robados durante el incidente "hackerbot-claw" a finales de febrero de 2026. 2. **Force-Push de etiquetas:** En lugar de crear un nuevo _release_ sospechoso, el atacante reescribió la historia. Actualizaron las etiquetas existentes para que apuntaran a _commits_ maliciosos. 3. **Ejecución:** Cuando se ejecutaba un flujo de trabajo de GitHub Actions, este obtenía la etiqueta "envenenada", ejecutando un _infostealer_ basado en Python en el _runner_. # Lo que pensabas que estabas ejecutando: - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@v0.28.0 # Esta etiqueta fue secuestrada # Lo que realmente estaba pasando: # El runner descarga el commit malicioso asociado con v0.28.0 # y ejecuta el infostealer de Python embebido. ## el payload: una aspiradora digital de secretos El código malicioso no fue sutil. Una vez activo en un _runner_ de GitHub, realizaba un barrido sistemático del entorno para robar: * **Credenciales de nube:** Claves de AWS, Azure y GCP. * **Tokens de Kubernetes:** Porque, ¿por qué no apoderarse de todo el clúster? * **Claves SSH y configuraciones de Git:** Para movimiento lateral. * **Billeteras de criptomonedas:** Específicamente apuntando a pares de claves de validadores de Solana (un pequeño bono para los hackers). Si la exfiltración principal a `scan.aquasecurtiy[.]org` (noten la sutil falta de ortografía) fallaba, el script tenía un plan de respaldo: creaba un repositorio público llamado `tpcp-docs` bajo la propia cuenta de GitHub de la víctima y volcaba allí los datos robados. Eso es añadir sal a la herida. ## la causa raíz: una lección sobre "contención incompleta" Aqua Security admitió que esta segunda ola fue el resultado directo de una "contención incompleta" del primer incidente. Aunque rotaron los secretos, el proceso no fue "atómico". En el lapso entre la revocación y la rotación, los atacantes capturaron los nuevos tokens. Es un recordatorio aleccionador para los SRE: si no quemas la casa completa después de una brecha, las termitas simplemente se mudarán a la siguiente viga. ## atribución: conozcan a teampcp El _payload_ se autoidentificó como el "TeamPCP Cloud stealer". TeamPCP (también conocido como DeadCatx3 o ShellForce) es un grupo ya conocido en círculos de seguridad. Se especializan en vulnerar infraestructura para el robo de datos y extorsión. Aunque las "falsas banderas" siempre son una posibilidad en la atribución, las TTP (Tácticas, Técnicas y Procedimientos) coinciden estrechamente con el trabajo conocido del grupo. ## cómo detener la hemorragia Si estás usando Trivy en tus pipelines, detén lo que estés haciendo y verifica tus versiones. ### 1. Usa versiones seguras Asegúrate de estar utilizando los siguientes lanzamientos (o posteriores): * trivy 0.69.3 * trivy-action 0.35.0 * setup-trivy 0.2.6 ### 2. Fija por SHA, no por etiqueta Esta es la lección más importante. Las etiquetas son mutables; los hashes SHA-256 no lo son. Al fijar tus GitHub Actions a un hash de _commit_ específico, eliminas el riesgo de secuestro de etiquetas. # NO hagas esto: uses: aquasecurity/trivy-action@v0.28.0 # HAZ esto (hash de ejemplo): uses: aquasecurity/trivy-action@1234567890abcdef1234567890abcdef12345678 ### 3. Rótalo todo Si ejecutaste una versión comprometida (específicamente la `v0.69.4` del binario o las etiquetas de la _action_ secuestradas), asume que **todos** tus secretos están comprometidos. Rota tus claves de AWS, PATs de GitHub y tokens de Kubernetes de inmediato. ### 4. Filtrado de red Bloquea los siguientes indicadores de compromiso (IoCs) a nivel de firewall o proxy: * **Dominio:** `scan.aquasecurtiy[.]org` * **IP:** `45.148.10[.]212` Para más detalles técnicos, puedes seguir la discusión en curso en el GitHub oficial de Aqua Security. **Fuente:** The Hacker News **Referencia del autor:** Basado en reportes de The Hacker News e investigaciones de Socket, Wiz y StepSecurity.

sredevops.org

Llevo más de una década haciendo turnos de guardia. Cuando los computadores que administro tienen un problema, le avisan a mi equipo 24/7 para que los ayude. Uso estos credos para que estar de turno sea lo más tranquilo posible. Descúbrelo antes que el cliente Ya sea que el cliente sea […]

Los mitos y credos respecto a turnos (o "estar de guardia")

Llevo más de una década haciendo turnos de guardia. Cuando los computadores que administro tienen un problema, le avisan a mi equipo 24/7 para que los ayude. Uso estos credos para que estar de turno sea lo más tranquilo posible. ### Descúbrelo antes que el cliente Ya sea que el cliente sea interno o externo, los monitores deben ajustarse para que el equipo de guardia pueda responder y reparar antes de que quienes dependen del servicio se den cuenta de que hay un problema. ### Cada alerta de alta prioridad debería ser accionable La fatiga de alertas es real. Claro, envía algunas alertas informativas pero no accionables a un canal de chat. Pero si el equipo de guardia se despierta e interrumpe cuando no hay trabajo real que hacer, eso es un problema. Reevalúa: * ¿Se puede ajustar el sistema o la alerta para que las alertas sean accionables? * ¿Necesitamos esta alarma en absoluto? * ¿Debería aumentarse temporalmente el umbral de la alerta? * ¿Podría deshabilitarse temporalmente la alerta, con un recordatorio establecido con una alerta configurada para cuando se espere que el problema esté completamente resuelto? ### Los sistemas críticos deberían ser redundantes Muchas emergencias de alta prioridad se pueden convertir en situaciones de baja prioridad si existe una política y práctica que establezca que todos los sistemas críticos son redundantes. Para servidores no críticos, usa una función como la que ofrece Amazon Web Services para detectar cuando el hardware subyacente falla. Luego, puede reaprovisionar automáticamente nuevo hardware y reiniciar el servidor. Eso es exactamente lo que haría un humano de guardia en esas situaciones, así que automatiza la solución. ### El primer responsable debería poder resolver la mayoría de los problemas. Para las alertas de una aplicación en particular, alguien familiarizado con la aplicación debería estar de turno para darle soporte. Los miembros nuevos del equipo de turno pueden acompañar a los miembros con más experiencia para adquirir conocimientos antes de tomar turnos solos. ### Debería haber un segundo de turno Si el principal no responde a tiempo, las alertas deberían pasar a otra persona. Hay que dejar bien clara la responsabilidad de cada rol. Se espera que el principal se encargue de las páginas o que haga arreglos con anticipación si hay un período en el que no pueda cubrir. Que dos personas estén de turno esperando que la otra tome una página no es una estrategia. ### Tener un runbook que documente las posibles alertas y las respuestas comunes a ellas Idealmente, para cada problema debería haber alguna forma de evitar que ocurra o automatizar una solución para los incidentes. Para el resto, algunos documentos y una lista de verificación son lo mejor. He usado un Google Doc organizado por servidor o servicio. Para cada uno, hay una breve sección de Contexto para recordar qué hace la cosa, una sección de Contacto para los expertos del servicio a quienes escalar. En algunos casos, las escaladas a estas personas se pueden automatizar con el servicio de paginación. Finalmente, si hay alguna nota especial sobre alertas y resoluciones comunes. Por ejemplo: _**Servidor del blog:** El alto uso de CPU en este servidor a menudo indica que WordPress está siendo atacado de nuevo. Considera bloquear las direcciones IP involucradas en el firewall._ Aún mejor: usa las herramientas en servicios como PagerDuty para incluir o enlazar la documentación que necesites para cada alerta directamente en la alerta misma. ## Los incidentes de producción deberían ser analizados Ah, no hay nada como el compañerismo que surge de vivir un "firefight" para volver a poner un servicio en línea juntos. Para minimizar las reuniones de tu brigada de bomberos, aprende de los errores cometidos y toma medidas proactivas para minimizar su recurrencia. Cuando haya una interrupción significativa, programa un informe post-incidente de producción dentro de una o dos semanas después del incidente. El enfoque es prospectivo para mejorar los sistemas. No es una sesión para buscar culpables. Usa una plantilla estándar y limita el tiempo de las reuniones para mantener las cosas en movimiento. Treinta minutos suelen ser suficientes. Aquí hay algunas preguntas que he usado antes en plantillas de informes post-incidente de producción que han resistido la prueba del tiempo: * Resumen y cronología del incidente * Acciones ya tomadas * ¿Qué salió bien? * ¿Cómo podemos prevenir incidentes similares en el futuro? * ¿Cómo podemos responder de manera más eficiente y efectiva? * ¿Qué acciones de seguimiento se deben tomar? Haz que una persona cercana al incidente redacte la cronología y dirija la reunión. Invita a todas las partes interesadas relevantes para el incidente. ## Todo lo demás también importa Detallar todo lo demás que podría mejorar la calidad de vida de los respondedores de guardia sería describir un departamento de TI completo y bien gestionado. Siempre habrá inconvenientes al estar de guardia. Con algunos principios sólidos y un compromiso con la mejora continua, hay esperanza de llegar al punto en que el número de alertas sea mínimo... y accionable.

sredevops.org

Una campaña de ataque autónoma, rastreada como "hackerbot-claw", está acechando actualmente repositorios públicos. ¿Su misión? Encontrar workflows de GitHub Actions inseguros y convertirlos en puertas de enlace para la ejecución de código arbitrario y la exfiltración de credenciales.

Vulnerabilidad alta en GitHub Actions: hackerbot-claw usa tu CI/CD como una plataforma de "pwn-as-a-service"

## Resumen (Overview) Resulta que automatizar tus flujos de trabajo también hace que sea increíblemente fácil para los atacantes automatizar tu perdición. Una campaña de ataque autónoma, rastreada como **"hackerbot-claw"** , está acechando actualmente repositorios públicos. ¿Su misión? Encontrar workflows de GitHub Actions inseguros y convertirlos en puertas de enlace para la ejecución de código arbitrario y la exfiltración de credenciales. Esta campaña no es solo el proyecto de fin de semana de un _script-kiddie_ ; ha logrado comprometer con éxito varios proyectos de código abierto de alto perfil. Al abusar de configuraciones erróneas comunes, el bot efectivamente vuelve tu pipeline de CI/CD en tu contra. Si has estado tratando tus triggers de `pull_request_target` con la imprudencia de un desarrollador en su quinto café del día, es hora de prestar atención. La Linux Foundation y la OpenSSF están "triagiando" (triage) activamente las consecuencias, pero el bot trabaja más rápido que un comité. ## Anatomía del ataque El bot "hackerbot-claw" no está reinventando la rueda; simplemente está usando la rueda para pasarte por encima. Se dirige específicamente a workflows que: * Utilizan triggers privilegiados como `pull_request_target`. * Ejecutan código no confiable de _pull requests_ (PRs) forkeados sin aislamiento. * Incluyen scripts de shell _inline_ que confían ciegamente en inputs controlados por el usuario. * Carecen de cualquier forma de verificación de autorización antes de disparar _runners_ costosos (y peligrosos). ### Patrones de ataque observados 1. **Inyección directa de scripts:** Los atacantes modifican un script dentro de un PR. Si el workflow ejecuta ese script con privilegios del repositorio, el atacante efectivamente se adueña del _runner_. 2. **"Pwn request" (abuso de`pull_request_target`):** Este trigger es el "Modo Dios" de GitHub Actions. Cuando se usa para hacer _checkout_ y ejecutar código desde un _fork_ , otorga a ese código no confiable acceso a secretos y a un `GITHUB_TOKEN` con permisos de escritura. 3. **Inyección de contexto:** Los _payloads_ maliciosos se ocultan en nombres de ramas, títulos de PR o rutas de archivos. Si tu workflow hace algo como `echo "Checking out ${{ github.head_ref }}"`, podrías encontrarte ejecutando `echo "Checking out "; rm -rf / #`. ### Una víctima del mundo real: project-akri/akri En un caso documentado que involucró a `project-akri/akri`, un PR malicioso introdujo un _payload_ de inyección de shell en un script. Debido a que el workflow carecía de salvaguardas, ejecutó obedientemente los comandos del atacante, demostrando una vez más que las computadoras harán exactamente lo que les digas, incluso si es un suicidio profesional. ## Mitigaciones recomendadas Si no quieres que tu repositorio se convierta en un minero de criptomonedas para alguien más o en un punto de pivote para un ataque a la cadena de suministro, implementa estos controles de inmediato. ### 1. Refuerza (harden) tus workflows Deja de usar `pull_request_target` a menos que sea absolutamente necesario. Si debes usarlo, **nunca** hagas _checkout_ del código no confiable desde el _head_ del PR. # MAL: Esto le da al código del fork acceso a tus secretos on: pull_request_target jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} # PELIGRO ### 2. Aplica el principio de menor privilegio Limita los permisos del `GITHUB_TOKEN` en la parte superior de tu archivo de workflow. Si un _job_ solo necesita leer el código, indícalo explícitamente. permissions: contents: read pull-requests: read ### 3. Sanitiza los inputs como si tu vida dependiera de ello Nunca interpoles variables de contexto de GitHub directamente en scripts de shell. Usa variables de entorno en su lugar. # MAL: Vulnerable a inyección run: echo "Procesando rama: ${{ github.head_ref }}" # BIEN: Manejado como datos, no como código run: echo "Procesando rama: $BRANCH_NAME" env: BRANCH_NAME: ${{ github.head_ref }} ### 4. Pinnea tus actions No confíes en etiquetas (tags) como `@v1`. Los tags pueden ser movidos. Usa el SHA completo del commit para asegurar que el código que estás ejecutando es el código que revisaste. - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 ## Alineación con el OpenSSF OSPS Baseline La campaña actual "hackerbot-claw" apunta exactamente a las brechas abordadas por el OpenSSF OSPS (Open Source Project Security) Baseline. Los proyectos que siguen estas pautas son significativamente más difíciles de comprometer. * **Menor Privilegio:** Restringir el `GITHUB_TOKEN` y usar OIDC para credenciales de nube de corta duración. * **CI/CD Protegido:** Requerir la aprobación de un mantenedor para todos los colaboradores primerizos antes de que se ejecuten los workflows. * **Revisión por Pares:** Usar `CODEOWNERS` para exigir que cualquier cambio en `.github/workflows/` sea revisado por un humano consciente de la seguridad, no solo por un mantenedor cansado. ## Lecturas adicionales y recursos * Guía oficial de GitHub sobre inyección de scripts * OpenSSF: Mitigando vectores de ataque en workflows de GitHub * Wiz.io: Guía de seguridad de GitHub Actions * Mejores prácticas de OpenSSF SCM * * * **Fuente:** Christopher "CRob" Robinson, Chief Technology Officer & Chief Security Architect en OpenSSF / The Linux Foundation. GitHub | LinkedIn

sredevops.org

overview It turns out that automating your workflows also makes it incredibly easy for attackers to automate your demise. An autonomous attack campaign, tracked as "hackerbot-claw," is currently prowling public repositories. Its mission? Finding insecure GitHub Actions workflows and turning […]

High severity Github Actions exploit: hackerbot-claw uses your ci/cd as a "pwn-as-a-service" platform

## overview It turns out that automating your workflows also makes it incredibly easy for attackers to automate your demise. An autonomous attack campaign, tracked as **"hackerbot-claw,"** is currently prowling public repositories. Its mission? Finding insecure GitHub Actions workflows and turning them into gateways for arbitrary code execution and credential exfiltration. The campaign isn't just a script-kiddie's weekend project; it has successfully compromised several high-profile open-source projects. By abusing common misconfigurations, the bot effectively turns your CI/CD pipeline against you. If you’ve been treating your `pull_request_target` triggers with the reckless abandon of a developer on their fifth espresso, it’s time to pay attention. The Linux Foundation and the OpenSSF are actively triaging the fallout, but the bot works faster than a committee. ## anatomy of the attack The "hackerbot-claw" bot isn't reinventing the wheel; it’s just using the wheel to run you over. It specifically targets workflows that: * Use privileged triggers like `pull_request_target`. * Execute untrusted code from forked pull requests without isolation. * Include inline shell scripts that blindly trust user-controlled inputs. * Lack any form of authorization check before firing off expensive (and dangerous) runners. ### observed attack patterns 1. **Direct script injection:** Attackers modify a script within a PR. If the workflow executes that script with repository privileges, the attacker effectively owns the runner. 2. **"Pwn request" (pull_request_target abuse):** This trigger is the "God Mode" of GitHub Actions. When used to check out and run code from a fork, it grants that untrusted code access to secrets and a `GITHUB_TOKEN` with write permissions. 3. **Context injection:** Malicious payloads are hidden in branch names, PR titles, or file paths. If your workflow does something like `echo "Checking out ${{ github.head_ref }}"`, you might find yourself executing `echo "Checking out "; rm -rf / #`. ### a real-world casualty: project-akri/akri In a documented case involving `project-akri/akri`, a malicious PR introduced a shell-injection payload into a script. Because the workflow lacked safeguards, it dutifully executed the attacker's commands, proving once again that computers will do exactly what you tell them to do, even if it's professional suicide. ## recommended mitigations If you don't want your repository to become a miner for someone else's cryptocurrency or a pivot point for a supply chain attack, implement these controls immediately. ### 1. harden your workflows Stop using `pull_request_target` unless you absolutely have to. If you must use it, **never** check out the untrusted code from the PR head. # BAD: This gives the fork's code access to your secrets on: pull_request_target jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} # DANGER ### 2. enforce least privilege Limit the `GITHUB_TOKEN` permissions at the top of your workflow file. If a job only needs to read the code, tell it so. permissions: contents: read pull-requests: read ### 3. sanitize inputs like your life depends on it Never interpolate GitHub context variables directly into shell scripts. Use environment variables instead. # BAD: Vulnerable to injection run: echo "Processing branch: ${{ github.head_ref }}" # GOOD: Handled as data, not code run: echo "Processing branch: $BRANCH_NAME" env: BRANCH_NAME: ${{ github.head_ref }} ### 4. pin your actions Don't trust tags like `@v1`. Tags can be moved. Use the full length commit SHA to ensure the code you're running is the code you reviewed. - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 ## alignment with the openssf osps baseline The ongoing "hackerbot-claw" campaign targets the exact gaps addressed by the OpenSSF OSPS (Open Source Project Security) Baseline. Projects that follow these guidelines are significantly harder to compromise. * **Least Privilege:** Restrict `GITHUB_TOKEN` and use OIDC for short-lived cloud credentials. * **Protected CI/CD:** Require maintainer approval for all first-time contributors before workflows run. * **Peer Review:** Use `CODEOWNERS` to mandate that any change to `.github/workflows/` is reviewed by a security-conscious human, not just a tired maintainer. ## further reading & resources * GitHub's official guidance on script injection * OpenSSF: Mitigating attack vectors in GitHub workflows * Wiz.io: GitHub Actions security guide * OpenSSF SCM best practices * * * **Source:** Christopher "CRob" Robinson, Chief Technology Officer & Chief Security Architect at OpenSSF / The Linux Foundation. GitHub | LinkedIn

sredevops.org

Por ejemplo, potencialmente un dron podría "decidir" atacarte ahora mismo, con o sin orden humana. Si, a ti.

Anthropic es "baneada" por el Pentágono en medio de "disputa ética" sobre uso de IA en guerra y vigilancia social

En una medida que evidencia la creciente tendencia autoritaria de gobiernos, la tensión entre la innovación tecnológica y los _"imperativos de seguridad nacional"_ ~~(ok...)~~ , el Departamento de Guerra de EE. UU. (DoW) ha designado oficialmente a Anthropic, empresa ya por todos conocida en inteligencia artificial (IA), como un "_riesgo en la cadena de suministro" (supply chain risk)_. Esta designación, impulsada por el secretario de Defensa de EE. UU., Pete Hegseth, surge tras un estancamiento en las negociaciones sobre el "despliegue ético" de Claude, el modelo de IA insignia de Anthropic, para aplicaciones y usos militares. ## La "postura desafiante" de Anthropic La designación de Anthropic como riesgo en la cadena de suministro se deriva de su negativa a permitir dos usos específicos de su tecnología: la vigilancia masiva doméstica de ciudadanos estadounidenses y el desarrollo de sistemas de armas autónomas. La compañía articuló su postura en un comunicado: _"Ninguna cantidad de intimidación o castigo del Departamento de Guerra cambiará nuestra posición sobre la vigilancia masiva doméstica o las armas totalmente autónomas"_. ## La hipocresía -si, también- de Anthropic Este desacuerdo fundamental sobre los límites éticos de la IA en la "defensa nacional" implica el apoyo de Anthropic al uso de su tecnología en otros países, pero rechaza su aplicación en EEUU por considerarla incompatible con valores democráticos y libertades fundamentales. Las contradicciones y el doble standard se revelan por sí mismos, no? ### No es conspiración ni ficción: documentos oficiales El Departamento de Guerra (antes llamado Departamento de Defensa), insiste en colaborar sólo con empresas que permitan _"cualquier uso lícito"_ de su tecnología, sin _"restricciones ideológicas"_. Un memorándum del Pentágono subraya esta postura: _"La Diversidad, Equidad e Inclusión no tienen cabida en el DoW. No emplearemos modelos de IA con 'ajustes' ideológicos que limiten respuestas objetivamente veraces"_. __Fuente:____https://media.defense.gov/2026/Jan/12/2003855671/-1/-1/0/ARTIFICIAL-INTELLIGENCE-STRATEGY-FOR-THE-DEPARTMENT-OF-WAR.PDF__ ## La rápida (y teatral) represalia del gobierno La designación fue parte de una respuesta coordinada. El presidente ordenó via 1 User Only"Social Network" eliminar gradualmente la tecnología de Anthropic en agencias federales dentro de seis meses. El secretario de guerra lo _retwitteó (?)_ en X, exigiendo a contratistas militares cesar toda relación con la empresa. El funcionario vinculó la medida a la orden presidencial, declarando: _"Designamos a Anthropic como Riesgo en la Cadena de Suministro para la Seguridad Nacional"_. El gobierno actuó con la agilidad de un _zero-day exploit_ , priorizando acción directa sobre formalidades. ### Detalles legales que no entendemos Anthropic calificó la designación de _"jurídicamente infundada"_ , argumentando que "10 USC 3252 solo aplica a contratos del DoW, no a otros clientes" ~~(La verdad es que no tengo idea de legislación en EEUU)~~. Este escenario sienta un precedente peligroso: "desacuerdos éticos" podrían convertirse en "riesgos de seguridad nacional" a gusto del gobierno o magnate de turno, pero sus consecuencias afectando al mundo entero. Por ejemplo, potencialmente un dron podría "decidir" atacarte ahora mismo sin orden humana. Si, a ti. ## 2 CEOs 1 Gov: el camino de OpenAI En contraste, el CEO de OpenAI, Sam Altman, anunció un acuerdo con el Departamento de Defensa para desplegar sus modelos en redes clasificadas. Ya sabemos el resto de la historia. ## Por qué debería importarme? La disputa trasciende países, política, o lo corporativo: define el futuro de la IA en "seguridad" y guerra. Cientos de empleados de Google y OpenAI exigen solidaridad con Anthropic, resaltando preocupaciones sectoriales. La designación envía un mensaje alarmante: la ética puede subordinarse a la "seguridad nacional". ¿Seguirán otras empresas el "ejemplo" de Anthropic o adaptarán sus principios a contratos gubernamentales? La respuesta define si la IA servirá a la humanidad o se convertirán en herramientas de guerra y vigilancia. Fuente: The Hacker News

sredevops.org

¡Nos integramos al Fediverso! (qué es y por qué es importante)

## ¿Qué es el "Fediverso"? ¿Qué es el protocolo ActivityPub? ActivityPub es un protocolo de redes sociales **abierto, descentralizado y federado** que permite la interoperabilidad entre plataformas como **Mastodon** , **Threads** o cualquier otro servicio compatible. Su funcionamiento se asemeja al **correo electrónico** : usuarios de distintas plataformas pueden interactuar entre sí sin depender de un solo proveedor centralizado. Este protocolo facilita que un usuario de **Mastodon** siga a alguien en **Threads** , o que un post de **SREDevOps.org** aparezca en el feed de un seguidor en **Mastodon**. En resumen, **ActivityPub** construye un ecosistema interconectado conocido como el **Fediverso**. 🖇️ ****Buscanos en el Fediverse:****`@index@sredevops.org` > **¿Curioso?** Puedes explorar el código fuente del servidor ActivityPub de Ghost en: > TryGhost/ActivityPub GitHub - TryGhost/ActivityPub: A full-featured ActivityPub server for networked publishing with GhostA full-featured ActivityPub server for networked publishing with Ghost - TryGhost/ActivityPubGitHubTryGhost ## ¿Por qué nos unimos al Fediverso? ### 1. **La descentralización como valor central** El Fediverso representa un retorno al espíritu original de internet: una red **abierta, libre y descentralizada**. En un mundo donde las grandes corporaciones dominan las plataformas digitales, SREDevOps.org elige apoyar modelos donde los usuarios, no las empresas, controlan su contenido y su interacción. > "El Fediverso no es un utopía digital, pero es lo más cercano que tenemos a un 'internet sin publicidad y sin algoritmos manipuladores'." ### 2. **Interoperabilidad y colaboración** Al unirnos al Fediverso, facilitamos que nuestros lectores, colaboradores y seguidores interactúen con nosotros desde **cualquier plataforma compatible** (Mastodon, Threads, etc.). Esto no solo amplía nuestro alcance, sino que también fomenta una **comunidad más inclusiva y colaborativa**. ## Integración con Ghost: cómo lo logramos Gracias a la **nueva versión 6 de Ghost** , ahora podemos utilizar su integración nativa con **ActivityPub**. Esto significa que: * Nuestra presencia en el Fediverso es **totalmente automática**. * Los usuarios pueden seguirnos desde cualquier cliente ActivityPub. * Nuestra dirección en el Fediverso es: **@index@sredevops.org**. Building ActivityPubGhost is federating over ActivityPub to become part of the world’s largest publishing networkBuilding ActivityPub ## ¿Qué sigue? SREDevOps.org no solo se une al Fediverso, sino que **invita a todos a seguirnos**. Puedes encontrar nuestro perfil en: * Mastodon * Otras plataformas compatibles con ActivityPub. > Suscríbete a nuestro feed en el Fediverso para recibir **actualizaciones en tiempo real** sobre SRE, DevOps, Kubernetes y más. ## Referencias * TryGhost/ActivityPub GitHub - TryGhost/ActivityPub: A full-featured ActivityPub server for networked publishing with GhostA full-featured ActivityPub server for networked publishing with Ghost - TryGhost/ActivityPubGitHubTryGhostCómo desplegar Ghost (CMS/Blog) en KubernetesGhost en Kubernetes por SREDevOps.Org Introducción Este repositorio implementa Ghost CMS v5.xx.x desde @TryGhost (upstream) en Kubernetes, con nuestra imagen personalizada, la cual tiene mejoras significativas para ser usada en Kubernetes (Dockerfile). Vea este README completo para más información. Características * Tanto los componentes de Ghost como losSREDevOps.orgNicolás Georger

sredevops.org