Outils et scripts IA
Contrôle de sécurité pour Azure Pipelines
Analyse azure-pipelines.yml et ses modèles à la recherche de secrets dans le YAML, de messages de commit ou de noms de branches de PR insérés dans des scripts, de curl | bash, d'images et de tâches hébergées retirées, de persistCredentials et de dépôts de modèles qui suivent une branche.
Ce que vous recevez : 1 fichier · 44.25 KB · ZIP
Voir les options d'achatDescription du produit
Une étape qui exécute echo "Building $(Build.SourceVersionMessage)" semble inoffensive, mais Azure Pipelines insère le message de commit dans le script avant le démarrage de bash : un message de commit contenant un guillemet ou $( ) s'exécute donc comme une commande sur votre agent, à côté de vos secrets. Un pipeline qui utilise encore vmImage: windows-2019 a cessé de fonctionner lorsque cette image a été supprimée le 31 décembre 2025, et CmdLine@1, PowerShell@1, Maven@2 ainsi que 70 autres versions de tâches sont retirées le 24 novembre 2026 et supprimées le 15 mars 2027. Ce skill détecte ces problèmes et les autres erreurs Azure Pipelines listées ci-dessous, et vous indique comment corriger chacune d'elles.
Votre agent exécute un scanner sur azure-pipelines.yml, les fichiers de .azure-pipelines/ et .azuredevops/, ainsi que sur chaque fichier YAML dont les clés de premier niveau et les étapes relèvent d'Azure Pipelines : les modèles d'étapes, de jobs, de stages, de variables et extends sont donc aussi contrôlés, y compris ceux rangés sous build/ qu'un pipeline inclut. Les fichiers GitHub Actions, GitLab CI, Compose et Kubernetes sont ignorés. Il connaît la syntaxe de macro $(var), les expressions de modèle ${{ }} et les expressions d'exécution $[ ], considère comme sûres les valeurs transmises via env: et suit, au sein d'un fichier, les variables construites à partir de valeurs non fiables. Il n'exécute jamais le pipeline ni aucun script et n'utilise jamais le réseau. Il renvoie BLOCK, REVIEW ou NOT FLAGGED, avec le fichier, la ligne, la raison et une approche plus sûre. Les secrets ne sont jamais affichés.
Ce qui est vérifié
BLOCK (à corriger avant la livraison)
- A01 : mots de passe, jetons et clés écrits en clair : variables ou entrées env portant des noms de secrets, entrées de tâches comme keystorePass, valeurs par défaut de paramètres, mots de passe dans des URL ou des chaînes de connexion, en-têtes Bearer, options --token, curl -u user:pass, docker/az login -p, sqlcmd -P, PowerShell $password = '...', -Password et ConvertTo-SecureString -AsPlainText, commandes de journalisation issecret et formats de jetons connus (ghp_, npm_, glpat-, xox, identifiants de clés d'accès AWS, blocs de clés privées)
- A02 : $(Build.SourceVersionMessage) ou $(System.PullRequest.SourceBranch), ou une variable construite à partir d'eux, dans le texte d'un script (script, bash, pwsh, powershell, scripts inline des tâches et arguments des tâches shell)
- A03 : scripts récupérés en HTTP simple ou avec la vérification des certificats désactivée (curl -k, wget --no-check-certificate, -SkipCertificateCheck) et redirigés vers un shell ou Invoke-Expression
- A04 : images et tâches supprimées : images hébergées par Microsoft retirées (windows-2019, vs2017-win2016, ubuntu-16.04 à ubuntu-20.04, macOS-10.13 à macOS-13, ainsi que macOS-14 et ubuntu-22.04 à partir de leur date de suppression), y compris via une variable de matrice ou un paramètre utilisé par vmImage, et à partir du 15 mars 2027 les versions de tâches retirées
REVIEW (à vérifier avant la publication)
- A11 : checkout avec persistCredentials: true
- A12 : jobs de conteneur ou conteneurs de service avec --privileged, des capabilities puissantes, les espaces de noms de l'hôte, seccomp ou AppArmor désactivé, un volume docker.sock ou mapDockerSocket: true
- A13 : modèles provenant d'une ressource de dépôt GitHub, Bitbucket ou d'une autre organisation sans ref ou avec un ref de branche (un tag ou un SHA de commit de 40 caractères est considéré comme épinglé)
- A14 : $(System.AccessToken) ou variables portant des noms de secrets insérés dans le texte d'un script ou dans les arguments de ligne de commande d'une tâche au lieu de env:
- A15 : scripts récupérés en HTTPS et exécutés immédiatement (curl | sh, irm | iex, bash <(curl ...), iex "& { $(irm ...) }", [scriptblock]::Create((iwr ...)))
- A16 : paramètres de type chaîne en texte libre à l'exécution sans liste values, ou $(Build.RequestedFor) et les autres noms du demandeur, dans le texte d'un script
- A17 : images hébergées obsolètes avant leur date de suppression : macOS-14 (23 novembre 2026) et ubuntu-22.04 (17 avril 2027)
- A18 : les 73 versions de tâches de la liste de retrait de Microsoft de novembre 2026, chacune affichée avec son remplacement, jusqu'à leur suppression le 15 mars 2027
- A19 : AzureCLI avec addSpnToEnvironment: true
- A20 : un déclencheur pr explicite dans un pipeline qui exécute des jobs sur un pool auto-hébergé
Ce qui est inclus
- Le scanner (Python 3.9+, bibliothèque standard uniquement)
- Un guide des règles indiquant, pour chaque règle, la raison, l'approche plus sûre et la source Microsoft
- Un exemple risqué et un exemple sûr (un pipeline de build et de release avec un modèle d'étapes), ainsi que le rapport réel produit par le scanner sur l'exemple risqué
Limites
Il lit chaque fichier YAML tel qu'il est écrit. Les valeurs transmises entre fichiers (paramètres de modèles, variables d'autres fichiers, groupes de variables, variables de l'interface et de mise en file d'attente) ne sont pas suivies, et les paramètres définis hors du YAML ne sont pas visibles : paramètres de build des forks et de secrets pour les forks, vérifications de modèle obligatoires, limites des variables de mise en file d'attente, validation des arguments shell, portée d'autorisation des jobs, stratégies de branche et caractère public ou non du dépôt. Les noms de branches comme $(Build.SourceBranchName) ne sont pas signalés. Lors de l'analyse d'un dépôt entier, un dossier build/ n'est parcouru que pour les fichiers portant un nom de pipeline et les modèles locaux, et les dossiers comme dist, vendor et node_modules sont ignorés. Les listes d'images et de tâches suivent les pages de Microsoft à la date du 12 novembre 2026 pour Azure DevOps Services. Les pipelines classiques et de release définis dans l'interface web ne sont pas lus. NOT FLAGGED n'est pas une garantie.
Contenu
Un fichier ZIP de 12 fichiers : SKILL.md, le scanner dans scripts/ (5 fichiers Python), references/rules.md (chaque règle avec sa raison et une approche plus sûre) et examples/ (4 fichiers d'exemple plus report.md, la sortie réelle du scanner sur l'exemple risqué).
Utilisation : il s'agit d'un skill d'agent : un dossier contenant un fichier SKILL.md et des scripts Python qu'un agent de codage IA comme Claude Code, Cursor ou Codex CLI peut exécuter. Décompressez-le dans le dossier des skills de votre agent (pour Claude Code : ~/.claude/skills/), puis demandez à votre agent de vérifier votre projet. Les scripts fonctionnent aussi seuls avec Python 3.9 ou plus récent, sans rien à installer. Ils se contentent de lire vos fichiers : aucun accès réseau, et rien n'est envoyé nulle part.
Ce que vous recevez
1 fichier · 44.25 KB
- azure-pipelines-safety-check-1.0.0.zipZIP · 44.25 KB
Outils et scripts IA
Contrôle de sécurité pour Azure Pipelines
Analyse azure-pipelines.yml et ses modèles à la recherche de secrets dans le YAML, de messages de commit ou de noms de branches de PR insérés dans des scripts, de curl | bash, d'images et de tâches hébergées retirées, de persistCredentials et de dépôts de modèles qui suivent une branche.
Getly a ouvert les fichiers envoyés et n'a rien trouvé qui empêche leur ouverture. Ce n'est ni une analyse antivirus ni une note de qualité.
Tags
Questions fréquentes
Ai-je accès au produit immédiatement ?
Oui. C'est un produit numérique : vous pouvez le télécharger juste après le paiement, directement depuis votre bibliothèque.
Puis-je l'utiliser pour des projets commerciaux ?
Oui. L'usage commercial est autorisé : utilisez-le dans votre propre activité et dans ce que vous vendez. Vous ne pouvez pas revendre ni redistribuer le fichier lui-même.
Quelle est votre politique de remboursement ?
Vous pouvez demander un remboursement dans un délai de 30 jours. Si quelque chose ne va pas, demandez-le depuis votre commande et l'équipe Getly l'examine.
Quels formats et quelles tailles de fichier vais-je recevoir ?
Vous téléchargerez 1 fichier - ZIP - 44.25 KB au total.
Ai-je droit aux mises à jour gratuites ?
Oui : quand le vendeur publie une nouvelle version, vous pouvez retélécharger les derniers fichiers depuis votre bibliothèque sans frais. Consultez le journal des modifications pour les dernières mises à jour.
Prix
$5.00



