ШІ-інструменти та скрипти
Перевірка безпеки Azure Pipelines
Перевіряє azure-pipelines.yml та його шаблони на секрети в YAML, повідомлення комітів чи назви гілок PR, вставлені в скрипти, curl | bash, виведені з експлуатації образи й завдання, persistCredentials і репозиторії шаблонів, прив'язані до гілки.
Що ви отримаєте: 1 файл · 44.25 KB · ZIP
Переглянути варіанти купівліОпис товару
Крок, що виконує echo "Building $(Build.SourceVersionMessage)", виглядає нешкідливо, але Azure Pipelines підставляє повідомлення коміту в скрипт ще до запуску bash, тож повідомлення коміту з лапкою або $( ) виконається як команда на вашому агенті, поруч із вашими секретами. Пайплайн, який досі використовує vmImage: windows-2019, перестав працювати, коли цей образ видалили 31 грудня 2025 року, а CmdLine@1, PowerShell@1, Maven@2 та ще 70 версій завдань виводяться з експлуатації 24 листопада 2026 року й видаляються 15 березня 2027 року. Ця навичка знаходить такі проблеми та інші помилки Azure Pipelines, наведені нижче, і підказує, як виправити кожну з них.
Ваш агент запускає сканер для azure-pipelines.yml, файлів у .azure-pipelines/ і .azuredevops/, а також для кожного YAML-файлу, ключі верхнього рівня та кроки якого належать до Azure Pipelines, тому перевіряються й шаблони кроків, завдань, стадій, змінних та extends, зокрема ті, що зберігаються в build/ і підключаються пайплайном. Файли GitHub Actions, GitLab CI, Compose і Kubernetes пропускаються. Сканер розуміє макросинтаксис $(var), шаблонні вирази ${{ }} та вирази часу виконання $[ ], вважає безпечними значення, передані через env:, і відстежує в межах файлу змінні, побудовані з ненадійних значень. Він ніколи не запускає пайплайн чи скрипт і ніколи не звертається до мережі. Результат: BLOCK, REVIEW або NOT FLAGGED із зазначенням файлу, рядка, причини та безпечнішого підходу. Секрети ніколи не виводяться.
Що перевіряється
BLOCK (виправити до випуску)
- A01: паролі, токени та ключі, записані літералами: змінні або записи env із секретними назвами, вхідні параметри завдань, як-от keystorePass, типові значення параметрів, паролі в URL або рядках підключення, заголовки Bearer, прапорці --token, curl -u user:pass, docker/az login -p, sqlcmd -P, PowerShell $password = '...', -Password і ConvertTo-SecureString -AsPlainText, команди журналювання issecret, а також відомі формати токенів (ghp_, npm_, glpat-, xox, ідентифікатори ключів доступу AWS, блоки приватних ключів)
- A02: $(Build.SourceVersionMessage) або $(System.PullRequest.SourceBranch) чи побудована з них змінна в тексті скрипту (script, bash, pwsh, powershell, вбудовані скрипти завдань і аргументи завдань оболонки)
- A03: скрипти, завантажені через звичайний HTTP або з вимкненою перевіркою сертифікатів (curl -k, wget --no-check-certificate, -SkipCertificateCheck) і передані в оболонку чи Invoke-Expression
- A04: видалені образи та завдання: виведені з експлуатації образи, розміщені Microsoft (windows-2019, vs2017-win2016, від ubuntu-16.04 до ubuntu-20.04, від macOS-10.13 до macOS-13, а також macOS-14 і ubuntu-22.04 від дат їх видалення), зокрема через змінну матриці або параметр, які використовує vmImage, а з 15 березня 2027 року й виведені з експлуатації версії завдань
REVIEW (перевірити перед релізом)
- A11: checkout із persistCredentials: true
- A12: контейнерні завдання або сервісні контейнери з --privileged, потужними capabilities, просторами імен хоста, вимкненими seccomp або AppArmor, томом docker.sock чи mapDockerSocket: true
- A13: шаблони з ресурсу репозиторію GitHub, Bitbucket або іншої організації без ref чи з ref на гілку (тег або 40-символьний SHA коміту вважається закріпленою версією)
- A14: $(System.AccessToken) або змінні із секретними назвами, вставлені в текст скрипту чи аргументи командного рядка завдання замість env:
- A15: скрипти, завантажені через HTTPS і одразу виконані (curl | sh, irm | iex, bash <(curl ...), iex "& { $(irm ...) }", [scriptblock]::Create((iwr ...)))
- A16: рядкові параметри часу виконання з довільним текстом без списку values, а також $(Build.RequestedFor) та інші імена ініціаторів запуску в тексті скрипту
- A17: застарілі розміщені образи до дати їх видалення: macOS-14 (23 листопада 2026 року) і ubuntu-22.04 (17 квітня 2027 року)
- A18: 73 версії завдань зі списку Microsoft на виведення з експлуатації в листопаді 2026 року, кожна із зазначенням заміни, до їх видалення 15 березня 2027 року
- A19: AzureCLI з addSpnToEnvironment: true
- A20: явний тригер pr у пайплайні, який запускає завдання в пулі власних (self-hosted) агентів
Що входить до комплекту
- Сканер (Python 3.9+, лише стандартна бібліотека)
- Посібник із правил із причиною, безпечнішим підходом і джерелом Microsoft для кожного правила
- Ризиковий і безпечний приклади (пайплайн збирання та релізу із шаблоном кроків), а також справжній звіт сканера для ризикового прикладу
Обмеження
Сканер читає кожен YAML-файл у тому вигляді, у якому його написано. Значення, що передаються між файлами (параметри шаблонів, змінні з інших файлів, групи змінних, змінні з UI та ті, що задаються під час постановки в чергу), не відстежуються, а налаштування, зроблені поза YAML, не видно: налаштування збирання форків і секретів для форків, обов'язкові перевірки шаблонів, обмеження змінних під час постановки в чергу, перевірка аргументів оболонки, область авторизації завдань, політики гілок і те, чи є репозиторій публічним. Назви гілок, як-от $(Build.SourceBranchName), не позначаються. Під час сканування всього репозиторію в папці build/ шукаються лише файли з назвами пайплайнів і локальні шаблони, а такі папки, як dist, vendor і node_modules, пропускаються. Списки образів і завдань відповідають сторінкам Microsoft станом на 12 листопада 2026 року для Azure DevOps Services. Класичні пайплайни та пайплайни релізів, визначені у вебінтерфейсі, не читаються. NOT FLAGGED не є гарантією.
Вміст
Один ZIP-файл із 12 файлами: SKILL.md, сканер у scripts/ (5 файлів Python), references/rules.md (кожне правило з причиною та безпечнішим підходом) і examples/ (4 файли з прикладами, а також report.md, справжній вивід сканера для ризикового прикладу).
Як використовувати: це навичка для агента: папка з файлом SKILL.md і скриптами Python, які може запускати ШІ-агент для програмування, наприклад Claude Code, Cursor або Codex CLI. Розпакуйте архів у папку навичок вашого агента (для Claude Code: ~/.claude/skills/), а потім попросіть агента перевірити ваш проєкт. Скрипти також працюють самостійно з Python 3.9 або новішим, нічого встановлювати не потрібно. Вони лише читають ваші файли: без доступу до мережі, і нічого нікуди не надсилається.
Що ви отримаєте
1 файл · 44.25 KB
- azure-pipelines-safety-check-1.0.0.zipZIP · 44.25 KB
ШІ-інструменти та скрипти
Перевірка безпеки Azure Pipelines
Перевіряє azure-pipelines.yml та його шаблони на секрети в YAML, повідомлення комітів чи назви гілок PR, вставлені в скрипти, curl | bash, виведені з експлуатації образи й завдання, persistCredentials і репозиторії шаблонів, прив'язані до гілки.
Getly відкрив завантажені файли й не знайшов нічого, що завадило б їх відкрити. Це не антивірусна перевірка і не оцінка якості.
Теги
Поширені запитання
Чи отримаю я доступ одразу?
Так. Це цифровий товар: ви можете завантажити його одразу після оплати, просто зі своєї бібліотеки.
Чи можна використовувати його в комерційних проєктах?
Так. Комерційне використання дозволено: користуйтеся в особистому бізнесі та в тому, що продаєте. Ви не можете перепродавати чи поширювати сам файл.
Яка у вас політика повернення коштів?
Ви можете запросити повернення коштів протягом 30 дн. Якщо щось не так, подайте запит зі свого замовлення, і команда Getly його розгляне.
Які формати та розміри файлів я отримаю?
Ви завантажите 1 файл - ZIP - загалом 44.25 KB.
Чи отримую я безкоштовні оновлення?
Так: коли продавець випускає нову версію, ви можете повторно завантажити свіжі файли зі своєї бібліотеки безкоштовно. Останні оновлення дивіться в журналі змін.
Ціна
$5.00



