Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
wrongsecrets — Уязвимое приложение с примерами, показывающими, как не использовать секреты | Kitploit
Инструменты/GitHubGitHub/owasp/wrongsecrets
Безопасность контейнеровАнализ уязвимостейCTFБезопасность облачных средDevSecOpsОбнаружение СекретовОбучение и ОбразованиеЛаборатории и Практика
GitHubowasp/wrongsecrets

wrongsecrets

Уязвимое приложение с примерами, показывающими, как не использовать секреты

Репозиторий
1.5k5993 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

OWASP WrongSecrets

Tweet

Java checkstyle and testing Pre-commit Terraform FMT CodeQL Dead Link Checker Javadoc and Swaggerdoc generator Test Heroku with cypress

Test minikube script (k8s) Test minikube script (k8s&vault) Docker container test Test container on podman DAST with ZAP PR Preview and Visual Diff Build Preview Visual Diff

OWASP Production Project OpenSSF Best Practices Discussions Docker pulls

Добро пожаловать в игру OWASP WrongSecrets! Игра наполнена реальными примерами того, как НЕ следует хранить секреты в вашем программном обеспечении. Каждый из этих примеров представлен в виде задания, которое нужно решить с помощью различных инструментов и техник. Решение этих заданий поможет вам распознавать распространённые ошибки и задуматься о собственной стратегии управления секретами.

Сможете ли вы решить все 67 заданий?

Попробуйте некоторые из них в нашей демонстрационной среде на Heroku.

Хотите попробовать другие задания? Прочитайте инструкции по их настройке ниже.

🚀 Быстрый старт

Впервые в WrongSecrets? Начните здесь:

  1. Сначала попробуйте онлайн: Посетите нашу демо-среду на Heroku, чтобы ознакомиться с заданиями
  2. Запустите локально: Используйте Docker для полного опыта со всеми заданиями: ```bash docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:latest-no-vault
    root@kitploit:~

Затем откройте http://localhost:8080 3. Хотите заглянуть в будущее? Попробуйте наш передовой master-контейнер с последними возможностями: ```bash docker run -p 8080:8080 -p 8090:8090 ghcr.io/owasp/wrongsecrets/wrongsecrets-master:latest-master

root@kitploit:~
⚠️ *Примечание: Это разрабатываемая версия, которая может быть нестабильной*
4. **Продвинутая настройка**: Для облачных задач и упражнений с Kubernetes см. подробные инструкции ниже

**Что вы узнаете:**
- Распространённые ошибки управления секретами
- Как выявлять раскрытые учётные данные
- Лучшие практики защиты секретов
- Инструменты и методы обнаружения секретов

**Как это работает:**
Этот репозиторий содержит **намеренно уязвимый код и файлы конфигурации** с реальными и фиктивными секретами, спрятанными по всей кодовой базе. Вы будете просматривать исходный код, файлы конфигурации, контейнеры Docker и облачные развёртывания, чтобы обнаружить эти секреты. Каждое задание учит вас различным способам, которыми секреты могут быть случайно раскрыты в реальных приложениях.

