Валідація AI-коду
SAST/DAST інструменти, SCA для AI-залежностей, code signing та захист supply chain для AI-розробки
📎ОФІЦІЙНА ДОКУМЕНТАЦІЯ
Валідація AI-згенерованого коду
Автоматизована валідація AI-коду через SAST, DAST, SCA та supply chain security -- критичний елемент безпечної AI-розробки.
SAST (Static Application Security Testing)
SAST аналізує вихідний код без його виконання, виявляючи вразливості на ранніх етапах.
Інструменти SAST
| Інструмент | Мови | Ціна | Особливості |
|---|---|---|---|
| SonarQube | 30+ | Community (free) / Enterprise | Комплексний аналіз |
| Semgrep | 20+ | OSS (free) / Team | Швидкий, custom rules |
| CodeQL | 10+ | Free для OSS | Глибокий семантичний аналіз |
| Snyk Code | 15+ | Free tier / Team | AI-powered, real-time |
| Checkmarx | 25+ | Enterprise | Повний SDLC coverage |
Налаштування SAST для AI-коду
Рекомендовані правила для AI-згенерованого коду:
# Приклад конфігурації Semgrep
rules:
- id: hardcoded-secret
pattern: |
$KEY = "..."
message: "Потенційний hardcoded secret"
severity: ERROR
- id: sql-injection
pattern: |
$QUERY = f"SELECT ... {$INPUT} ..."
message: "Потенційна SQL injection"
severity: ERROR
- id: unsafe-deserialization
pattern: |
yaml.load($DATA)
message: "Небезпечна десеріалізація -- використовуйте yaml.safe_load()"
severity: WARNING
Налаштуйте SAST для запуску на кожному PR. AI-код потребує суворіших правил, ніж ручний код, оскільки AI не має розуміння контексту безпеки.
DAST (Dynamic Application Security Testing)
DAST тестує працюючий додаток, симулюючи атаки.
Інструменти DAST
| Інструмент | Тип | Ціна |
|---|---|---|
| OWASP ZAP | Proxy-based | Free (OSS) |
| Burp Suite | Proxy-based | Community (free) / Professional ($449/рік) |
| Nuclei | Template-based | Free (OSS) |
| StackHawk | CI/CD integrated | Free tier / Team |
DAST для AI-компонентів
Додаткові тести для AI-ендпоінтів:
- Prompt injection -- спроби маніпуляції через вхідні дані
- Rate limiting -- перевірка обмежень на запити
- Input validation -- тестування граничних значень
- Output sanitization -- перевірка виходу на XSS/injection
- Authentication bypass -- спроби обійти автентифікацію
SCA (Software Composition Analysis)
SCA сканує залежності проєкту на відомі вразливості.
Чому SCA критично для AI-коду
AI часто додає залежності, які можуть бути:
- Застарілими з відомими CVE
- Малопопулярними та непідтримуваними
- Шкідливими (typosquatting)
- Несумісними за ліцензією
Інструменти SCA
| Інструмент | Ecosystem | Ціна |
|---|---|---|
| Dependabot | npm, pip, Maven та ін. | Free (GitHub) |
| Snyk | 10+ ecosystems | Free tier / Team |
| Renovate | 40+ ecosystems | Free (OSS) |
| FOSSA | 20+ ecosystems | Free tier / Enterprise |
| Socket | npm, PyPI | Free tier / Team |
SBOM (Software Bill of Materials)
Генеруйте SBOM для кожного релізу:
# Генерація SBOM у форматі CycloneDX
npx @cyclonedx/cyclonedx-npm --output-file sbom.json
# Або у форматі SPDX
syft . -o spdx-json > sbom.spdx.json
SBOM стає вимогою для багатьох compliance-стандартів (Executive Order 14028, NIS2). Генеруйте його автоматично в CI/CD pipeline.
Code Signing
Підписання коду
Підписуйте артефакти для верифікації цілісності:
- Git commit signing -- GPG або SSH підписи для commits
- Container signing -- Cosign для Docker images
- Binary signing -- Sigstore для бінарних файлів
- SLSA provenance -- атестація походження артефактів
Налаштування Git Commit Signing
# Налаштування GPG-підпису
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_KEY_ID
# Або SSH-підпису
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
Supply Chain Security
Захист від supply chain атак
Private Registry
Для критичних проєктів використовуйте приватні реєстри:
- Artifactory -- universal artifact manager
- Azure Artifacts -- для Azure DevOps
- GitHub Packages -- для GitHub
- Verdaccio -- self-hosted npm registry
CI/CD інтеграція
# Приклад GitHub Actions з security checks
name: Security Pipeline
on: [pull_request]
jobs:
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: returntocorp/semgrep-action@v1
sca:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
secrets-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gitleaks/gitleaks-action@v2
Див. також
Ручний review та чеклісти
Сканування, патчі та Dependabot
Безпечна передача артефактів