Огляд
Сканери знаходять помилку. Розробнику, який її написав, ще треба навчитися виправленню. Цей pipe дає урок просто в pull request, саме тоді, коли код на рев’ю.
- Читає SARIF від CodeQL, Semgrep, Trivy, Gitleaks
- Зіставляє кожну знахідку з уроком на 5-10 хвилин
- Публікує один коментар і звіт Code Insights
- Ніколи не валить збірку
Як це працює
-
Ваш сканер запускається в пайплайні pull request і пише файл SARIF. Pipe читає його після кроку сканування.
-
Кожна знахідка зіставляється за її CWE. Секрети й advisory залежностей зіставляються за типом сканера, тож захардкоджений секрет чи вразливий пакет веде до уроку про виправлення.
-
Pipe створює звіт Code Insights із посиланнями на уроки й додає один коментар у pull request із щонайбільше пʼятьма уроками, по одному на тип проблеми. Під час наступних запусків він оновлює той самий коментар.
-
Коли хтось завершує урок, він позначається під час наступного запуску пайплайна, а зі встановленим застосунком — протягом кількох секунд.
Додати у ваш пайплайн
Додайте pipe після кроку, що запускає сканер і пише SARIF. Крок потребує
oidc: true, щоб RansomLeak міг визначити, з якого робочого простору й репозиторію
прийшов запит:
- step:
name: Scan and learn
oidc: true
script:
# ... your scanner writes results.sarif ...
- pipe: docker://ghcr.io/ransomleak/secure-coding-pipe:1
variables:
SARIF: results.sarif
Pipe працює лише в пайплайнах pull request, тож розмістіть його в розділі
pull-requests. Він входить із OIDC-токеном кроку, тож реєстрація не потрібна.
Параметр SARIF приймає шлях або glob, наприклад reports/**/*.sarif.
Щоб отримувати коментар без застосунку, створіть токен доступу до репозиторію з дозволами
Pull requests: Write і Repositories: Read, збережіть його як
захищену змінну репозиторію й передайте pipe як BITBUCKET_ACCESS_TOKEN. Без
токена уроки все одно зʼявляються у звіті Code Insights, у розділі Reports pull
request.
Якщо SonarQube вже аналізує ваші pull request, задайте SONAR_HOST_URL,
SONAR_PROJECT_KEY і (для SonarQube Cloud) SONAR_ORGANIZATION замість
SARIF. Передайте SONAR_TOKEN як захищену змінну: йому потрібен дозвіл
Browse, і він залишається у вашому пайплайні. SonarQube Server потребує Developer Edition або
вище. Див.
розділ про SonarQube в посібнику з налаштування.
Додатковий застосунок RansomLeak
Більшості команд вистачає самого pipe. Застосунок для Bitbucket Cloud публікує коментар від імені RansomLeak без токена доступу й позначає завершені уроки протягом кількох секунд.
| Pipe | Pipe із застосунком | |
|---|---|---|
| Вартість | Безкоштовно | Безкоштовно |
| Коментар з уроками | Потрібен токен доступу, інакше лише звіт | Від імені RansomLeak, без токена |
| Позначає завершений урок | Під час наступного запуску | Протягом кількох секунд |
| Звіт Code Insights | Так, ніколи не падає | Так, ніколи не падає |
| Потрібен адміністратор робочого простору | Ні | Так, один раз |
Застосунок RansomLeak для Bitbucket уже працює. Адміністратор робочого простору встановлює його один раз для всього простору. Він просить доступ на читання й запис до pull request і репозиторіїв, більше нічого. Подробиці в інструкції з налаштування.
Pull request із форків отримують лише звіт Code Insights, із застосунком чи без нього.
Дозволи та обробка даних
| Дані | Як обробляються |
|---|---|
| Знахідки | Назва сканера, CWE, чи є правило advisory CVE або GHSA, номер pull request і хеш коміту. Без вихідного коду, назв файлів, номерів рядків, фрагментів і секретів. |
| Розробник | Записів про окремих розробників ми не зберігаємо. |
| Завершення | Одна позначка на робочий простір, репозиторій, pull request і урок, лише ідентифікатори й час. Зникає через 30 днів. |
| Ваш токен доступу | Залишається у вашому пайплайні й надсилається лише до Bitbucket. Облікових даних Bitbucket ми не зберігаємо. |
Позначка означає, що урок пройдено за посиланням із цього pull request, а не доказ того, хто саме його пройшов. Як RansomLeak обробляє дані, дивіться в політиці конфіденційності.
Поширені запитання
Чи інтегрується RansomLeak з Bitbucket?
Так. RansomLeak Secure Coding Lessons — безкоштовний pipe для Bitbucket Pipelines у Bitbucket Cloud. Коли ваш сканер позначає слабкість у pull request, pipe публікує один коментар із підібраними уроками безпечного кодування на 5-10 хвилин і створює звіт Code Insights. Обліковий запис RansomLeak не потрібен.
З якими сканерами воно працює?
З будь-яким сканером, що пише SARIF: CodeQL, Semgrep, Trivy, Gitleaks та іншими інструментами, чиї правила мають CWE, CVE або GHSA. Параметр SARIF приймає шлях або glob, до 50 МБ сумарно. Pipe також читає SonarQube Server (від Developer Edition) і SonarQube Cloud через змінні SONAR_* замість файлу SARIF.
Чи зламає воно збірку або заблокує злиття?
Ні. Pipe ніколи не валить збірку. Якщо RansomLeak недоступний, бракує дозволу для токена або файл SARIF недійсний, він пише попередження й продовжує роботу. Звіт Code Insights теж ніколи не падає.
Як pipe коментує pull request?
Або через токен доступу до репозиторію з дозволами Pull requests: Write і Repositories: Read, або через додатковий застосунок RansomLeak для Bitbucket Cloud, який публікує коментар від імені RansomLeak і не потребує токена. Без жодного з них уроки все одно зʼявляються у звіті Code Insights, у розділі Reports pull request.
Які дані отримує RansomLeak?
Лише ідентифікатори: назву сканера, CWE правил, що дали результат, чи є правило advisory CVE або GHSA, номер pull request і хеш коміту. Вихідний код, назви файлів, номери рядків, фрагменти й секрети не залишають раннер, а записів про окремих розробників RansomLeak не зберігає.
Чи підтримується Bitbucket Data Center і що з форками?
Data Center не підтримується: pipe працює лише в Bitbucket Cloud. Pull request із форків отримують звіт Code Insights, але без коментаря, із застосунком чи без нього.
Потрібна допомога?
Напишіть нам на support@ransomleak.com — якщо маєте запитання або користуєтеся сканером, якого ми ще не підтримуємо.