Herramientas y scripts de IA
Comprobación de seguridad para Azure Pipelines
Revisa azure-pipelines.yml y sus plantillas en busca de secretos en el YAML, mensajes de commit o nombres de ramas de PR insertados en scripts, curl | bash, imágenes y tareas hospedadas retiradas, persistCredentials y repositorios de plantillas que siguen una rama.
Qué recibes: 1 archivo · 44.25 KB · ZIP
Ver opciones de compraDescripción del producto
Un paso que ejecuta echo "Building $(Build.SourceVersionMessage)" parece inofensivo, pero Azure Pipelines inserta el mensaje del commit en el script antes de que arranque bash, así que un mensaje de commit con una comilla o $( ) se ejecuta como comando en tu agente, junto a tus secretos. Una pipeline que todavía usa vmImage: windows-2019 dejó de funcionar cuando esa imagen se eliminó el 31 de diciembre de 2025, y CmdLine@1, PowerShell@1, Maven@2 y otras 70 versiones de tareas se retiran el 24 de noviembre de 2026 y se eliminan el 15 de marzo de 2027. Esta skill detecta esos problemas y los demás errores de Azure Pipelines que se indican abajo, y te dice cómo corregir cada uno.
Tu agente ejecuta un escáner sobre azure-pipelines.yml, los archivos de .azure-pipelines/ y .azuredevops/, y cada archivo YAML cuyas claves de nivel superior y pasos sean de Azure Pipelines, de modo que también se revisan las plantillas de pasos, jobs, stages, variables y extends, incluidas las guardadas en build/ que incluye una pipeline. Los archivos de GitHub Actions, GitLab CI, Compose y Kubernetes se omiten. Conoce la sintaxis de macros $(var), las expresiones de plantilla ${{ }} y las expresiones de tiempo de ejecución $[ ], considera seguros los valores asignados mediante env: y sigue dentro de un archivo las variables construidas a partir de valores no confiables. Nunca ejecuta la pipeline ni ningún script y nunca usa la red. Devuelve BLOCK, REVIEW o NOT FLAGGED, con el archivo, la línea, el motivo y un enfoque más seguro. Los secretos nunca se muestran.
Qué comprueba
BLOCK (corregir antes de publicar)
- A01: contraseñas, tokens y claves escritos como literales: variables o entradas env con nombres de secretos, entradas de tareas como keystorePass, valores por defecto de parámetros, contraseñas en URL o cadenas de conexión, cabeceras Bearer, flags --token, curl -u user:pass, docker/az login -p, sqlcmd -P, PowerShell $password = '...', -Password y ConvertTo-SecureString -AsPlainText, comandos de registro issecret y formatos de token conocidos (ghp_, npm_, glpat-, xox, ID de claves de acceso de AWS, bloques de claves privadas)
- A02: $(Build.SourceVersionMessage) o $(System.PullRequest.SourceBranch), o una variable construida a partir de ellos, dentro del texto de un script (script, bash, pwsh, powershell, scripts en línea de tareas y argumentos de tareas de shell)
- A03: scripts descargados por HTTP sin cifrar o con la verificación de certificados desactivada (curl -k, wget --no-check-certificate, -SkipCertificateCheck) y canalizados a un shell o a Invoke-Expression
- A04: imágenes y tareas eliminadas: imágenes hospedadas por Microsoft ya retiradas (windows-2019, vs2017-win2016, de ubuntu-16.04 a ubuntu-20.04, de macOS-10.13 a macOS-13, y macOS-14 y ubuntu-22.04 a partir de sus fechas de eliminación), también a través de una variable de matriz o un parámetro que use vmImage, y desde el 15 de marzo de 2027 las versiones de tareas retiradas
REVIEW (revisar antes del lanzamiento)
- A11: checkout con persistCredentials: true
- A12: jobs de contenedor o contenedores de servicio con --privileged, capabilities con muchos privilegios, espacios de nombres del host, seccomp o AppArmor desactivados, un volumen docker.sock o mapDockerSocket: true
- A13: plantillas de un recurso de repositorio de GitHub, Bitbucket u otra organización sin ref o con un ref de rama (una etiqueta o un SHA de commit de 40 caracteres cuenta como fijado)
- A14: $(System.AccessToken) o variables con nombres de secretos insertadas en el texto de un script o en los argumentos de línea de comandos de una tarea en lugar de env:
- A15: scripts descargados por HTTPS y ejecutados directamente (curl | sh, irm | iex, bash <(curl ...), iex "& { $(irm ...) }", [scriptblock]::Create((iwr ...)))
- A16: parámetros de cadena de texto libre en tiempo de ejecución sin lista values, o $(Build.RequestedFor) y los demás nombres del solicitante, dentro del texto de un script
- A17: imágenes hospedadas obsoletas antes de su fecha de eliminación: macOS-14 (23 de noviembre de 2026) y ubuntu-22.04 (17 de abril de 2027)
- A18: las 73 versiones de tareas de la lista de retirada de Microsoft de noviembre de 2026, cada una con su sustituta, hasta su eliminación el 15 de marzo de 2027
- A19: AzureCLI con addSpnToEnvironment: true
- A20: un disparador pr explícito en una pipeline que ejecuta jobs en un pool autohospedado
Qué incluye
- El escáner (Python 3.9+, solo biblioteca estándar)
- Una guía de reglas con el motivo, el enfoque más seguro y la fuente de Microsoft de cada regla
- Un ejemplo arriesgado y uno seguro (una pipeline de compilación y lanzamiento con una plantilla de pasos), y el informe real que genera el escáner sobre el arriesgado
Limitaciones
Lee cada archivo YAML tal como está escrito. Los valores que se pasan entre archivos (parámetros de plantillas, variables de otros archivos, grupos de variables, variables de la interfaz y de tiempo de cola) no se siguen, y los ajustes hechos fuera del YAML no se ven: ajustes de compilación de forks y de secretos para forks, comprobaciones de plantilla obligatorias, límites de variables en tiempo de cola, validación de argumentos de shell, ámbito de autorización de los jobs, directivas de rama y si el repositorio es público. Los nombres de rama como $(Build.SourceBranchName) no se marcan. Al escanear un repositorio completo, en una carpeta build/ solo se buscan archivos con nombre de pipeline y plantillas locales, y se omiten carpetas como dist, vendor y node_modules. Las listas de imágenes y tareas siguen las páginas de Microsoft a fecha del 12 de noviembre de 2026 para Azure DevOps Services. Las pipelines clásicas y de lanzamiento definidas en la interfaz web no se leen. NOT FLAGGED no es una garantía.
Contenido
Un archivo ZIP con 12 archivos: SKILL.md, el escáner en scripts/ (5 archivos de Python), references/rules.md (cada regla con su motivo y un enfoque más seguro) y examples/ (4 archivos de ejemplo más report.md, la salida real del escáner sobre el ejemplo arriesgado).
Cómo usarlo: es una skill para agentes: una carpeta con un archivo SKILL.md y scripts de Python que puede ejecutar un agente de programación con IA como Claude Code, Cursor o Codex CLI. Descomprímela en la carpeta de skills de tu agente (para Claude Code: ~/.claude/skills/) y luego pide a tu agente que revise tu proyecto. Los scripts también funcionan por sí solos con Python 3.9 o posterior, sin instalar nada. Solo leen tus archivos: sin acceso a la red, y no se envía nada a ningún sitio.
Qué recibes
1 archivo · 44.25 KB
- azure-pipelines-safety-check-1.0.0.zipZIP · 44.25 KB
Herramientas y scripts de IA
Comprobación de seguridad para Azure Pipelines
Revisa azure-pipelines.yml y sus plantillas en busca de secretos en el YAML, mensajes de commit o nombres de ramas de PR insertados en scripts, curl | bash, imágenes y tareas hospedadas retiradas, persistCredentials y repositorios de plantillas que siguen una rama.
Getly abrió los archivos subidos y no encontró nada que impida abrirlos. No es un análisis antivirus ni una valoración de calidad.
Etiquetas
Preguntas frecuentes
¿Tengo acceso al instante?
Sí. Es un producto digital: puedes descargarlo justo después del pago, directamente desde tu biblioteca.
¿Puedo usarlo en proyectos comerciales?
Sí. Se permite el uso comercial: úsalo en tu propio negocio y en cosas que vendas. No puedes revender ni redistribuir el archivo en sí.
¿Cuál es vuestra política de reembolso?
Puedes pedir un reembolso dentro de 30 días. Si algo no va bien, solicítalo desde tu pedido y el equipo de Getly lo revisa.
¿Qué formatos y tamaños de archivo recibiré?
Descargarás 1 archivo - ZIP - 44.25 KB en total.
¿Recibo actualizaciones gratis?
Sí: cuando el vendedor publica una versión nueva, puedes volver a descargar los archivos más recientes desde tu biblioteca sin coste extra. Mira el registro de cambios para ver las últimas actualizaciones.
Precio
$5.00



