- Copy code/image/config files across all modules - Translate brand-voice and code-review templates - Translate CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, STYLE_GUIDE - Copy CHANGELOG as-is (technical log) Ref: luongnv89/claude-howto#63
339 lines
17 KiB
Markdown
339 lines
17 KiB
Markdown
<!-- i18n-source: SECURITY.md -->
|
||
<!-- i18n-source-sha: 63a1416 -->
|
||
<!-- i18n-date: 2026-04-09 -->
|
||
|
||
# Політика безпеки
|
||
|
||
## Огляд
|
||
|
||
Безпека проєкту Claude How To є важливою для нас. Цей документ описує наші практики безпеки та пояснює, як відповідально повідомляти про вразливості.
|
||
|
||
## Підтримувані версії
|
||
|
||
Ми надаємо оновлення безпеки для наступних версій:
|
||
|
||
| Версія | Статус | Підтримка до |
|
||
|--------|--------|--------------|
|
||
| Остання (main) | ✅ Активна | Поточна + 6 місяців |
|
||
| Релізи 1.x | ✅ Активна | До наступної мажорної версії |
|
||
|
||
**Примітка**: Як освітній проєкт-довідник, ми зосереджуємося на підтримці актуальних найкращих практик та безпеки документації, а не на традиційній підтримці версій. Оновлення застосовуються безпосередньо до гілки main.
|
||
|
||
## Практики безпеки
|
||
|
||
### Безпека коду
|
||
|
||
1. **Управління залежностями**
|
||
- Усі Python-залежності зафіксовані в `requirements.txt`
|
||
- Регулярні оновлення через dependabot та ручний перегляд
|
||
- Сканування безпеки за допомогою Bandit при кожному коміті
|
||
- Pre-commit хуки для перевірок безпеки
|
||
|
||
2. **Якість коду**
|
||
- Лінтинг за допомогою Ruff виявляє поширені проблеми
|
||
- Перевірка типів за допомогою mypy запобігає вразливостям, пов'язаним з типами
|
||
- Pre-commit хуки забезпечують дотримання стандартів
|
||
- Усі зміни переглядаються перед злиттям
|
||
|
||
3. **Контроль доступу**
|
||
- Захист гілки `main`
|
||
- Обов'язковий рев'ю перед мерджем
|
||
- Статусні перевірки повинні пройти перед мерджем
|
||
- Обмежений доступ на запис до репозиторію
|
||
|
||
### Безпека документації
|
||
|
||
1. **Ніяких секретів у прикладах**
|
||
- Усі API-ключі в прикладах є заповнювачами
|
||
- Облікові дані ніколи не захардкоджені
|
||
- Файли `.env.example` показують необхідні змінні
|
||
- Чіткі попередження щодо управління секретами
|
||
|
||
2. **Найкращі практики безпеки**
|
||
- Приклади демонструють безпечні патерни
|
||
- Попередження безпеки виділені в документації
|
||
- Посилання на офіційні гайди безпеки
|
||
- Обробка облікових даних обговорюється у відповідних розділах
|
||
|
||
3. **Перегляд контенту**
|
||
- Вся документація перевіряється на проблеми безпеки
|
||
- Міркування безпеки в настановах для контриб'юторів
|
||
- Валідація зовнішніх посилань та посилань
|
||
|
||
### Безпека залежностей
|
||
|
||
1. **Сканування**
|
||
- Bandit сканує весь Python-код на вразливості
|
||
- Перевірка вразливостей залежностей через GitHub security alerts
|
||
- Регулярні ручні аудити безпеки
|
||
|
||
2. **Оновлення**
|
||
- Патчі безпеки застосовуються оперативно
|
||
- Мажорні версії оцінюються ретельно
|
||
- Changelog включає оновлення, пов'язані з безпекою
|
||
|
||
3. **Прозорість**
|
||
- Оновлення безпеки задокументовані в комітах
|
||
- Розкриття вразливостей обробляється відповідально
|
||
- Публічні рекомендації безпеки за потреби
|
||
|
||
## Повідомлення про вразливість
|
||
|
||
### Проблеми безпеки, які нас цікавлять
|
||
|
||
Ми цінуємо повідомлення про:
|
||
- **Вразливості коду** в скриптах або прикладах
|
||
- **Вразливості залежностей** у Python-пакетах
|
||
- **Проблеми криптографії** в будь-яких прикладах коду
|
||
- **Недоліки автентифікації/авторизації** в документації
|
||
- **Ризики витоку даних** у прикладах конфігурації
|
||
- **Вразливості ін'єкцій** (SQL, команди тощо)
|
||
- **Проблеми SSRF/XXE/обхід шляхів**
|
||
|
||
### Проблеми безпеки поза межами
|
||
|
||
Це виходить за рамки цього проєкту:
|
||
- Вразливості в самому Claude Code (повідомляйте Anthropic)
|
||
- Проблеми із зовнішніми сервісами або бібліотеками (повідомляйте upstream)
|
||
- Соціальна інженерія або навчання користувачів (не стосується цього довідника)
|
||
- Теоретичні вразливості без підтвердження концепції
|
||
- Вразливості в залежностях, повідомлені через офіційні канали
|
||
|
||
## Як повідомити
|
||
|
||
### Приватне повідомлення (рекомендовано)
|
||
|
||
**Для чутливих проблем безпеки використовуйте приватне повідомлення про вразливості GitHub:**
|
||
|
||
1. Перейдіть: https://github.com/luongnv89/claude-howto/security/advisories
|
||
2. Натисніть "Report a vulnerability"
|
||
3. Заповніть деталі вразливості
|
||
4. Вкажіть:
|
||
- Чіткий опис вразливості
|
||
- Уражений компонент (файл, розділ, приклад)
|
||
- Потенційний вплив
|
||
- Кроки для відтворення (якщо можливо)
|
||
- Запропоноване виправлення (якщо є)
|
||
|
||
**Що відбувається далі:**
|
||
- Ми підтвердимо отримання протягом 48 годин
|
||
- Ми дослідимо та оцінимо серйозність
|
||
- Ми працюватимемо з вами над розробкою виправлення
|
||
- Ми узгодимо графік розкриття
|
||
- Ми вкажемо вас у рекомендації безпеки (якщо ви не бажаєте анонімності)
|
||
|
||
### Публічне повідомлення
|
||
|
||
Для нечутливих проблем або тих, що вже є публічними:
|
||
|
||
1. **Створіть GitHub Issue** з міткою `security`
|
||
2. Вкажіть:
|
||
- Назва: `[SECURITY]` з коротким описом
|
||
- Детальний опис
|
||
- Уражений файл або розділ
|
||
- Потенційний вплив
|
||
- Запропоноване виправлення
|
||
|
||
## Процес реагування на вразливості
|
||
|
||
### Оцінка (24 години)
|
||
|
||
1. Ми підтверджуємо отримання повідомлення
|
||
2. Ми оцінюємо серйозність за [CVSS v3.1](https://www.first.org/cvss/v3.1/specification-document)
|
||
3. Ми визначаємо, чи входить це в область застосування
|
||
4. Ми зв'язуємося з вами з початковою оцінкою
|
||
|
||
### Розробка (1-7 днів)
|
||
|
||
1. Ми розробляємо виправлення
|
||
2. Ми переглядаємо та тестуємо виправлення
|
||
3. Ми створюємо рекомендацію безпеки
|
||
4. Ми готуємо нотатки до випуску
|
||
|
||
### Розкриття (залежно від серйозності)
|
||
|
||
**Критична (CVSS 9.0-10.0)**
|
||
- Виправлення випускається негайно
|
||
- Публічна рекомендація видається
|
||
- 24-годинне попереднє повідомлення репортерам
|
||
|
||
**Висока (CVSS 7.0-8.9)**
|
||
- Виправлення випускається протягом 48-72 годин
|
||
- 5-денне попереднє повідомлення репортерам
|
||
- Публічна рекомендація при випуску
|
||
|
||
**Середня (CVSS 4.0-6.9)**
|
||
- Виправлення випускається в наступному регулярному оновленні
|
||
- Публічна рекомендація при випуску
|
||
|
||
**Низька (CVSS 0.1-3.9)**
|
||
- Виправлення включається в наступне регулярне оновлення
|
||
- Рекомендація при випуску
|
||
|
||
### Публікація
|
||
|
||
Ми публікуємо рекомендації безпеки, що включають:
|
||
- Опис вразливості
|
||
- Уражені компоненти
|
||
- Оцінку серйозності (CVSS-бал)
|
||
- Версію виправлення
|
||
- Обхідні рішення (якщо є)
|
||
- Подяку репортеру (з дозволу)
|
||
|
||
## Найкращі практики для репортерів
|
||
|
||
### Перед повідомленням
|
||
|
||
- **Перевірте проблему**: Чи можете ви відтворити її стабільно?
|
||
- **Шукайте існуючі issues**: Чи вже повідомлено про це?
|
||
- **Перевірте документацію**: Чи є настанови щодо безпечного використання?
|
||
- **Тестуйте виправлення**: Чи працює ваше запропоноване виправлення?
|
||
|
||
### При повідомленні
|
||
|
||
- **Будьте конкретними**: Вказуйте точні шляхи файлів та номери рядків
|
||
- **Додавайте контекст**: Чому це проблема безпеки?
|
||
- **Покажіть вплив**: Що міг би зробити зловмисник?
|
||
- **Надайте кроки**: Як ми можемо відтворити?
|
||
- **Запропонуйте виправлення**: Як би ви це виправили?
|
||
|
||
### Після повідомлення
|
||
|
||
- **Будьте терплячими**: Ми маємо обмежені ресурси
|
||
- **Будьте на зв'язку**: Відповідайте на подальші запитання швидко
|
||
- **Зберігайте конфіденційність**: Не розголошуйте публічно до виправлення
|
||
- **Дотримуйтесь координації**: Слідуйте нашому графіку розкриття
|
||
|
||
## Заголовки безпеки та конфігурація
|
||
|
||
### Безпека репозиторію
|
||
|
||
- **Захист гілок**: Основна гілка потребує 2 схвалень для змін
|
||
- **Статусні перевірки**: Усі CI/CD перевірки повинні пройти
|
||
- **CODEOWNERS**: Призначені рецензенти для ключових файлів
|
||
- **Підписані коміти**: Рекомендовано для контриб'юторів
|
||
|
||
### Безпека розробки
|
||
|
||
```bash
|
||
# Install pre-commit hooks
|
||
pre-commit install
|
||
|
||
# Run security scans locally
|
||
bandit -c pyproject.toml -r scripts/
|
||
mypy scripts/ --ignore-missing-imports
|
||
ruff check scripts/
|
||
```
|
||
|
||
### Безпека залежностей
|
||
|
||
```bash
|
||
# Check for known vulnerabilities
|
||
pip install safety
|
||
safety check
|
||
|
||
# Or use pip-audit
|
||
pip install pip-audit
|
||
pip-audit
|
||
```
|
||
|
||
## Настанови безпеки для контриб'юторів
|
||
|
||
### При написанні прикладів
|
||
|
||
1. **Ніколи не захардкоджуйте секрети**
|
||
```python
|
||
# ❌ Bad
|
||
api_key = "sk-1234567890"
|
||
|
||
# ✅ Good
|
||
api_key = os.getenv("API_KEY")
|
||
```
|
||
|
||
2. **Попереджайте про наслідки безпеки**
|
||
```markdown
|
||
⚠️ **Security Note**: Never commit `.env` files to git.
|
||
Add to `.gitignore` immediately.
|
||
```
|
||
|
||
3. **Використовуйте безпечні значення за замовчуванням**
|
||
- Увімкнення автентифікації за замовчуванням
|
||
- Використання HTTPS де можливо
|
||
- Валідація та санітизація введення
|
||
- Використання параметризованих запитів
|
||
|
||
4. **Документуйте міркування безпеки**
|
||
- Пояснюйте, чому безпека важлива
|
||
- Показуйте безпечні vs. небезпечні патерни
|
||
- Посилайтесь на авторитетні джерела
|
||
- Розміщуйте попередження на видному місці
|
||
|
||
### При перегляді внесків
|
||
|
||
1. **Перевіряйте на відкриті секрети**
|
||
- Сканування на поширені патерни (api_key=, password=)
|
||
- Перегляд конфігураційних файлів
|
||
- Перевірка змінних оточення
|
||
|
||
2. **Перевіряйте безпечні практики кодування**
|
||
- Відсутність захардкоджених облікових даних
|
||
- Правильна валідація введення
|
||
- Безпечна автентифікація/авторизація
|
||
- Безпечна робота з файлами
|
||
|
||
3. **Тестуйте наслідки безпеки**
|
||
- Чи можна це зловживати?
|
||
- Який найгірший сценарій?
|
||
- Чи є граничні випадки?
|
||
|
||
## Ресурси безпеки
|
||
|
||
### Офіційні стандарти
|
||
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
|
||
- [CWE Top 25](https://cwe.mitre.org/top25/)
|
||
- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)
|
||
|
||
### Безпека Python
|
||
- [Python Security Advisories](https://www.python.org/dev/security/)
|
||
- [PyPI Security](https://pypi.org/help/#security)
|
||
- [Bandit Documentation](https://bandit.readthedocs.io/)
|
||
|
||
### Управління залежностями
|
||
- [OWASP Dependency Check](https://owasp.org/www-project-dependency-check/)
|
||
- [GitHub Security Alerts](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)
|
||
|
||
### Загальна безпека
|
||
- [Anthropic Security](https://www.anthropic.com/)
|
||
- [GitHub Security Best Practices](https://docs.github.com/en/code-security)
|
||
|
||
## Архів рекомендацій безпеки
|
||
|
||
Минулі рекомендації безпеки доступні на вкладці [GitHub Security Advisories](https://github.com/luongnv89/claude-howto/security/advisories).
|
||
|
||
## Контакти
|
||
|
||
Для запитань, пов'язаних з безпекою, або для обговорення практик безпеки:
|
||
|
||
1. **Приватне повідомлення про безпеку**: Використовуйте приватне повідомлення про вразливості GitHub
|
||
2. **Загальні питання безпеки**: Відкрийте обговорення з тегом `[SECURITY]`
|
||
3. **Відгуки про політику безпеки**: Створіть issue з міткою `security`
|
||
|
||
## Подяки
|
||
|
||
Ми цінуємо дослідників безпеки та учасників спільноти, які допомагають підтримувати безпеку цього проєкту. Контриб'юторів, які відповідально повідомляють про вразливості, буде відзначено в наших рекомендаціях безпеки (якщо вони не бажають анонімності).
|
||
|
||
## Оновлення політики
|
||
|
||
Ця політика безпеки переглядається та оновлюється:
|
||
- При виявленні нових вразливостей
|
||
- При розвитку найкращих практик безпеки
|
||
- При зміні обсягу проєкту
|
||
- Щорічно як мінімум
|
||
|
||
**Останнє оновлення**: Квітень 2026
|
||
**Наступний перегляд**: Квітень 2027
|
||
|
||
---
|
||
|
||
Дякуємо за допомогу в забезпеченні безпеки Claude How To! 🔒
|