Уроки безпечного коду для GitHub
RansomLeak може залишити в pull request на GitHub коментар із посиланням на короткий урок безпечного коду, коли сканер повідомляє про слабке місце в ньому. Це безкоштовно, не потребує облікового запису RansomLeak і не пов’язане з налаштуваннями вашої організації в RansomLeak. Є два способи використання.
| GitHub App | GitHub Action | |
|---|---|---|
| Що читає | Сповіщення сканування коду GitHub | Файл SARIF від вашого сканера |
| Приватні репозиторії | Лише з GitHub Code Security | Так, без Code Security |
| Фіксує завершення в pull request | Так | Лише якщо встановлено й App |
| Pull request із форків | Наразі не підтримуються | Наразі не підтримуються |
GitHub App
Section titled “GitHub App”Встановіть RansomLeak Secure Coding із GitHub Marketplace для свого облікового запису чи організації. Нічого налаштовувати не потрібно.
Для роботи потрібне активне сканування коду GitHub: публічні репозиторії або приватні з GitHub Code Security. Без цього App нічого читати, тож використовуйте Action.
Коли сканування коду знаходить тип проблеми, для якого є урок, App додає до pull request один коментар і надалі редагує саме його. У ньому до п’яти уроків, по одному на кожен окремий тип проблеми, кожен займає 5-10 хвилин. App також створює перевірку RansomLeak Secure Coding. Коли хтось завершує урок, App ставить позначку в коментарі.

Коли коментар створено, перевірка має статус neutral, а коли всі перелічені уроки завершено, — success. Вона ніколи не завершується помилкою.

Не робіть цю перевірку обов’язковою: pull request без уроків ніколи про неї не звітують.
Виправлення коду не прибирає урок із коментаря.
GitHub Action
Section titled “GitHub Action”Додайте Action у workflow, який уже запускає сканер і записує SARIF. Він працює з CodeQL, Semgrep, Trivy, Gitleaks та іншими інструментами, правила яких мають CWE, CVE або GHSA, а також зі сканерами секретів.
permissions: contents: read pull-requests: write id-token: write
steps: - uses: actions/checkout@v4 # run your scanner and write results.sarif - uses: ransomleak/secure-coding-action@v1 with: sarif: results.sarifРеєструватися чи додавати секрет не потрібно. id-token: write дозволяє Action підтвердити для RansomLeak, у якому репозиторії він працює.
Коментар відображає те, про що повідомляє ваш сканер, тож для меншого шуму запускайте його лише на змінених файлах або з базовим рівнем (baseline). Якщо результат SARIF має baselineState, враховуються лише результати new і updated.
Для параметра github-token використовуйте стандартний GITHUB_TOKEN. Якщо передати токен іншого облікового запису, коментар буде опубліковано від його імені, і кожен повторний запуск створюватиме новий коментар замість оновлення першого.
Action ніколи не завершує ваш workflow помилкою. Якщо RansomLeak недоступний або файл SARIF відсутній чи пошкоджений, він записує попередження й продовжує роботу. Pull request із форків наразі не підтримуються, бо GitHub дає таким запускам токен лише для читання й не дає токена OIDC.
Без App Action не може поставити позначку в коментарі чи створити перевірку. Щоб фіксувати завершення в pull request, встановіть і App. Якщо App встановлено для облікового запису, він публікує коментар, а Action нічого не додає. Якщо pull request почав з Action, а потім отримав App, або навпаки, у ньому може з’явитися другий коментар.
Що покрито
Section titled “Що покрито”- SQL-ін’єкції
- Міжсайтовий скриптинг (XSS)
- Обхід шляху (path traversal)
- Ін’єкції команд
- Підробка запитів на боці сервера (SSRF)
- Секрети в коді
- Зовнішні сутності XML (XXE)
- Відкрите перенаправлення
- Міжсайтова підробка запитів (CSRF)
- Вразливі залежності
Для десеріалізації та слабкої криптографії уроків поки немає.
Знахідка зіставляється за її CWE. Знахідки сканерів секретів і рекомендації щодо залежностей зіставляються за типом сканера. Категорії OWASP і широкі батьківські CWE, як-от CWE-200, не використовуються, бо вони не вказують на один конкретний урок.
Які дані надсилаються
Section titled “Які дані надсилаються”App читає сповіщення сканування коду, стан pull request і те, чи його автор є ботом. Action надсилає лише ідентифікатори: назву сканера, ідентифікатори CWE правил, що дали результат, ознаку того, що правило є рекомендацією CVE або GHSA, і номер pull request. Репозиторій і власник беруться з токена OIDC від GitHub.
Кожне посилання на урок містить токен з іменем власника репозиторію (для особистих репозиторіїв це ім’я користувача), назвою репозиторію, номером pull request, уроком і внутрішніми ідентифікаторами. Вони потрібні, щоб завершений урок потрапив до правильного pull request. Токен підписаний, але не зашифрований, тому будь-хто з посиланням може його декодувати й прочитати ці значення.
Вихідний код, шляхи до файлів і фрагменти не надсилаються. RansomLeak не зберігає персональних даних розробників. Видалення App видаляє запис про його встановлення. Якщо ви використовуєте лише Action, RansomLeak зберігає один запис власника лише з числовим ідентифікатором облікового запису GitHub, і служба підтримки видаляє його на запит. Див. політику конфіденційності.
Завершення не підтверджується
Section titled “Завершення не підтверджується”Посилання на урок належить pull request, а не людині. Будь-хто, хто може відкрити pull request, може відкрити посилання й позначити урок завершеним. У публічному репозиторії це означає будь-кого.
Позначка означає, що урок завершено за цим посиланням. Сприймайте її як підказку, а не як доказ того, хто саме пройшов навчання.
Обмеження
Section titled “Обмеження”- Уроки англійською.
- App працює лише з github.com.
- Pull request із форків наразі не підтримуються.
- Урок з’являється лише тоді, коли знахідка сканера має відповідний урок. Для знахідок без відповідного уроку коментаря немає, зокрема для знахідок лише з категорією OWASP.