Введение
Безопасность программного обеспечения перестала быть отдельной дисциплиной — она встроена в каждый этап разработки. DevSecOps, по данным отчёта GitLab за 2025 год, внедряют уже более 65% команд, использующих CI/CD. Однако ключевая проблема остаётся: как эффективно формулировать задачи для инструментов SAST, DAST и управления политиками доступа? Ответ — в промтах. Правильно составленный промт (запрос к AI-модели или инструменту) может автоматизировать аудит кода, генерацию политик и анализ уязвимостей. В этой статье — 15 промтов, разбитых на три уровня сложности, с примерами результатов и ссылками на реальные инструменты.
Базовые промты для безопасности
Эти промты подойдут разработчикам и инженерам, которые только начинают внедрять безопасность в процесс. Они фокусируются на простых задачах: поиск распространённых уязвимостей, базовый аудит зависимостей и генерация простых политик доступа.
Промт 1: Поиск SQL-инъекций в коде
Задача: Найти фрагменты кода, уязвимые для SQL-инъекций, в Python-приложении.
Промт:
Проанализируй следующий код на Python и найди места, где возможна SQL-инъекция. Для каждого уязвимого места предложи исправление с использованием параметризованных запросов или ORM.
Код:
@app.route('/user')
def get_user():
user_id = request.args.get('id')
query = f"SELECT * FROM users WHERE id = {user_id}"
cursor.execute(query)
return cursor.fetchall()
Пример результата:
Уязвимость найдена в строке 4: используется f-строка для формирования SQL-запроса. Исправление:
query = "SELECT * FROM users WHERE id = ?"
cursor.execute(query, (user_id,))
Этот промт основан на практике OWASP Top 10, где SQL-инъекции остаются одной из самых критичных уязвимостей. Инструменты вроде Semgrep или Bandit могут выполнять подобный анализ статически.
Промт 2: Анализ зависимостей на известные уязвимости
Задача: Проверить список зависимостей проекта на наличие CVE.
Промт:
У меня есть файл requirements.txt с зависимостями: Flask==2.0.1, requests==2.25.0, numpy==1.21.0. Найди для каждой зависимости известные уязвимости (CVE) с указанием severity и версии, в которой они исправлены.
Пример результата:
Flask 2.0.1: CVE-2023-30861 (Medium) — исправлено в 2.3.0
requests 2.25.0: CVE-2023-32681 (High) — исправлено в 2.31.0
numpy 1.21.0: CVE-2021-41495 (Low) — исправлено в 1.22.0
Для автоматизации используйте инструменты вроде Snyk или OWASP Dependency-Check. Они интегрируются в CI/CD и обновляют базу CVE ежедневно.
Промт 3: Генерация простой политики доступа (RBAC)
Задача: Создать политику доступа на основе ролей для веб-приложения.
Промт:
Создай политику RBAC для приложения с тремя ролями: admin, editor, viewer. Admin может всё, editor может редактировать и просматривать, viewer — только просматривать. Используй синтаксис JSON.
Пример результата:
{
"roles": {
"admin": {"permissions": ["*"]},
"editor": {"permissions": ["read", "write"]},
"viewer": {"permissions": ["read"]}
}
}
Такие политики легко интегрируются с инструментами управления доступом, например, Open Policy Agent (OPA) или AWS IAM.
Промт 4: Обнаружение hardcoded секретов
Задача: Найти секреты (пароли, токены, ключи) в коде.
Промт:
Найди в следующем коде hardcoded секреты: пароли, API-ключи, токены. Предложи способ их вынести в переменные окружения.
Код:
api_key = "sk-1234567890abcdef"
password = "supersecret"
db_host = "localhost"
Пример результата:
Найдены:
- api_key: "sk-1234567890abcdef"
- password: "supersecret"
Исправление: создать файл .env и загружать через os.getenv().
Инструменты: GitLeaks, TruffleHog. Они сканируют коммиты и историю репозитория.
Промт 5: Проверка конфигурации Dockerfile на безопасность
Задача: Проанализировать Dockerfile на лучшие практики безопасности.
Промт:
Проверь Dockerfile на уязвимости: запуск от root, использование непроверенных образов, открытые порты. Предложи исправления.
Dockerfile:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
USER root
CMD ["nginx", "-g", "daemon off;"]
Пример результата:
- Используется latest-тег — заменить на конкретную версию.
- Запуск от root — добавить USER nginx.
- Не установлены security-патчи — добавить apt-get upgrade.
Продвинутые промты для DevSecOps
Эти промты требуют понимания CI/CD, контейнеризации и облачных политик. Они автоматизируют интеграцию безопасности в пайплайны.
Промт 6: Создание SAST-скрипта для CI/CD
Задача: Написать bash-скрипт для запуска SAST-анализа в GitLab CI.
Промт:
Создай bash-скрипт, который запускает Semgrep для Python-файлов и выводит результаты в формате JSON. Скрипт должен завершаться с ошибкой, если найдены уязвимости с severity 'high'.
Пример результата:
#!/bin/bash
semgrep --config=auto --json --error --severity=HIGH .
if [ $? -ne 0 ]; then
echo "Critical vulnerabilities found!"
exit 1
fi
Этот скрипт можно вставить в job GitLab CI. Semgrep поддерживает сотни правил, включая OWASP Top 10.
Промт 7: Генерация политики сети для Kubernetes (NetworkPolicy)
Задача: Создать политику, запрещающую весь трафик кроме явно разрешённого.
Промт:
Сгенерируй Kubernetes NetworkPolicy, которая блокирует весь входящий и исходящий трафик для подов с меткой app: frontend, кроме трафика от пода с меткой app: backend на порт 8080.
Пример результата:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-except-backend
spec:
podSelector:
matchLabels:
app: frontend
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: backend
ports:
- protocol: TCP
port: 8080
egress: []
Промт 8: Автоматическое исправление уязвимостей в Terraform
Задача: Исправить конфигурацию Terraform, где S3 bucket открыт для всех.
Промт:
В Terraform-коде S3 bucket имеет public access block: false. Измени код так, чтобы блокировать публичный доступ и добавить шифрование.
Код:
resource "aws_s3_bucket" "my_bucket" {
bucket = "my-bucket"
acl = "public-read"
}
Пример результата:
resource "aws_s3_bucket" "my_bucket" {
bucket = "my-bucket"
}
resource "aws_s3_bucket_public_access_block" "my_bucket" {
bucket = aws_s3_bucket.my_bucket.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
resource "aws_s3_bucket_server_side_encryption_configuration" "my_bucket" {
bucket = aws_s3_bucket.my_bucket.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
Промт 9: Создание политики IAM с минимальными привилегиями
Задача: Создать IAM-политику для Lambda, которой нужен доступ только к одному S3 bucket.
Промт:
Создай IAM-политику для AWS Lambda, которая разрешает только s3:GetObject и s3:ListBucket для bucket 'my-app-data'. Запрети все остальные действия.
Пример результата:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-app-data",
"arn:aws:s3:::my-app-data/*"
]
}
]
}
Промт 10: DAST-сканирование с OWASP ZAP через API
Задача: Запустить DAST-сканирование для staging-окружения.
Промт:
Напиши Python-скрипт, который запускает OWASP ZAP в режиме daemon, сканирует URL http://staging.example.com и экспортирует отчёт в HTML.
Пример результата:
from zapv2 import ZAPv2
zap = ZAPv2(apikey='changeme')
zap.urlopen('http://staging.example.com')
zap.spider.scan('http://staging.example.com')
zap.ascan.scan('http://staging.example.com')
zap.core.save_session('report.html')
OWASP ZAP — один из самых популярных DAST-инструментов с открытым исходным кодом.
Экспертные промты для безопасности
Эти промты требуют глубоких знаний в области криптографии, сложных политик и интеграции с SIEM-системами.
Промт 11: Анализ логов на признаки атаки (Log Analysis)
Задача: Найти в логах веб-сервера признаки SQL-инъекции или XSS.
Промт:
Проанализируй логи Nginx и найди запросы, которые могут быть SQL-инъекцией или XSS. Используй регулярные выражения для поиска типичных паттернов: UNION SELECT, <script>, OR 1=1.
Логи:
192.168.1.1 - - [14/Jul/2026:10:15:30] "GET /search?q=1' OR '1'='1 HTTP/1.1" 200
192.168.1.2 - - [14/Jul/2026:10:16:00] "GET /search?q=<script>alert(1)</script> HTTP/1.1" 200
Пример результата:
Подозрительные запросы:
1. q=1' OR '1'='1 — возможная SQL-инъекция.
2. q=<script>alert(1)</script> — возможная XSS.
Рекомендация: добавить WAF (например, ModSecurity) и экранировать ввод.
Промт 12: Генерация правил для Falco (runtime security)
Задача: Создать правило Falco для обнаружения запуска shell в контейнере.
Промт:
Напиши правило Falco, которое срабатывает при запуске /bin/bash в контейнере с меткой app: production. Уровень тревоги — Critical.
Пример результата:
- rule: Shell in Production Container
desc: Detect shell execution in production containers
condition: container.image.repository contains "production" and proc.name = "bash"
output: "Shell detected in container (user=%user.name container=%container.id)"
priority: CRITICAL
tags: [container]
Falco — стандарт де-факто для runtime-безопасности контейнеров, поддерживается CNCF.
Промт 13: Создание политики шифрования для базы данных
Задача: Сгенерировать политику шифрования данных в PostgreSQL с использованием pgcrypto.
Промт:
Создай SQL-скрипт для шифрования столбца 'email' в таблице 'users' с использованием pgcrypto. Используй симметричное шифрование с ключом из переменной окружения.
Пример результата:
CREATE EXTENSION IF NOT EXISTS pgcrypto;
UPDATE users SET email = pgp_sym_encrypt(email, current_setting('app.encryption_key'));
ALTER TABLE users ALTER COLUMN email SET DATA TYPE bytea USING email::bytea;
Промт 14: Интеграция с SIEM (например, Splunk) через API
Задача: Отправить алерт о найденной уязвимости в Splunk.
Промт:
Напиши Python-скрипт, который отправляет JSON-событие с типом 'vulnerability' в Splunk HTTP Event Collector. Событие должно содержать: CVE ID, severity, affected component.
Пример результата:
import requests
import json
event = {
"event": {
"type": "vulnerability",
"cve_id": "CVE-2023-30861",
"severity": "MEDIUM",
"component": "Flask 2.0.1"
}
}
url = "https://splunk-instance:8088/services/collector"
headers = {"Authorization": "Splunk <token>"}
requests.post(url, data=json.dumps(event), headers=headers, verify=False)
Промт 15: Построение модели угроз (Threat Modeling) для микросервисов
Задача: Создать модель угроз для микросервисной архитектуры.
Промт:
Построй модель угроз для системы из трёх микросервисов: API Gateway, User Service, Order Service. Используй методологию STRIDE. Для каждой угрозы укажи mitigation.
Пример результата:
| Сервис | Угроза (STRIDE) | Mitigation |
|--------|-----------------|------------|
| API Gateway | Spoofing (подделка токенов) | Использовать JWT с проверкой подписи |
| User Service | Tampering (изменение данных) | Input validation, prepared statements |
| Order Service | Information Disclosure | Шифрование данных в покое |
Заключение
Промты — это не просто запросы к AI, а инструмент для автоматизации безопасности. Используя их, можно сократить время на аудит, сканирование и генерацию политик. Начните с базовых промтов, затем переходите к продвинутым и экспертным. Главное — помните: безопасность должна быть встроена, а не добавлена постфактум. ASI Biont поддерживает подключение к Splunk через API — подробнее на asibiont.com/courses. Экспериментируйте, адаптируйте промты под свои инструменты и делитесь результатами с сообществом.
Комментарии