![screenshotOfChallenge1](https://assets.kitploit.com/production/public/readmes/6937/ad02ece4104616d09ac232d1423d84111048b3437c4439ebf44172a60c673546.png)

## 📋 Предварительные требования

**Для базового использования:**
- Веб-браузер
- Docker (для локальной настройки) – [Установить здесь](https://docs.docker.com/get-docker/)

**Для продвинутых настроек:**
- Kubernetes/Minikube – [Установить здесь](https://minikube.sigs.k8s.io/docs/start/)
- Учётная запись в облаке (AWS/GCP/Azure) для облачных задач
- Знакомство с командной строкой

<a href="https://github.com/vshymanskyy/StandWithUkraine/blob/main/README.md"><img src="https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-no-action.svg" /></a>

## Содержание

### 🎯 Начало работы
-   [Быстрый старт](#-quick-start)
-   [Предварительные требования](#-prerequisites)
-   [Поддержка](#support)

### 🐳 Варианты развёртывания
-   [Базовые упражнения с Docker](#basic-docker-exercises)
 -   [Запуск на Heroku](#running-these-on-heroku)
 -   [Запуск на Render.io](#running-these-on-renderio)
 -   [Запуск на Railway](#running-these-on-railway)
-   [Базовое упражнение K8s](#basic-k8s-exercise)
 -   [На основе Minikube](#minikube-based)
 -   [На основе k8s](#k8s-based)
 -   [Упражнения с Vault в Minikube](#vault-exercises-with-minikube)

### ☁️ Облачные задачи
-   [Облачные задачи](#cloud-challenges)
 -   [Запуск WrongSecrets в AWS](#running-wrongsecrets-in-aws)
 -   [Запуск WrongSecrets в GCP](#running-wrongsecrets-in-gcp)
 -   [Запуск WrongSecrets в Azure](#running-wrongsecrets-in-azure)
 -   [Запуск Challenge15 только в своём облаке](#running-challenge15-in-your-own-cloud-only)

### 🎮 Продвинутое использование
-   [Хотите играть без подсказок?](#do-you-want-to-play-without-guidance-or-spoils)
-   [CTF](#ctf)
 -   [Поддержка CTFD](#ctfd-support)
 -   [Поддержка FBCTF](#fbctf-support-experimental)
-   [Использование OWASP WrongSecrets как эталон для обнаружения секретов](#use-owasp-wrongsecrets-as-a-secret-detection-benchmark)

### 👨‍💻 Разработка и вклад
-   [Заметки по разработке](#notes-on-development)
-   [Контрольный список перехода на Spring Boot 4](https://github.com/owasp/wrongsecrets/blob/HEAD/docs/SPRING_BOOT_4_ADOPTION_CHECKLIST.md)
 -   [Управление зависимостями](#dependency-management)
 -   [Запуск проекта в IntelliJ IDEA](#get-the-project-started-in-intellij-idea)
 -   [Автоматическая перезагрузка во время разработки](#automatic-reload-during-development)
 -   [Как добавить задачу](#how-to-add-a-challenge)
 -   [Локальное тестирование](#local-testing)
 -   [Автоматизированное локальное тестирование](#Local-automated-testing)
-   [Хотите отключить задачи в своём релизе?](#want-to-disable-challenges-in-your-own-release)

### 📚 Ресурсы и сообщество
-   [Особая благодарность и участники](#special-thanks--contributors)
-   [Спонсорство](#sponsorships)
-   [Требуется помощь](#help-wanted)
-   [Дополнительное чтение по управлению секретами](#further-reading-on-secrets-management)

## Поддержка

Нужна поддержка? Свяжитесь с нами
через [OWASP Slack](https://owasp.slack.com/archives/C02KQ7D9XHR), для регистрации перейдите [сюда](https://owasp.org/slack/invite),
создайте [PR](https://github.com/OWASP/wrongsecrets/pulls), заведите
[issue](https://github.com/OWASP/wrongsecrets/issues) или
используйте [обсуждения](https://github.com/OWASP/wrongsecrets/discussions). Обратите внимание, что это проект волонтёров OWASP,
поэтому ответ может занять некоторое время.

Copyright (c) 2020-2025 Jeroen Willemsen и участники WrongSecrets.

## 🛤️ Выберите свой путь

Не уверены, какая настройка вам подходит? Вот краткое руководство:

| **Я хочу...** | **Рекомендуемая настройка** | **Доступные задачи** |
|------------------|----------------------|--------------------------|
| Попробовать быстро онлайн | [Контейнер, запущенный на Heroku](https://www.wrongsecrets.com/) | Базовые задачи (0-4, 8, 12-32, 34-43, 49-52, 54-66) |
| Запустить локально с Docker | [Базовый Docker](#basic-docker-exercises) | То же, что и выше, но на вашей машине |
| Изучить секреты Kubernetes | [Настройка K8s/Minikube](#basic-k8s-exercise) | Задачи Kubernetes (0-6, 8, 12-43, 48-66) |
| Практиковаться с облачными секретами | [Облачные задачи](#cloud-challenges) | Все задачи (0-66) |
| Провести воркшоп/CTF | [Настройка CTF](#ctf) | Настраиваемые наборы задач |
| Внести вклад в проект | [Настройка для разработки](#notes-on-development) | Все задачи + инструменты разработки |

## Базовые упражнения с Docker

_Можно использовать для задач 0-4, 8, 12-32, 34-43, 49-52, 54-66_

Для базовых упражнений с Docker потребуется:

-   Docker [Установить отсюда](https://docs.docker.com/get-docker/)
-   Браузер, способный отображать HTML

Установить можно так:```bash
docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:latest-no-vault

🚀 Хотите попробовать самую свежую версию?

Если вы хотите увидеть, что выйдет в следующем релизе, вы можете использовать наш автоматически собираемый мастер-контейнер:```bash docker run -p 8080:8080 -p 8090:8090 ghcr.io/owasp/wrongsecrets/wrongsecrets-master:latest-master

root@kitploit:~
⚠️ **Предупреждение**: Это разработочная версия, собранная из последней ветки master, и может содержать экспериментальные функции или нестабильность.

**📝 Примечание по портам:**
- Порт **8080**: Основное приложение (задания 0-66)
- Порт **8090**: MCP-сервер (требуется для Задания 60)

**📝 Примечание по Заданию 62 (Google Drive MCP):**
Для Задания 62 требуется настроить Google Service Account для полной функциональности. См. [docs/CHALLENGE62_GOOGLE_DRIVE_SETUP.md](https://github.com/owasp/wrongsecrets/blob/HEAD/docs/CHALLENGE62_GOOGLE_DRIVE_SETUP.md) для инструкций по настройке. Без настройки задание будет показывать замещающее сообщение.

Теперь вы можете попробовать найти секреты, решая задания, представленные по ссылкам ниже
<details>
    <summary>все ссылки для docker-заданий (нажмите треугольник, чтобы открыть блок).
    </summary>

-   [localhost:8080/challenge/challenge-0](http://localhost:8080/challenge/challenge-0)
-   [localhost:8080/challenge/challenge-1](http://localhost:8080/challenge/challenge-1)
-   [localhost:8080/challenge/challenge-2](http://localhost:8080/challenge/challenge-2)
-   [localhost:8080/challenge/challenge-3](http://localhost:8080/challenge/challenge-3)
-   [localhost:8080/challenge/challenge-4](http://localhost:8080/challenge/challenge-4)
-   [localhost:8080/challenge/challenge-8](http://localhost:8080/challenge/challenge-8)
-   [localhost:8080/challenge/challenge-12](http://localhost:8080/challenge/challenge-12)
-   [localhost:8080/challenge/challenge-13](http://localhost:8080/challenge/challenge-13)
-   [localhost:8080/challenge/challenge-14](http://localhost:8080/challenge/challenge-14)
-   [localhost:8080/challenge/challenge-15](http://localhost:8080/challenge/challenge-15)
-   [localhost:8080/challenge/challenge-16](http://localhost:8080/challenge/challenge-16)
-   [localhost:8080/challenge/challenge-17](http://localhost:8080/challenge/challenge-17)
-   [localhost:8080/challenge/challenge-18](http://localhost:8080/challenge/challenge-18)
-   [localhost:8080/challenge/challenge-19](http://localhost:8080/challenge/challenge-19)
-   [localhost:8080/challenge/challenge-20](http://localhost:8080/challenge/challenge-20)
-   [localhost:8080/challenge/challenge-21](http://localhost:8080/challenge/challenge-21)
-   [localhost:8080/challenge/challenge-22](http://localhost:8080/challenge/challenge-22)
-   [localhost:8080/challenge/challenge-23](http://localhost:8080/challenge/challenge-23)
-   [localhost:8080/challenge/challenge-24](http://localhost:8080/challenge/challenge-24)
-   [localhost:8080/challenge/challenge-25](http://localhost:8080/challenge/challenge-25)
-   [localhost:8080/challenge/challenge-26](http://localhost:8080/challenge/challenge-26)
-   [localhost:8080/challenge/challenge-27](http://localhost:8080/challenge/challenge-27)
-   [localhost:8080/challenge/challenge-28](http://localhost:8080/challenge/challenge-28)
-   [localhost:8080/challenge/challenge-29](http://localhost:8080/challenge/challenge-29)
-   [localhost:8080/challenge/challenge-30](http://localhost:8080/challenge/challenge-30)
-   [localhost:8080/challenge/challenge-31](http://localhost:8080/challenge/challenge-31)
-   [localhost:8080/challenge/challenge-32](http://localhost:8080/challenge/challenge-32)
-   [localhost:8080/challenge/challenge-34](http://localhost:8080/challenge/challenge-34)
-   [localhost:8080/challenge/challenge-35](http://localhost:8080/challenge/challenge-35)
-   [localhost:8080/challenge/challenge-36](http://localhost:8080/challenge/challenge-36)
-   [localhost:8080/challenge/challenge-37](http://localhost:8080/challenge/challenge-37)
-   [localhost:8080/challenge/challenge-38](http://localhost:8080/challenge/challenge-38)
-   [localhost:8080/challenge/challenge-39](http://localhost:8080/challenge/challenge-39)
-   [localhost:8080/challenge/challenge-40](http://localhost:8080/challenge/challenge-40)
-   [localhost:8080/challenge/challenge-41](http://localhost:8080/challenge/challenge-41)
-   [localhost:8080/challenge/challenge-42](http://localhost:8080/challenge/challenge-42)
-   [localhost:8080/challenge/challenge-43](http://localhost:8080/challenge/challenge-43)
-   [localhost:8080/challenge/challenge-49](http://localhost:8080/challenge/challenge-49)
-   [localhost:8080/challenge/challenge-50](http://localhost:8080/challenge/challenge-50)
-   [localhost:8080/challenge/challenge-51](http://localhost:8080/challenge/challenge-51)
-   [localhost:8080/challenge/challenge-52](http://localhost:8080/challenge/challenge-52)
-   [localhost:8080/challenge/challenge-54](http://localhost:8080/challenge/challenge-54)
-   [localhost:8080/challenge/challenge-55](http://localhost:8080/challenge/challenge-55)
-   [localhost:8080/challenge/challenge-56](http://localhost:8080/challenge/challenge-56)
-   [localhost:8080/challenge/challenge-57](http://localhost:8080/challenge/challenge-57)
-   [localhost:8080/challenge/challenge-58](http://localhost:8080/challenge/challenge-58)
-   [localhost:8080/challenge/challenge-59](http://localhost:8080/challenge/challenge-59)
-   [localhost:8080/challenge/challenge-60](http://localhost:8080/challenge/challenge-60)
-   [localhost:8080/challenge/challenge-61](http://localhost:8080/challenge/challenge-61)
-   [localhost:8080/challenge/challenge-62](http://localhost:8080/challenge/challenge-62)
-   [localhost:8080/challenge/challenge-63](http://localhost:8080/challenge/challenge-63)
-   [localhost:8080/challenge/challenge-64](http://localhost:8080/challenge/challenge-64)
-   [localhost:8080/challenge/challenge-65](http://localhost:8080/challenge/challenge-65)
-   [localhost:8080/challenge/challenge-66](http://localhost:8080/challenge/challenge-66)
</details>

Обратите внимание, что эти задания пока очень простые, и их объяснения тоже. Не стесняйтесь создавать PR, чтобы улучшить их ;-).

### Запуск на Heroku

Вы также можете протестировать их на [https://wrongsecrets.herokuapp.com/](https://wrongsecrets.herokuapp.com/)! Ребята из Heroku предоставили нам отличный пакет поддержки open source, который позволяет запускать приложение там бесплатно, и оно почти всегда работает. Тем не менее, пожалуйста, не занимайтесь фаззингом и/или не пытайтесь положить его: вы испортите удовольствие другим, кто хочет попробовать.
Используйте [эту ссылку](https://wrongsecrets.herokuapp.com/), чтобы перейти к нашей размещённой версии приложения. Если вы хотите разместить его на Heroku самостоятельно (например, для проведения тренинга), вы можете сделать это, нажав [эту ссылку](https://heroku.com/deploy?template=https://github.com/OWASP/wrongsecrets/tree/master). Имейте в виду, что это повлечёт расходы, за которые этот проект и/или его сопровождающие не могут нести ответственность.

### Запуск на Render.io
*статус: экспериментальный*

Вы можете протестировать их на [https://wrongsecrets.onrender.com/](https://wrongsecrets.onrender.com/). Пожалуйста, учтите, что мы работаем на бесплатном уровне, мы не можем давать никаких гарантий. Пожалуйста, не занимайтесь фаззингом и/или не пытайтесь положить его: вы испортите удовольствие другим, кто хочет попробовать.
Хотите развернуть сами с помощью Render? Нажмите кнопку ниже:

[![Развернуть на Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/OWASP/wrongsecrets)

### Запуск на Railway
*статус: поддерживается [alphasec.io](https://github.com/alphasecio)*

Если вы хотите разместить WrongSecrets на Railway, вы можете это сделать, развернув [этот шаблон в один клик](https://railway.com/deploy/McqJ_j?referralCode=I07F1). Railway больше не предлагает всегда бесплатный тариф, но бесплатного пробного периода достаточно, чтобы протестировать его, прежде чем решиться на обновление. Если вам нужно пошаговое руководство, см. [эту запись в блоге](https://alphasec.io/test-your-secret-management-skills-with-owasp-wrongsecrets/).

[![Развернуть на Railway](https://railway.com/button.svg)](https://railway.com/deploy/McqJ_j?referralCode=I07F1j)

## Базовое упражнение с K8s
_Может использоваться для заданий 0-6, 8, 12-43, 48-66_

### На основе Minikube

Убедитесь, что у вас установлено следующее:

-   Docker [Установить отсюда](https://docs.docker.com/get-docker/)
-   Minikube [Установить отсюда](https://minikube.sigs.k8s.io/docs/start/)

Текущая настройка K8S основана на использовании Minikube для локального развлечения. Вы можете использовать команды ниже из корня проекта:```bash
    minikube start
    kubectl apply -f k8s/secrets-config.yml
    kubectl apply -f k8s/secrets-secret.yml
    kubectl apply -f k8s/challenge33.yml
    kubectl apply -f k8s/challenge53/secret-challenge53.yml
    echo "Setting up the bitnami sealed secret controler"
    kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.0/controller.yaml
    kubectl apply -f k8s/sealed-secret-controller.yaml
    kubectl apply -f k8s/main.key
    kubectl delete pod -n kube-system -l name=sealed-secrets-controller
    kubectl create -f k8s/sealed-challenge48.json
    echo "finishing up the sealed secret controler part"
    wait 10 #or check whether secret48 is there
    kubectl apply -f k8s/secret-challenge-deployment.yml
    while [[ $(kubectl get pods -l app=secret-challenge -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "waiting for secret-challenge" && sleep 2; done
    kubectl expose deployment secret-challenge --type=LoadBalancer --port=8080
    minikube service secret-challenge

В качестве альтернативы вы можете сделать :```bash ./k8s-vault-minikube-start.sh

root@kitploit:~
теперь вы можете использовать предоставленный IP-адрес и порт, чтобы продолжить взаимодействие с вариантом K8s (вместо localhost).

-   [localhost:8080/challenge/challenge-5](http://localhost:8080/challenge/challenge-5)
-   [localhost:8080/challenge/challenge-6](http://localhost:8080/challenge/challenge-6)
-   [localhost:8080/challenge/challenge-33](http://localhost:8080/challenge/challenge-33)
-   [localhost:8080/challenge/challenge-48](http://localhost:8080/challenge/challenge-48)
-   [localhost:8080/challenge/challenge-53](http://localhost:8080/challenge/challenge-53)

### на основе k8s

Хотите запустить vanilla на своем собственном k8s? Используйте команды ниже:```bash
    kubectl apply -f k8s/secrets-config.yml
    kubectl apply -f k8s/secrets-secret.yml
    echo "Setting up the bitnami sealed secret controler"
    kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.0/controller.yaml
    kubectl apply -f k8s/sealed-secret-controller.yaml
    kubectl apply -f k8s/main.key
    kubectl delete pod -n kube-system -l name=sealed-secrets-controller
    kubectl create -f k8s/sealed-challenge48.json
    echo "finishing up the sealed secret controler part"
    wait 10 #or check whether secret48 is there
    kubectl apply -f k8s/challenge33.yml
    kubectl apply -f k8s/secret-challenge-deployment.yml
    while [[ $(kubectl get pods -l app=secret-challenge -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "waiting for secret-challenge" && sleep 2; done
    kubectl port-forward \
        $(kubectl get pod -l app=secret-challenge -o jsonpath="{.items[0].metadata.name}") \
        8080:8080

теперь вы можете использовать предоставленный IP-адрес и порт, чтобы продолжить работу с вариантом K8s (вместо localhost).

  • localhost:8080/challenge/challenge-5
  • localhost:8080/challenge/challenge-6
  • localhost:8080/challenge/challenge-33
  • localhost:8080/challenge/challenge-48

Упражнения Vault с minikube

Можно использовать для испытаний 0–8, 12–66 Убедитесь, что у вас установлено следующее:

  • minikube с docker (или закомментируйте строку 8 и работайте в своей собственной настройке k8s),
  • docker,
  • helm Установите отсюда,
  • kubectl Установите отсюда,
  • jq Установите отсюда,
  • vault Установите отсюда,
  • grep, cat и sed

Запустите ./k8s-vault-minikube-start.sh. Когда скрипт завершится, испытания будут ждать вас по адресу http://localhost:8080. Это позволит вам запустить испытания 0–8, 12–66.

Если вы остановили скрипт k8s-vault-minikube-start.sh и хотите возобновить перенаправление портов, выполните: k8s-vault-minikube-resume.sh. Это связано с тем, что если вы снова запустите стартовый скрипт, он заменит секрет в vault, но не обновит приложение secret-challenge новым секретом.

Облачные испытания

Можно использовать для испытаний 0–66

ПРОЧТИТЕ ЭТО: Учитывая, что приведенные ниже упражнения содержат упражнения по повышению привилегий IAM, никогда не запускайте их в учётной записи, связанной с вашей производственной средой или способной повлиять на ресурсы, выходящие за рамки одной учётной записи.

Запуск WrongSecrets в AWS

Следуйте шагам, описанным в README в подпапке AWS.

Запуск WrongSecrets в GCP

Следуйте шагам, описанным в README в подпапке GCP.

Запуск WrongSecrets в Azure

Следуйте шагам, описанным в README в подпапке Azure.

Запуск Challenge15 только в вашем облаке

Если вы хотите добавить собственные Canarytokens для вашего облачного развертывания, сделайте следующее:

  1. Форкните проект.
  2. Убедитесь, что вы используете скрипты GCP ingress или AWS ingress для генерации ingress для вашего проекта.
  3. Перейдите на canarytokens.org и выберите AWS Keys, в поле URL веб-хука добавьте <your-domain-created-at-step1>/canaries/tokencallback.
  4. Зашифруйте полученные учётные данные так, чтобы Challenge15 мог снова их расшифровать.
  5. Зафиксируйте незашифрованные и зашифрованные материалы в Git, а затем сделайте ещё один коммит без расшифрованных материалов.
  6. Адаптируйте подсказки для Challenge 15 в вашем форке, чтобы они указывали на ваш форк.
  7. Создайте контейнер и отправьте его в ваш реестр.
  8. Переопределите файлы определений K8s для AWS или GCP.

Хотите играть без подсказок и спойлеров?

Каждое испытание имеет кнопки Show hints и What's wrong?. Эти кнопки помогают упростить испытания и дают объяснения читателю. Однако объяснения могут испортить удовольствие, если вы хотите выполнять это как хакерское упражнение. Поэтому вы можете управлять ими, переопределив следующие настройки в вашем окружении:

  • hints_enabled=false отключит кнопку Show hints.
  • reason_enabled=false отключит кнопку объяснения What's wrong?.
  • spoiling_enabled=false отключит конечную точку /spoil/challenge-x (где x — короткое имя испытания).

Включение Swaggerdocs и UI

Вы можете включить документацию Swagger и пользовательский интерфейс Swagger, переопределив переменные SPRINGDOC_UI и SPRINGDOC_DOC при запуске Docker-контейнера.

Особая благодарность и участники

Руководители:

  • Ben de Haan @bendehaan
  • Jeroen Willemsen @commjoen

Ведущие участники:

  • Jannik Hollenbach @J12934
  • Puneeth Y @puneeth072003
  • Joss Sparkes @RemakingEden

Участники:

  • Nanne Baars @nbaars
  • Marcin Nowak @drnow4u
  • Rodolfo Neves @roddas
  • Osama Magdy @osamamagdy
  • Pastekitoo @Pastekitoo
  • Shubham Patel @Shubham-Patel07
  • za @za
  • Divyanshu Dev @Novice-expert
  • Tibor Hercz @tiborhercz
  • Adarsh A @adarsh-a-tw
  • Chris Elbring Jr. @neatzsche
  • Diamond Rivero @diamant3
  • Norbert Wolniak @nwolniak
  • Robert Felber @rfelber
  • Filip Chyla @fchyla
  • Vineeth Jagadeesh @djvinnie
  • Dmitry Litosh @Dlitosh
  • Mahaputra Ilham Awal @mahaputrailhamawal
  • Turjo Chowdhury @turjoc120
  • SndR @SndR85
  • alphasec @alphasecio
  • CaduRoriz @CaduRoriz
  • Josh Grossman @tghosth
  • Madhu Akula @madhuakula

Тестировщики:

  • Dave van Stein @davevs
  • Marcin Nowak @drnow4u
  • Marc Chang Sing Pang @mchangsp
  • Vineeth Jagadeesh @djvinnie

Особая благодарность:

  • Madhu Akula @madhuakula @madhuakula
  • Nanne Baars @nbaars @nbaars
  • Bjorn Kimminich @bkimminich
  • Dan Gora @devsecops
  • Xiaolu Dai @saragluna
  • Jonathan Giles @jonathanGiles

Спонсорство

Мы хотели бы поблагодарить следующие организации за помощь:

gitguardian_logo.png

GitGuardian за их спонсорство, которое позволяет нам оплачивать счета за наши облачные аккаунты.

JetBrains logo.

Jetbrains за предоставление лицензии на экземпляр Intellij IDEA Ultimate edition для руководителей проекта. Без этого мы не смогли бы так быстро разрабатывать!

1password_logo.png

1Password за предоставление лицензии с открытым исходным кодом на 1Password для тестового стенда обнаружения секретов.

AWS Open Source

AWS за предоставление кредитов AWS Open Source, которые мы используем для тестирования нашего проекта и настройки Wrongsecrets CTF Party на AWS.

Нужна помощь

Вы можете помочь нам следующими способами:

  • Поставьте звезду
  • Поделитесь этим приложением с другими
  • Конечно, мы всегда можем воспользоваться вашей помощью, чтобы добавить больше вариантов «неправильно» настроенных секретов для повышения осведомленности! Мы будем рады помощи с другими облачными провайдерами, например Alibaba или Tencent cloud. Чего-то не хватает, кроме облачного провайдера? Создайте issue или PR! Подробнее см. в нашем руководстве по участию. Участники будут перечислены в релизах, в разделе «Особая благодарность и участники» и в веб-приложении.

Использование OWASP WrongSecrets как эталона для обнаружения секретов

Поскольку появляется множество инструментов для обнаружения секретов как для Docker, так и для Git, мы создаём тестовый стенд для них. Хотите узнать, обнаруживает ли ваш инструмент всё? Мы будем отслеживать встроенные секреты в этом issue и у нас есть ветка, в которую мы добавляем дополнительные секреты для обнаружения вашим инструментом. Ветка будет содержать скрипт генерации Docker-контейнера, с помощью которого вы сможете в конечном итоге протестировать сканирование секретов вашего контейнера.

Автоматическое сравнение сканеров секретов

Теперь мы предоставляем автоматизированный рабочий процесс GitHub Actions, который сравнивает несколько инструментов сканирования секретов с кодовой базой WrongSecrets. Рабочий процесс сравнения сканеров тестирует 7 различных инструментов:

  • TruffleHog — сканер секретов на основе Docker
  • git-secrets — сканер git-хуков от AWS Labs
  • gitleaks — высокопроизводительный сканер на Go
  • detect-secrets — корпоративный сканер от Yelp
  • gittyleaks — детектор шаблонов на Python
  • whispers — структурированный сканер от Skyscanner
  • trufflehog3 — версия TruffleHog на Python

Рабочий процесс запускается еженедельно и предоставляет таблицу сравнения, показывающую, сколько секретов обнаруживает каждый инструмент, помогая вам понять относительную эффективность различных инструментов сканирования секретов. Подробнее о запуске и интерпретации результатов см. в docs/scanner-comparison.md.

CTF

У нас есть 3 способа играть в CTF:

  • Быстрый подход «давайте играть» на основе собственного домена Heroku https://wrongsecrets-ctf.herokuapp.com, который мы задокументировали для вас здесь.
  • Более расширенный подход, описанный в ctf-instructions.md.
  • Полностью настраиваемая конфигурация CTF, где каждый игрок получает собственный виртуальный экземпляр WrongSecrets и виртуальный экземпляр wrongsecrets-desktop, чтобы все могли играть без проблем. Для этого нужно использовать настройку WrongSecrets CTF Party.

Поддержка CTFD

Хотите использовать CTFD для игры в CTF на основе бесплатного экземпляра Heroku wrongsecrets-ctf вместе с CTFD? Вы можете!

ПРИМЕЧАНИЕ: поддержка CTFD теперь работает на основе Juiceshop CTF CLI.

ПРИМЕЧАНИЕ II: https://wrongsecrets-ctf.herokuapp.com (временно недоступен из-за нехватки кредитов OSS) работает на Heroku и имеет ограниченную ёмкость.

Первоначальное создание zip-файла для CTFD требует однократного посещения https://wrongsecrets-ctf.herokuapp.com/api/Challenges перед выполнением следующих шагов.

Выполните следующие шаги:```shell npm install -g [email protected] juice-shop-ctf #choose ctfd and https://wrongsecrets-ctf.herokuapp.com as domain. No trailing slash! The key is 'TRwzkRJnHOTckssAeyJbysWgP!Qc2T', feel free to enable hints. docker run -p 8001:8000 -it ctfd/ctfd:3.7.4

root@kitploit:~
> **Примечание:** Подсказки могут быть сгенерированы только если экземпляр WrongSecrets имеет включенные подсказки (`HINTS_ENABLED=true`). Экземпляр Heroku CTF ([https://wrongsecrets-ctf.herokuapp.com](https://wrongsecrets-ctf.herokuapp.com)) работает с `HINTS_ENABLED=false`, поэтому выбор «Бесплатные подсказки» или «Платные подсказки» приведет к пустому списку подсказок. Чтобы генерировать подсказки, запустите свой собственный экземпляр с `HINTS_ENABLED=true`.

Теперь посетите экземпляр CTFD по адресу [http://localhost:8001](http://localhost:8001) и настройте свой CTF.
Затем используйте функцию административного резервного копирования, чтобы импортировать zip-файл, который вы создали с помощью команды juice-shop-ctf.
Играйте, используя [https://wrongsecrets-ctf.herokuapp.com](https://wrongsecrets-ctf.herokuapp.com)!
Хотите настроить свой собственный? Вы можете! Однако следите, чтобы кто-то не нашел ваш ключ, поэтому защитите его должным образом: убедитесь, что работающий контейнер с актуальным ctf-key не открыт для аудитории, аналогично нашему контейнеру heroku.

## Поддержка FBCTF (Экспериментальная!)

ПРИМЕЧАНИЕ: Поддержка FBCTF является экспериментальной.

Выполните те же шаги, что и с CTFD, только теперь выберите fbctfd и в качестве URL для countrymapping выберите `https://raw.githubusercontent.com/OWASP/wrongsecrets/79a982558016c8ce70948a8106f9a2ee5b5b9eea/config/fbctf.yml`.
Затем следуйте [https://github.com/facebookarchive/fbctf/wiki/Quick-Setup-Guide](https://github.com/facebookarchive/fbctf/wiki/Quick-Setup-Guide) для запуска FBCTF.

## Заметки по разработке

Для разработки на локальной машине используйте профиль `local`: `./mvnw spring-boot:run -Dspring-boot.run.profiles=local,without-vault`

Если вы хотите протестировать работу с vault без K8s: запустите vault локально с```shell
 export SPRING_CLOUD_VAULT_URI='http://127.0.0.1:8200'
 export VAULT_API_ADDR='http://127.0.0.1:8200'
 vault server -dev

и в вашем следующем терминале выполните (с токеном из предыдущих команд):```shell export SPRING_CLOUD_VAULT_URI='http://127.0.0.1:8200' export SPRING_CLOUD_VAULT_TOKEN='' vault token create -id="00000000-0000-0000-0000-000000000000" -policy="root" vault kv put secret/secret-challenge vaultpassword.password="$(openssl rand -base64 16)" vault kv put secret/injected vaultinjected.value="$(openssl rand -base64 16)" vault kv put secret/codified challenge47secret.value="debugvalue"

root@kitploit:~
Теперь используйте профиль `local-vault` для вашей разработки.```shell
./mvnw spring-boot:run -Dspring-boot.run.profiles=local,local-vault

Если вы хотите разрабатывать без экземпляра Vault, дополнительно используйте профиль without-vault для вашей разработки:```shell ./mvnw spring-boot:run -Dspring-boot.run.profiles=local,without-vault

root@kitploit:~
Хотите запушить контейнер? Смотрите скрипт `.github/scripts/docker-create-and-push.sh`, который создает и отправляет все контейнеры. Не забудьте пересобрать приложение перед сборкой контейнера.

Хотите проверить, почему что-то в vault не работает в Kubernetes? Выполните `kubectl exec vault-0 -n vault -- vault audit enable file file_path=stdout`.

### Управление зависимостями

У нас интегрированы CycloneDX и OWASP Dependency-check для проверки зависимостей на уязвимости.
Вы можете использовать OWASP Dependency-check, вызвав `mvn dependency-check:aggregate`, и `mvn cyclonedx:makeBom` для создания SBOM с помощью CycloneDX.

### Конфигурация плагина Dependency-Check Maven

OWASP WrongSecrets использует плагин [`dependency-check-maven`](https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html) для автоматического сканирования зависимостей проекта на известные уязвимости (CVE).

#### Как это работает

- Плагин запускается во время сборки Maven (`./mvnw clean install`) и проверяет все зависимости по публичным базам данных уязвимостей.
- По умолчанию он использует NVD (National Vulnerability Database), а также может использовать OSS Index для дополнительного покрытия.

#### Основные моменты конфигурации

Плагин настраивается в `pom.xml` в разделе `<build><plugins>`:```xml
<plugin>
  <groupId>org.owasp</groupId>
  <artifactId>dependency-check-maven</artifactId>
  <version>${dependency-check-maven.version}</version>
  <configuration>
    <nvdApiKey>...</nvdApiKey>
    <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
    <ossIndexServerId>ossindex</ossIndexServerId>
    <ossIndexAnalyzerEnabled>true</ossIndexAnalyzerEnabled> <!-- SET THIS TO FALSE IF YOU HAVE NO SONATYPE ACCOUNT! -->
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>check</goal>
      </goals>
    </execution>
  </executions>
</plugin>
  • nvdApiKey: API-ключ для доступа к базе данных NVD (рекомендуется для более быстрых и надежных сканирований).
  • ossIndexServerId: Ссылается на учетные данные в вашем settings.xml Maven для OSS Index (см. ниже).
  • ossIndexAnalyzerEnabled: Установите true, чтобы включить сканирование OSS Index. Если вы сталкиваетесь с ошибками аутентификации (401), установите false, чтобы отключить OSS Index.

Аутентификация с OSS Index

Чтобы использовать OSS Index, необходимо добавить свои учетные данные в ваш settings.xml Maven:```xml ossindex YOUR_OSSINDEX_USERNAME YOUR_OSSINDEX_API_TOKEN

root@kitploit:~
Замените `YOUR_OSSINDEX_USERNAME` и `YOUR_OSSINDEX_API_TOKEN` на данные вашей учетной записи OSS Index.

#### Устранение неполадок

- Если вы видите ошибки `401 Unauthorized` для OSS Index, проверьте свои учетные данные или отключите OSS Index, установив `<ossIndexAnalyzerEnabled>false</ossIndexAnalyzerEnabled>` в `pom.xml`.
- Вы всегда можете запустить сборку без OSS Index, если предпочитаете только сканирование на основе NVD.

#### Дополнительная информация

См. [Документацию по плагину Maven Dependency-Check](https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html) для расширенных параметров конфигурации.

### Запуск проекта в IntelliJ IDEA

Требования: убедитесь, что у вас установлены следующие инструменты: [Docker](https://www.docker.com/products/docker-desktop/), [Java25 JDK](https://jdk.java.net/25/), [NodeJS 24](https://nodejs.org/en/download/current) и [IntelliJ IDEA](https://www.jetbrains.com/idea/download).

1. Сделайте форк и клонируйте проект, как описано в [документации](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md).
2. Импортируйте проект в IntelliJ (например, импортируйте как mvn-проект/локальные источники).
3. Перейдите в настройки проекта и убедитесь, что используется Java25 (и что JDK найден).
4. Перейдите в настройки IDE > Language & Frameworks > Lombok и убедитесь, что обработка Lombok включена.
5. Откройте вкладку Maven в вашей IDEA и запустите «Reload All Maven Projects», чтобы система выполнила синхронизацию и загрузила всё. Затем на той же вкладке используйте опцию «install» в рамках жизненного цикла OWASP WrongSecrets, чтобы сгенерировать asciidoc и т. д.
6. Теперь запустите метод `main` в `org.owasp.wrongsecrets.WrongSecretsApplication.java`. Это должно завершиться ошибкой с трассировкой стека.
7. Теперь перейдите в конфигурацию запуска приложения и убедитесь, что у вас активен профиль `without-vault`. Это делается установкой аргументов параметров виртуальной машины: `--server.port=8080 --spring.profiles.active=local,without-vault`. Установите `K8S_ENV=docker` в качестве аргумента окружения.
8. Повторите шаг 6: запустите приложение снова, должно получиться корректно работающее приложение, доступное в браузере по адресу http://localhost:8080.

**Иллюстрированное руководство** по запуску проекта в IntelliJ IDEA доступно в [_Contributing.md_](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md#how-to-get-started-with-the-project-in-intellij-idea).

Не стесняйтесь редактировать и предлагать изменения через pull-запросы. Следуйте нашим рекомендациям из [документации](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md), чтобы ваша работа была принята.

Обратите внимание: официально мы поддерживаем только Linux и MacOS для разработки. Если вы хотите разрабатывать на машине с Windows, используйте WSL2 или виртуальную машину с Linux. Мы включили обнаружение Windows и несколько `exe`-файлов для первого эксперимента, но ищем активных мейнтейнеров для них. Хотите убедиться, что всё работает на Windows? Создавайте PR ;-).

Если после прочтения этого раздела у вас всё ещё нет представления о коде приложения: посмотрите [некоторые руководства по Spring Boot от Baeldung](https://www.baeldung.com/spring-boot).

### Автоматическая перезагрузка во время разработки

Чтобы изменения применялись быстрее, мы добавили `spring-dev-tools` в проект Maven.
Чтобы включить это автоматически в IntelliJ, убедитесь, что:

-   В разделе Compiler -> Automatically build project включено, и
-   В разделе Advanced settings -> Allow auto-make to start even if developed application is currently running включено.

Вы также можете вручную вызвать: Build -> Recompile the file you just changed, это также вызовет принудительную перезагрузку приложения.

### Как добавить задание

Выполните следующие шаги для добавления задания:

1. Сначала убедитесь, что зарегистрирована [Проблема](https://github.com/OWASP/wrongsecrets/issues), для которой действительно требуется задание.
2. Добавьте новое задание в папку `org.owasp.wrongsecrets.challenges`. Убедитесь, что вы добавили пояснение в `src/main/resources/explanations` и сослались на него в вашем новом классе Challenge.
3. Добавьте модульные, интеграционные тесты и тесты UI по мере необходимости, чтобы показать, что ваше задание работает.
4. Не забудьте настроить задание в `src/main/resources/wrong-secrets-configuration.yaml`.
5. Просмотрите [руководство CONTRIBUTING](https://github.com/owasp/wrongsecrets/blob/HEAD/CONTRIBUTING.md), чтобы настроить среду для разработки и писать хорошие сообщения коммитов.

Для получения более подробной информации обратитесь к [_Contributing.md_](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md#how-to-add-a-challenge).

Если вы хотите перенести существующие облачные задания в другое облако: расширьте классы Challenge в пакете `org.owasp.wrongsecrets.challenges.cloud` и убедитесь, что вы добавили требуемый Terraform в отдельную папку с идентификатором облака. Убедитесь, что среда добавлена в `org.owasp.wrongsecrets.RuntimeEnvironment`.
Сотрудничайте с другими участниками проекта, чтобы ваш контейнер работал, и вы могли тестировать в облачной учетной записи.

### Локальное тестирование

Если вы внесли некоторые изменения в кодовую базу или добавили новое задание и хотите точно увидеть, как будет выглядеть контейнер после слияния для тестирования, у нас есть скрипт, который делает это очень простым. Выполните следующие шаги:

1. Убедитесь, что у вас установлен bash и он открыт.
2. Перейдите в .github/scripts.
3. Запустите скрипт docker-create: `bash docker-create.sh`.
   - Примечание: Хотите запустить это в вашем minikube? Сначала выполните `eval $(minikube docker-env)`.
4. Следуйте любым выданным инструкциям, возможно, вам потребуется установить/изменить пакеты.
5. Запустите только что созданный контейнер:
  - для локального запуска: `docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:local-test-no-vault`
  - для запуска в вашем minikube: используйте контейнер `jeroenwillemsen/wrongsecrets:local-test-k8s-vault` в определении вашего развёртывания.
  - для запуска с Vault в вашем minikube: используйте контейнер `jeroenwillemsen/wrongsecrets:local-test-local-vault` в определении вашего развёртывания.

### Локальное автоматизированное тестирование

У нас сейчас есть 2 разных тестовых набора, оба запускаются командой `./mvnw test`.
- Обычный набор JUnit тестов: модульные и интеграционные тесты, расположенные в папке [`test/java`](https://github.com/owasp/wrongsecrets/blob/HEAD/src/test/java) с выводом в каталог по умолчанию target.
- Набор тестов Cypress, интегрированный с помощью JUnit теста, расположенный в папке [`test/e2e`](https://github.com/owasp/wrongsecrets/blob/HEAD/src/test/e2e) с выводом в [`target/test-classes/e2e/cypress/reports/`](https://github.com/owasp/wrongsecrets/blob/HEAD/target/test-classes/e2e/cypress/reports/). Подробнее см. в [cypress readme](https://github.com/owasp/wrongsecrets/blob/HEAD/src/test/e2e/cypress/README.md).

Примечание: Вы можете выполнить полный цикл очистки, сборки и тестирования с помощью `./mvnw clean install`.

## 🔧 Устранение неполадок

### Часто встречающиеся проблемы

**Проблемы с Docker:**
- **Порт уже занят**: Измените привязку портов: `docker run -p 8081:8080 -p 8091:8090 jeroenwillemsen/wrongsecrets:latest-no-vault`
- **Docker не найден**: Убедитесь, что Docker установлен и запущен
- **Отказано в доступе**: В Linux возможно потребуется добавить вашего пользователя в группу docker

**Проблемы с браузером:**
- **Не удаётся получить доступ к localhost:8080**: Проверьте, работает ли контейнер Docker, с помощью `docker ps`
- **Задания не загружаются**: Очистите кеш браузера или попробуйте режим инкогнито

**Проблемы с Kubernetes:**
- **Minikube не запускается**: Попробуйте `minikube delete`, затем `minikube start`
- **Pods зависли в состоянии ожидания**: Проверьте ресурсы с помощью `kubectl describe pod <имя-пода>`

**Нужна помощь?**
- Проверьте наши [GitHub Issues](https://github.com/OWASP/wrongsecrets/issues)
- Присоединяйтесь к нам в [OWASP Slack](https://owasp.slack.com/archives/C02KQ7D9XHR)
- Просмотрите раздел [Поддержка](#support)

## Хотите поиграть, но не имеете возможности установить инструменты?

Если вы хотите пройти задания, но не можете установить инструменты вроде keepass, Radare и т. д., однако вам разрешено запускать контейнеры Docker, попробуйте следующее:```shell
docker run -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock jeroenwillemsen/wrongsecrets-desktop:latest

или используйте что-то более настраиваемое:```shell docker run -d
--name=webtop
--security-opt seccomp=unconfined
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-e SUBFOLDER=/
-e KEYBOARD=en-us-qwerty
-p 3000:3000
-v /var/run/docker.sock:/var/run/docker.sock
--shm-size="2gb"
--restart unless-stopped
jeroenwillemsen/wrongsecrets-desktop:latest

root@kitploit:~
А затем на [http://localhost:3000](http://localhost:3000).

Примечание: будьте осторожны при попытке развернуть контейнер `jeroenwillemsen/wrongsecrets-desktop` в Heroku ;-).

## Docker на macOS с M1 и Colima (Экспериментально!)

ПРИМЕЧАНИЕ: Мы официально не поддерживаем Colima, так как видим, что у Github runner'ов с ним много проблем.

Если вы не можете переключиться на Docker Desktop/Podman и хотите использовать Colima с Apple Silicon M1 для запуска Docker-образа `jeroenwillemsen/wrongsecrets`, попробуйте один из вариантов:

- отключите Colima (`colima stop`)
- измените контекст Docker (`docker --context desktop-linux run -p 8080:8080 jeroenwillemsen/wrongsecrets:latest-no-vault`)
- запустите Colima с 1 CPU (`colima start -m 8 -c 1 --arch x86_64`)

## Хотите отключить испытания в вашем собственном релизе?

Если вы хотите запустить WrongSecrets, но без некоторых испытаний, которые вы не хотите показывать другим, пожалуйста, прочитайте этот раздел.

*_ПРИМЕЧАНИЕ_* Обратите внимание, что мы не предоставляем поддержку вашему форку, если вы следуете описанному ниже процессу. Пожалуйста, понимайте, что лицензия и авторские права оригинального приложения остаются неизменными для вашего форка.

Требования:
- Установите JDK Java 25;
- Имейте учетную запись в реестре, куда вы можете отправить свой вариант контейнера WrongSecrets;

Вот шаги, которые необходимо выполнить для создания собственного релиза WrongSecrets с отключенными определёнными испытаниями:
1. Сделайте форк репозитория.
2. В файле `src/main/resources/wrong-secrets-configuration.yaml` удалите ссылку на испытание, которое больше не хотите иметь в своём форке.
3. В корне проекта выполните `./mvnw clean install`
4. Теперь соберите Docker-образ для вашей целевой платформы:```sh
   docker buildx create --name mybuilder
   docker buildx use mybuilder
   docker buildx build --platform linux/amd64,linux/arm64 -t <registry/container-name>:<yourtag>-no-vault --build-arg "argBasedPassword='this is on your command line'" --build-arg "PORT=8081" --build-arg "argBasedVersion=<yourtag>" --build-arg "spring_profile=without-vault" --push
   docker buildx build --platform linux/amd64,linux/arm64 -t <registry/container-name>:<yourtag>-kubernetes-vault--build-arg "argBasedPassword='this is on your command line'" --build-arg "PORT=8081" --build-arg "argBasedVersion=<yourtag>" --build-arg "spring_profile=kubernetes-vault" --push

Дополнительное чтение по управлению секретами

Хотите узнать больше? Ознакомьтесь с источниками ниже:

  • Блог: 10 советов по управлению секретами
  • OWASP SAMM по управлению секретами
  • Тема обнаружения секретов на Github
  • Шпаргалка OWASP по управлению секретами
  • OpenCRE по управлению секретами
Скачать инструмент
Mike Woudenberg @mikewoudenberg
  • Spyros @northdpole
  • moeedrehman135 @moeedrehman135
  • RubenAtBinx @RubenAtBinx
  • Seershan Mitra @seershan
  • Alex Bender @alex-bender
  • Danny Lloyd @dannylloyd
  • Fern @f3rn0s
  • Rick M @kingthorin
  • Nicolas Humblot @nhumblot
  • Shlomo Zalman Heigh @szh
  • Jeff Tong @Wind010