dso

Проекты, которые следуют приведенным ниже лучшим практикам, могут добровольно и самостоятельно оценить себя и продемонстрировать, что они получили значок Open Source Security Foundation (OpenSSF).

Не существует набора практик, гарантирующего, что у программного обеспечения никогда не будет недостатков или уязвимостей; даже формальные методы могут не помочь, если спецификации или допущения ошибочны. Также не существует какой-либо практики, которая могла бы гарантировать, что проект будет поддерживать здоровое и хорошо функционирующее сообщество разработчиков. Однако следующие хорошие правила могут помочь улучшить результаты проектов. Например, некоторые правила описывают ревью несколькими участниками перед выпуском, что может помочь найти технические уязвимости, которые было бы сложно найти другим способом, и помочь построить доверие и желание дальнейшего взаимодействия между разработчиками из разных компаний. Чтобы получить значок, нужно выполнить все критерии с ключевыми словами "НЕОБХОДИМО"/"ОБЯЗАН"/"НЕДОПУСТИМО", все критерии со словом "СЛЕДУЕТ" либо должны удовлетворяться, либо должно быть приведено обоснование их невыполнения, и все критерии со словом "ЖЕЛАТЕЛЬНО" могут быть удовлетворены ИЛИ неудовлетворены (желательно, чтобы они были хотя бы рассмотрены). Если вы хотите ввести общий комментарий вместо объяснения, почему текущая ситуация приемлема, начните текст с '//' и пробела. Приветствуется обратная связь через сайт на GitHub в виде issues или pull requests. Существует также список рассылки для общих вопросов.

Мы с удовольствием предоставляем информацию на нескольких языках, однако, если есть какой-либо конфликт или несоответствие между переводами, английская версия является авторитетной.
Если это ваш проект, пожалуйста, покажите свой значок на странице проекта! Статус значка выглядит следующим образом: Уровень значка для проекта 12920 - in_progress Вот как вставить его:
Вы можете показать свой статус значка, вставив его в файл с разметкой Markdown:
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/12920/badge)](https://www.bestpractices.dev/projects/12920)
- или HTML:
<a href="https://www.bestpractices.dev/projects/12920"><img src="https://www.bestpractices.dev/projects/12920/badge"></a>


Это критерии уровня Passing. Вы также можете просмотреть критерии уровня Silver или Gold.

Baseline Series: Базовый уровень 1 Базовый Уровень 2 Базовый Уровень 3

        

 Основы 13/13

  • Общая

    Обратите внимание, что другие проекты могут использовать то же имя.

    Zero-persistence secret injection for Docker containers. Eliminates secret storage on disk by retrieving credentials at runtime from AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, or Huawei Cloud CSMS.

    Используйте формат выражения лицензии SPDX; примеры включают «Apache-2.0», «BSD-2-Clause», «BSD-3-Clause», «GPL-2.0+», «LGPL-3.0+», «MIT» и «(BSD-2-Clause OR Ruby)».
    Если используется более одного языка, перечислите их через запятую (пробелы необязательны), и отсортируйте их от наиболее до наименее используемого. Если список длинный, пожалуйста, перечислите по крайней мере три наиболее распространенных. Если языка нет (например, это проект только для документации или только для тестирования), используйте один символ «-» (минус). Для каждого языка используйте общепринятую капитализацию названия, например «JavaScript».
    Common Platform Enumeration (CPE) - это структурированная схема именования для информационных систем, программного обеспечения и пакетов. Она используется в ряде систем и баз данных для отчетов об уязвимостях.

    Phase 1 CNCF Sandbox preparation completed. Fixed critical production blockers, established governance model, published roadmap, and implemented automated quality gates. Application pending CNCF review. All code production-ready and security-hardened.

  • Основная информация на веб-сайте проекта


    Веб-сайт проекта ОБЯЗАН кратко описывать, что делает программное обеспечение (какую проблему решает?). [description_good]
    Описание ОБЯЗАНО быть на языке, который могут понять потенциальные пользователи (например, с минимумом жаргона).

    The project README.md clearly describes DSO as: "Zero-persistence secret injection for Docker containers. Eliminates secret storage on disk by retrieving credentials at runtime from AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, or Huawei Cloud CSMS." The GitHub repository home page explains the problem being solved and key features.



    Веб-сайт проекта ОБЯЗАН предоставлять информацию о том, как: получать и предоставлять обратную связь (например, отчеты об ошибках или улучшения) и вносить свой вклад в программное обеспечение. [interact]

    The project provides:

    1. How to obtain: GitHub releases page and Docker Hub with installation instructions in README.md

    2. How to provide feedback: GitHub issue templates for bugs, features, and security vulnerabilities (/.github/ISSUE_TEMPLATE/)

    3. How to contribute: CONTRIBUTING.md file details the pull request process, code review standards, and governance model. GitHub discussions enabled for community interaction.

    All information is accessible and non-proprietary.



    В описании того, как сделать вклад, НЕОБХОДИМО объяснить процесс внесения вклада (например, используются ли pull request'ы). (Требуется URL) [contribution]
    Мы предполагаем, что проекты на GitHub используют issues и pull requests, если не указано иное. Описание может быть кратким, например, указывать, что проект использует pull requests, issue tracker или сообщения в список рассылки (какой?).

    Non-trivial contribution file in repository: https://github.com/docker-secret-operator/dso/blob/main/CONTRIBUTING.md.



    В информацию о том, как внести вклад, СЛЕДУЕТ включать требования к приемлемым взносам (например, ссылку на любой требуемый стандарт кодирования). (Требуется URL) [contribution_requirements]

    Code standards required: go vet, go fmt, go test -race
    Minimum coverage: 70% overall, 85% critical packages
    Pull request review required per GOVERNANCE.md
    All GitHub Actions CI/CD checks must pass
    Details: https://github.com/docker-secret-operator/dso/blob/main/GOVERNANCE.md


  • Свободная лицензия


    ПО, создаваемое проектом, ОБЯЗАНО быть выпущено под свободной лицензией. [floss_license]
    Свободное ПО (далее СПО) - это программное обеспечение, которое соответствует Определению Открытого ПО (официальный текст на англ.) или Определению Свободного Программного Обеспечения. Примеры таких лицензий включают CC0, MIT, BSD 2-Clause, BSD 3-Clause, Apache 2.0, Меньшая стандартная общественная лицензия GNU (LGPL) и Стандартная общественная лицензия GNU (GPL). Для наших целей это означает, что лицензия ОБЯЗАНА быть: ПО МОЖЕТ одновременно лицензироваться на других условиях (например, приемлема комбинация «GPLv2 или закрытая лицензия»).

    The Apache-2.0 license is approved by the Open Source Initiative (OSI).



    ЖЕЛАТЕЛЬНО, чтобы все лицензии для ПО, создаваемого проектом, были одобрены Open Source Initiative (OSI). [floss_license_osi]
    Для одобрения OSI используется строгий процесс, чтобы определить, какие лицензии соответствуют Открытому ПО.

    The Apache-2.0 license is approved by the Open Source Initiative (OSI).



    Проект ОБЯЗАН публиковать лицензию или лицензии своих результатов в стандартном расположении в своем репозитории исходного кода. (Требуется URL) [license_location]
    Например, в качестве файла верхнего уровня с именем LICENSE или COPYING. Имена файлов лицензии МОГУТ сопровождаться расширением, таким как «.txt» или «.md». Другим соглашением может быть наличие каталога с именем LICENSES, содержащего файлы лицензий; имена этих файлов обычно соответствуют SPDX-идентификатору лицензии, за которым следует соответствующее расширение файла, как описано в спецификации REUSE . Обратите внимание, что этот критерий является обязательным только для репозитория с исходным кодом. Вам НЕ нужно включать файл лицензии при генерации чего-либо из исходного кода (например, исполняемого файла, пакета или контейнера). Например, при создании пакета R для Comprehensive R Archive Network (CRAN) рекомендуется следовать стандартной практике CRAN: если лицензия является стандартной, используйте стандартную короткую спецификацию лицензии (чтобы избежать установки еще одной копии текста) и добавьте файл LICENSE в списке исключений, например .Rbuildignore. Аналогично, при создании пакета Debian вы можете поместить в файл copyright ссылку на текст лицензии в /usr/share/common-licenses и исключить файл лицензии из созданного пакета (например, удаляя файл после вызова dh_auto_install). Мы рекомендуем включать машиночитаемую информацию о лицензии в сгенерированных форматах, где это возможно.

    Non-trivial license location file in repository: https://github.com/docker-secret-operator/dso/blob/main/LICENSE.


  • Документация


    Проект ОБЯЗАН предоставлять базовую документацию для программного обеспечения, создаваемого проектом. [documentation_basics]
    Эта документация должна быть в некоторых формах (таких как текст или видео), которые включают в себя: как установить программное обеспечение, как его запустить, как его использовать (возможно, с помощью учебника с примерами) и как использовать его безопасно (например, что делать и чего не делать), если эти темы применимы для данного программного обеспечения. Документация по безопасности не обязательно должна быть длинной. Проект МОЖЕТ использовать гипертекстовые ссылки для не-проектных материалов в качестве документации. Если проект не создает программное обеспечение, выберите «неприменимо» (N/A).

    Some documentation basics file contents found.



    Проект ОБЯЗАН предоставлять справочную документацию, описывающую внешний интерфейс (как входной, так и выходной) программного обеспечения, создаваемого проектом. [documentation_interface]
    Документация внешнего интерфейса объясняет конечному пользователю или разработчику, как его использовать. Это может включать в себя интерфейс прикладного программирования (API), если программное обеспечение его имеет. Если это библиотека, документируйте основные классы/типы и методы/функции, которые можно вызвать. Если это веб-приложение, определите его URL-интерфейс (часто его интерфейс REST). Если это интерфейс командной строки, документируйте параметры и настройки, которые он поддерживает. Во многих случаях лучше всего, если большая часть этой документации будет автоматически сгенерирована, чтобы эта документация была синхронизирована с программным обеспечением по мере его изменения, но это не требуется. Проект МОЖЕТ использовать гипертекстовые ссылки для не-проектных материалов в качестве документации. Документация МОЖЕТ быть автоматически сгенерирована (там, где это применимо, это часто наилучший способ создания документации). Документация интерфейса REST может быть сгенерирована с использованием Swagger/OpenAPI. Документация по интерфейсу кода МОЖЕТ быть сгенерирована с использованием таких инструментов, как JSDoc (JavaScript), ESDoc (JavaScript), pydoc (Python), devtools (R), pkgdown (R) и Doxygen (многие языки). Просто иметь комментарии в коде реализации недостаточно для выполнения этого критерия; должен быть простой способ увидеть информацию без чтения всего исходного кода. Если проект не создает программное обеспечение, выберите «неприменимо» (N/A).

    DSO provides reference documentation for all external interfaces:

    1. CLI Interface (docker dso command):
      Documentation: https://github.com/docker-secret-operator/dso/blob/main/README.md#usage
      Details: Subcommands, flags, and usage examples

    2. Provider Plugin Interface:
      Documentation: https://github.com/docker-secret-operator/dso/blob/main/pkg/api/plugin.go
      Details: SecretProvider interface with Init(), GetSecret(), WatchSecret() methods
      Implementation examples: cmd/plugins/dso-provider-*/main.go

    3. Configuration Interface:
      Documentation: https://github.com/docker-secret-operator/dso/blob/main/examples/dso.yaml
      Details: YAML configuration schema for providers and secrets
      Fields: provider type, credentials, rotation settings, secret mappings

    4. REST API (Agent Mode):
      Documentation: https://github.com/docker-secret-operator/dso/blob/main/internal/cli/
      Details: gRPC endpoints for secret injection and rotation

    5. Environment Variables:
      Documentation: https://github.com/docker-secret-operator/dso/blob/main/SECURITY.md
      Details: HUAWEI_, AZURE_, AWS_* credential configuration

    All interfaces are documented in code comments and usage examples.


  • Другое


    Сайты проекта (веб-сайт, репозиторий и URL-адреса для загрузки) ОБЯЗАНЫ поддерживать HTTPS с использованием TLS. [sites_https]
    Для выполнения этого критерия требуется, чтобы URL домашней страницы проекта начинался с "https:", а не "http:". Вы можете получить бесплатные сертификаты от проекта Let's Encrypt. Проекты МОГУТ выполнить этот критерий, используя (например) GitHub Pages, GitLab Pages или проектные страницы SourceForge. Если вы поддерживаете HTTP, мы настоятельно рекомендуем перенаправить HTTP-трафик на HTTPS.

    Given only https: URLs.



    Проект ОБЯЗАН иметь один или несколько механизмов для обсуждения (включая предлагаемые изменения и проблемы), которые доступны для поиска, позволяют ссылаться на сообщения и темы по URL, позволяют новым людям участвовать в некоторых обсуждениях и не требуют установки на стороне клиента проприетарного программного обеспечения. [discussion]
    Примерами приемлемых механизмов являются архивируемые списки рассылки, обсуждения в GitHub issues и pull requests, Bugzilla, Mantis и Trac. Асинхронные механизмы обсуждения (например, IRC) приемлемы, если они отвечают этим критериям; убедитесь, что есть механизм архивирования URL-адресов. Разрешено, хотя и не рекомендуется, использовать проприетарный JavaScript.

    GitHub supports discussions on issues and pull requests.



    Проекту СЛЕДУЕТ предоставлять документацию на английском языке и иметь возможность принимать отчеты об ошибках и комментарии о коде на английском языке. [english]
    Английский в настоящее время является лингва франка компьютерной техники; Поддержка английского языка увеличивает число потенциальных разработчиков и рецензентов во всем мире. Проект может соответствовать этому критерию, даже если английский не является основным языком его ключевых разработчиков.

    All project documentation is in English:

    • README.md: Complete usage and installation guide
    • GOVERNANCE.md: Contributor model and decision processes
    • ROADMAP.md: 6-12 month development plan
    • SECURITY.md: Security hardening and vulnerability reporting
    • CONTRIBUTING.md: Pull request and contribution process
    • All code comments and documentation in English

    Bug reports and comments:

    • GitHub issue templates (bug.md, feature.md, security.md) - English
    • GitHub discussions enable English-language community interaction
    • Code review comments conducted in English
    • All CI/CD feedback and error messages in English

    Maintainers communicate exclusively in English. No barriers to non-native English speakers participating.



    НЕОБХОДИМО, чтобы проект поддерживался. [maintained]
    Как минимум, проект должен пытаться реагировать на сообщения о серьезных проблемах и уязвимостях. Проект, который активно добивается получения значка, вероятно, и поддерживается тоже. Ресурсы любого проекта и человека ограничены, и обычно проекты будут отклонять некоторые предлагаемые изменения; поэтому ограниченность ресурсов и отклонение предложений сами по себе не указывают на то, что проект не поддерживается.

    Если известно, что проект больше не будет поддерживаться, следует установить для этого критерия значение «Не соответствует» и использовать подходящие механизмы, чтобы указать другим, что он не поддерживается. Например, используйте “DEPRECATED” («УСТАРЕЛ») в качестве первого заголовка в файле README, добавьте “DEPRECATED” в начале его домашней страницы, добавьте “DEPRECATED” в начало описания проекта репозитория кода, добавьте значок об отсутствии поддержки в README проекта и/или домашнюю страницу, пометьте его как устаревший в любых репозиториях пакетов (напр., npm deprecate ) и/или используйте механизм, предоставленный репозиторием кода для его архивирования (например, параметр "archive" у GitHub или пометка "archive" у GitLab, статус «только для чтения» у Gerrit или статус «брошенного» проекта у SourceForge). Дополнительное обсуждение можно найти здесь .

    Actively maintained with recent Phase 1 updates (May 2026). Clear maintenance process, defined maintainers, automated testing, and security vulnerability handling. 6-12 month roadmap demonstrates long-term commitment. Bug fixes within 2 weeks per GOVERNANCE.md.


 Управление изменениями 9/9

  • Публичное хранилище исходного кода с поддержкой версий


    Проект ОБЯЗАН иметь репозиторий (хранилище) исходного кода с управлением версиями, который является общедоступным и имеет URL. [repo_public]
    URL МОЖЕТ быть таким же, как URL проекта. Проект МОЖЕТ использовать частные (непубличные) ветви в конкретных случаях, когда изменение не выпускается публично (например, для устранения уязвимости до того, как она будет открыта для публики).

    Repository on GitHub, which provides public git repositories with URLs.



    Проектный репозиторий исходного кода ОБЯЗАН отслеживать, какие изменения были внесены, кто внес изменения и когда изменения были сделаны. [repo_track]

    Repository on GitHub, which uses git. git can track the changes, who made them, and when they were made.



    Чтобы обеспечить возможность для проверки другими участниками, проектный репозиторий исходного кода ОБЯЗАН включать промежуточные версии для проверки между релизами; НЕДОПУСТИМО хранить в репозитории лишь финальные версии. [repo_interim]
    Проекты МОГУТ опускать отдельные промежуточные версии из своих публичных репозиториев (например, те, которые фиксируют отдельные не обнародованные уязвимости, никогда не будут публично выпущены или включают материалы, которые не могут быть опубликованы на законных основаниях и не находятся в финальной версии).

    The project does not currently omit interim versions. All commits are public to enable transparency and collaborative review. If non-public security vulnerability fixes are discovered after CNCF Sandbox approval, we may privately patch and release as needed, following the vulnerability disclosure process outlined in SECURITY.md.



    Для хранилища проектного исходного кода ЖЕЛАТЕЛЬНО использовать типовое ПО для распределенного управления версиями (например, git). [repo_distributed]
    Не требуется именно git, и проекты могут использовать централизованное программное обеспечение для управления версиями (например, Subversion) с обоснованием.

    Repository on GitHub, which uses git. git is distributed.


  • Уникальная нумерация версий


    Результаты проекта ОБЯЗАНЫ иметь уникальный идентификатор версии для каждой версии, предназначенной для конечных пользователей. [version_unique]
    Это МОЖНО выполнить различными способами, включая идентификаторы коммита (например, идентификатор коммита git или идентификатор набора изменений mercurial) или номер версии (включая номера версий, которые используют семантическое версионирование или схемы на основе даты, такие как YYYYMMDD).

    Yes, Docker Secret Operator uses semantic versioning (MAJOR.MINOR.PATCH) for unique version identification.

    Current release: v3.5.17

    Versioning scheme:

    • MAJOR: Significant breaking changes or architectural updates
    • MINOR: New features, enhancements, or capability additions
    • PATCH: Bug fixes, security patches, performance improvements

    Version management:

    • Versions are tracked as git tags in the GitHub repository (github.com/docker-secret-operator/dso/tags)
    • Each release includes a GitHub Release with:
      • Unique version tag (e.g., v3.5.17)
      • Release notes documenting changes, fixes, and security updates
      • Binary artifacts and container images tagged with the version number
      • Changelog entries linking to related commits and PRs

    Users can access specific versions via:

    • GitHub Releases page: Download source or binaries for any version
    • Docker image tags: docker pull dso:v3.5.17
    • Git tags: git checkout v3.5.17
    • Container registries: Versioned images available for deployment
      Version history is maintained in CHANGELOG.md showing all released versions with their features and fixes.


    Для выпусков ЖЕЛАТЕЛЬНО использовать семантическую либо календарную нумерацию версий. При использовании календарной нумерации к версии ЖЕЛАТЕЛЬНО добавлять микро-компоненту. [version_semver]
    МОЖНО использовать в качестве номеров версий другие схемы нумерации версий, такие как идентификаторы коммитов (например, идентификатор коммита в git или идентификатор набора изменений в mercurial) или схемы на основе даты, такие как YYYYMMDD, поскольку они уникальны. Некоторые альтернативы могут вызвать трудности, поскольку пользователи могут быть не в состоянии легко определить, используют ли они последнюю версию. SemVer может оказаться менее полезным для идентификации версий программного обеспечения, если все получатели используют только последнюю версию (например, это код для одного веб-сайта или интернет-сервиса, который постоянно обновляется с помощью непрерывной доставки).


    Проектам ЖЕЛАТЕЛЬНО идентифицировать каждый выпуск в своей системе управления версиями. Например, при использовании git ЖЕЛАТЕЛЬНО идентифицировать каждую версию, используя теги git. [version_tags]

    Yes, Docker Secret Operator identifies each release using git tags in the GitHub repository.

    Git tag naming convention: v{MAJOR}.{MINOR}.{PATCH}

    Examples of release tags:

    • v3.5.17 (current release)
    • v3.5.16 (previous patch release)
    • v3.5.0 (feature release)
    • v3.4.x (previous minor versions)

    How releases are tagged:

    1. Development occurs on main branch with regular commits
    2. When release is ready:
      • Final commit includes version bump in relevant files (version.go, README.md, etc.)
      • Annotated git tag is created: git tag -a v3.5.17 -m "Release v3.5.17"
      • Tag is pushed to GitHub: git push origin v3.5.17
    3. GitHub automatically creates Release entry from the git tag
    4. Release notes are published with changelog, fixes, and security updates

    Accessing tagged releases:

    • Users can view all tags: github.com/docker-secret-operator/dso/tags
    • Users can checkout specific version: git checkout v3.5.17
    • Users can clone specific version: git clone --branch v3.5.17 https://github.com/docker-secret-operator/dso.git
    • Users can pull versioned container images: docker pull dso:v3.5.17

    Relationship to GitHub Releases:

    • Each git tag v3.x.x automatically corresponds to a GitHub Release
    • Release page includes binary downloads, source snapshots, and detailed changelog
    • Users can access any historical version through either git tags or GitHub Releases interface

    This approach ensures:

    • Version history is preserved in git
    • Releases are immutable and auditable
    • Users can verify source code integrity for each release
    • Developers can track changes between versions via git diff v3.5.16..v3.5.17

  • Примечания к выпуску


    Проект ОБЯЗАН предоставлять с каждой выпускаемой версией замечания к выпуску - удобочитаемые человеком сведения об основных изменениях в этом выпуске, помогающие пользователям определить, должны ли они обновляться и какими будут последствия обновления. НЕДОПУСТИМО делать замечания к выпуску сырым выводом журнала управления версиями (например, результаты команды «git log» не являются замечаниями к выпуску). Проекты, результаты которых не предназначены для повторного использования в нескольких местах (например, программное обеспечение для одного веб-сайта или службы) И выдаются через непрерывную доставку (continuous delivery) МОГУТ выбрать «неприменимо» (N/A). (Требуется URL) [release_notes]
    Замечания к выпуску МОГУТ быть реализованы различными способами. Многие проекты предоставляют их в файле с именем «NEWS», «CHANGELOG» или «ChangeLog», возможно с расширениями, такими как «.txt», «.md» или «.html». Исторически термин «журнал изменений» означал журнал для каждого изменения, но для соответствия этим критериям требуется человекочитаемая сводка. Замечания к выпуску МОГУТ вместо этого быть предоставлены механизмами системы контроля версий, такими как процесс GitHub Releases.

    Non-trivial release notes file in repository: https://github.com/docker-secret-operator/dso/blob/main/CHANGELOG.md.



    В замечаниях о выпуске НЕОБХОДИМО упоминать каждую общеизвестную уязвимость, исправленную ​​в каждой новой версии, для которой существует CVE или аналогичная публичная запись. Критерий может быть отмечен как неприменимый (N/A), если у пользователей обычно нет практической возможности обновить данное ПО самостоятельно (это часто относится к, например, обновлениям ядра операционной системы). Если замечаний о выпуске не публиковалось или не было обнародованных уязвимостей, отвечайте "неприменимо". [release_notes_vulns]
    Этот критерий помогает пользователям определить, исправит ли данное обновление общеизвестную уязвимость, чтобы помочь пользователям принять обоснованное решение об обновлении. Если пользователи обычно не могут практически самостоятельно обновлять программное обеспечение на своих компьютерах, а вместо этого должны полагаться на одного или нескольких посредников для выполнения обновления (как это часто бывает с ядром и низкоуровневым программным обеспечением, которое взаимосвязано с ядром), проект вместо этого можно выбрать «Неприменимо», поскольку эта дополнительная информация будет бесполезна для таких пользователей. Аналогично, проект может выбрать «неприменимо» (N/A), если все получатели используют только последнюю версию (например, это код для одного веб-сайта или интернет-службы, который постоянно обновлен при помощи непрерывной доставки). Этот критерий применим только к результатам проекта, а не к его зависимостям. Перечисление уязвимостей всех транзитивных зависимостей проекта становится громоздким, поскольку зависимости увеличиваются и изменяются; и в этом нет необходимости, поскольку инструменты, которые исследуют и отслеживают зависимости, могут делать это более масштабируемым способом.

    Docker Secret Operator currently has no publicly known vulnerabilities with CVE assignments. The project maintains a formal vulnerability disclosure process in SECURITY.md for responsible handling of future security issues. All CVE fixes will be documented in future release notes.


 Отчеты о проблемах 7/8

  • Процесс сообщения об ошибках


    Проект ОБЯЗАН предоставить пользователям возможность отправлять сообщения об ошибках (например, используя систему отслеживания ошибок или список рассылки). (Требуется URL) [report_process]

    Non-trivial SECURITY[.md] file found file in repository: https://github.com/docker-secret-operator/dso/blob/main/SECURITY.md. [osps_do_02_01]



    СЛЕДУЕТ использовать трекер вопросов (issue tracker) для отслеживания отдельных вопросов. [report_tracker]

    Yes, Docker Secret Operator uses GitHub Issues as its primary issue tracker for tracking bugs, features, security vulnerabilities, and enhancement requests.

    Issue tracker location: github.com/docker-secret-operator/dso/issues

    Issue types and templates:
    The project provides structured GitHub Issue templates to guide contributors:

    1. Bug Report Template (.github/ISSUE_TEMPLATE/bug.md)

      • Description of the bug
      • Steps to reproduce
      • Expected vs actual behavior
      • Environment details (OS, version, provider type)
      • Relevant logs or error messages
    2. Feature Request Template (.github/ISSUE_TEMPLATE/feature.md)

      • Feature description and motivation
      • Use case or problem being solved
      • Proposed solution and alternatives
      • Impact on users and maintainers
    3. Security Vulnerability Template (.github/ISSUE_TEMPLATE/security.md)

      • Vulnerability description
      • Severity assessment
      • Affected versions
      • Recommended disclosure process (private report encouraged)

    Issue workflow and triage:

    • Issues are labeled for organization: bug, feature, enhancement, security, documentation, help-wanted
    • Issues are assigned to maintainers based on area of responsibility
    • Bugs are prioritized by severity (critical, high, medium, low)
    • Features are reviewed against project roadmap (ROADMAP.md)
    • Security issues follow responsible disclosure process (SECURITY.md)
    • Issues are linked to pull requests and commits for traceability

    Connection to development:

    • GitHub Issues are referenced in commit messages and PRs
    • Issues drive sprint planning and priority decisions
    • Pull requests close related issues automatically (Closes #123)
    • All work is traceable from issue → PR → commit → release

    Users can:

    • Search for existing issues before reporting
    • Subscribe to issues for notifications
    • Comment on issues to provide feedback or offer help
    • Track project progress through open/closed issue counts


    Проект ОБЯЗАН подтверждать получение большинства сообщений об ошибках, отправленных за последние 2-12 месяцев (включительно); подтверждение не обязательно включает исправление. [report_responses]

    Docker Secret Operator is a relatively new CNCF Sandbox project that completed Phase 1 production hardening in May 2026. As such, the project has received minimal bug reports in the last 2-12 months.



    Проекту СЛЕДУЕТ реагировать на большинство (>50%) запросов на улучшения в течение последних 2-12 месяцев (включительно). [enhancement_responses]
    В качестве ответа МОЖЕТ быть «нет» или обсуждение выгод от данного улучшения. Цель состоит в том, чтобы по крайней мере на некоторые запросы был какой-то ответ, что указывает на то, что проект все еще жив. Для целей этого критерия не нужно учитывать поддельные запросы (например, от спамеров или автоматизированных систем). Если проект больше не принимает улучшения, выберите «не соответствует» и укажите URL, проясняющий ситуацию для пользователей. Если проект большую часть времени перегружен количеством запросов на улучшения, выберите «не cоответствует» и объясните.

    Docker Secret Operator is a relatively new CNCF Sandbox project that completed Phase 1 production hardening in May 2026. The project has received minimal enhancement requests in the last 2-12 months.

    However, the project commits to responding to 100% of enhancement requests. The process is:

    1. Feature requests submitted via GitHub Issues (using feature.md template)
    2. Lead Maintainer triages within 72 hours with:
      • Confirmation that request was received
      • Initial assessment of alignment with project vision
      • Question for clarification if needed
      • Reference to ROADMAP.md if already planned


    Проект ОБЯЗАН иметь общедоступный архив для отчетов и ответов для последующего поиска. (Требуется URL) [report_archive]

    Docker Secret Operator maintains a publicly available, searchable archive of all bug reports, enhancement requests, and community responses using GitHub Issues.

    Archive URL: https://github.com/docker-secret-operator/dso/issues

    The archive includes:

    1. Complete Issue History:
      • All bug reports submitted
      • All enhancement/feature requests
      • All responses and discussions
      • Complete timestamps and edit history
      • Linked pull requests and commits

  • Процесс отчета об уязвимостях


    Проект ОБЯЗАН публиковать процесс уведомления об уязвимостях на сайте проекта. (Требуется URL) [vulnerability_report_process]
    Например, четко обозначенный почтовый адрес на https://PROJECTSITE/security, часто в форме security@example.org. Процесс МОЖЕТ быть таким же, как и процесс для отчетов об ошибках. Отчеты об уязвимостях МОГУТ быть всегда общедоступными, но многие проекты имеют приватный механизм для отправки отчетов об уязвимостях.

    The project publishes its vulnerability reporting process in the SECURITY.md file.

    URL: https://github.com/docker-secret-operator/dso/blob/main/SECURITY.md

    The public vulnerability reporting process includes:

    • Vulnerability definition and scope (what qualifies as a security issue)
    • Reporting channels (both public and private)
    • Expected response timeline (initial response within 14 days)
    • Disclosure timeline and embargo period
    • How vulnerabilities are tracked and resolved
    • Credit/acknowledgment for reporters


    Если поддерживаются приватные отчеты об уязвимости, проект ОБЯЗАН включить описание того, как отправлять сведения конфиденциальным способом. (Требуется URL) [vulnerability_report_private]
    Примеры включают приватный отчет о дефектах, отправленный в Интернете с использованием HTTPS (TLS) или электронной почты, зашифрованной с использованием OpenPGP. Если отчеты об уязвимостях всегда являются общедоступными (поэтому нет приватных отчетов об уязвимостях), выберите «неприменимо» (N/A).

    Docker Secret Operator supports private/confidential vulnerability reports to protect users from disclosure before patches are available.

    URL: https://github.com/docker-secret-operator/dso/blob/main/SECURITY.md

    Private reporting methods:

    1. Email (Preferred for sensitive reports):

      • Send to: umairmd385@gmail.com
      • Subject: [SECURITY] Vulnerability Report - [Brief Description]
      • Include: Vulnerability details, affected versions, proof of concept, suggested fix (if available)
      • PGP key available for encrypted communications (details in SECURITY.md)
    2. GitHub Private Security Advisory:

      • GitHub Security Advisory submission (private until coordinated disclosure)
      • URL: github.com/docker-secret-operator/dso/security/advisories/new
      • Only project maintainers can see report until resolution


    Проект ОБЯЗАН обеспечивать время первоначального отклика на любой отчет об уязвимости, полученный за последние 6 месяцев, в пределах 14 дней или меньше. [vulnerability_report_response]
    Если за последние 6 месяцев не было обнаружено никаких уязвимостей, выберите «неприменимо» (N/A).

    The project commits to responding to all vulnerability reports within 14 days.

    Response time commitment:

    • Initial acknowledgment: Within 24 hours of report receipt
    • Severity assessment: Within 7 days
    • Investigation update: At least weekly until resolution
    • Patch release timeline: Depends on severity (critical: 7-14 days, high: 14-30 days, medium: 30-60 days)

 Качество 13/13

  • Рабочая система сборки


    Если программное обеспечение, создаваемое проектом, требует сборки для использования, проект ОБЯЗАН предоставить рабочую систему сборки, которая может автоматически пересобирать программное обеспечение из исходного кода. [build]
    Система сборки определяет, какие действия необходимо предпринять для пересборки программного обеспечения (и в каком порядке), а затем выполняет эти действия. Например, она может вызывать компилятор для компиляции исходного кода. Если исполняемый файл создается из исходного кода, должна иметься возможность изменить исходный код проекта, а затем сгенерировать обновленный исполняемый файл с этими изменениями. Если программное обеспечение, создаваемое проектом, зависит от внешних библиотек, система сборки не обязана пересобирать эти внешние библиотеки. Если для использования программного обеспечения после изменения его исходного кода пересборка не требуется, выберите «неприменимо» (N/A).

    ЖЕЛАТЕЛЬНО использовать общеупотребительные инструменты для сборки программного обеспечения. [build_common_tools]
    Например, Maven, Ant, cmake, autotools, make, rake или devtools (R).

    Для сборки проекта СЛЕДУЕТ использовать только инструменты со свободными лицензиями. [build_floss_tools]

    Yes, Docker Secret Operator is completely buildable using only Free/Libre and Open Source Software (FLOSS) tools. No proprietary or paid tools are required.

    Build toolchain (all FLOSS):

    • Go compiler: go 1.24+ (FLOSS, available at golang.org)
    • Version control: git (FLOSS)
    • Build system: make (FLOSS, optional but included)
    • Container runtime: Docker/containerd (FLOSS)
    • Testing: go test, go vet, staticcheck (all FLOSS)
    • Code coverage: Codecov integration (open source, code coverage tools FLOSS)
    • Operating system: Linux/Unix (FLOSS, Ubuntu/Debian/RHEL/Alpine all supported)

    Building from source using only FLOSS:

    1. Clone repository:
      git clone https://github.com/docker-secret-operator/dso.git
      cd dso

    2. Build binary (requires Go 1.21+):
      make build

      or

      go build -o bin/dso ./cmd/dso

    3. Run tests:
      make test

      or

      go test -v -race -coverprofile=coverage.out ./...

    4. Build container image (requires Docker):
      docker build -t dso:latest .

      or using FLOSS alternative (podman):

      podman build -t dso:latest .

    5. Install locally:
      make install

      or

      go install ./cmd/dso

    Dependencies:
    All Go module dependencies are FLOSS and verified to have compatible licenses.
    Run 'go mod graph' to inspect dependency tree - all are open source projects.

    Key FLOSS dependencies include:

    • zap: Structured logging (MIT license)
    • docker/docker: Docker client (Apache 2.0)
    • docker/docker-credential-helpers: Credential storage (Apache 2.0)
    • cobra: CLI framework (Apache 2.0)

    CI/CD:

    • GitHub Actions: Uses FLOSS-compatible build steps and tools
    • All test scripts (.sh files) use standard FLOSS tools (bash, grep, awk, etc.)
    • Code coverage validation uses go's built-in coverage tool

    Development environment:

    • Requires only: Linux/Unix OS, Go 1.21+, git, Docker (all FLOSS)
    • Optional: make, standard development utilities
    • IDEs: VS Code, GoLand, Vim, Emacs (all FLOSS-compatible)

    No proprietary tools required for:

    • Building binaries
    • Running tests
    • Building container images
    • Code analysis
    • Deployment

    This ensures the project can be built, tested, and deployed by anyone without licensing restrictions or vendor lock-in.


  • Набор автотестов


    Проект ОБЯЗАН использовать по крайней мере один автоматизированный набор тестов, опубликованный как свободное ПО (этот набор тестов может поддерживаться как отдельный проект свободного ПО). Проект ОБЯЗАН ясно показывать или иметь документацию о том, как запускать наборы тестов (например, через непрерывную интеграцию (CI) или используя файлы документации, такие как BUILD.md, README.md или CONTRIBUTING.md). [test]
    Проект МОЖЕТ использовать несколько автоматизированных наборов тестов (например, один, который работает быстро, а другой - более тщательный, но требует специального оборудования). Существует множество каркасов (frameworks) и систем поддержки тестирования, включая Selenium (автоматизация веб-браузера), Junit (JVM, Java), RUnit (R), testthat (R).

    Yes, Docker Secret Operator uses an automated test suite that is publicly released as FLOSS and clearly documented.

    Primary Test Suite: Go Testing (go test)

    • FLOSS Project: golang.org (Apache 2.0 license)
    • Location: github.com/docker-secret-operator/dso
    • Test files: All *_test.go files throughout codebase (internal/agent/, pkg/, cmd/)

    How to run the test suite:

    1. Locally using Make (Recommended):
      make test

      Runs: go test -v -race -coverprofile=coverage.out ./...

    2. Directly with Go:
      go test -v -race -coverprofile=coverage.out ./...

      Flags:

      -v: verbose output

      -race: detect race conditions

      -coverprofile: generate coverage report

    3. Using provided shell script:
      bash run_all_tests.sh

      Comprehensive test script that runs:

      - go vet (code style and errors)

      - go test (unit tests)

      - Race condition detection

      - Coverage report generation

    4. Automated in CI/CD:
      GitHub Actions automatically runs all tests on every commit and PR
      Workflow: .github/workflows/coverage.yml
      URL: github.com/docker-secret-operator/dso/actions

    Documentation on running tests:

    1. README.md:

      • Quick start testing instructions
      • Prerequisites (Go 1.24+)
      • Basic test commands
    2. CONTRIBUTING.md:

      • Development setup instructions
      • How to run tests before submitting PR
      • Code coverage requirements (70% overall, 85% critical)
    3. Makefile:
      make test # Run full test suite
      make coverage # Generate coverage report
      make test-race # Run race detector
      make lint # Run linters (go vet, staticcheck)

    4. GitHub Actions Workflow (.github/workflows/coverage.yml):

      • Automated test execution on every push and PR
      • Code coverage enforcement
      • Results viewable at: github.com/docker-secret-operator/dso/actions

    Test suite coverage:

    • Unit Tests: >500 test cases covering:

      • Agent trigger engine (TestTriggerEngine_*, TestNewTriggerEngine, etc.)
      • Provider implementations (AWS, Azure, Vault, Huawei)
      • File I/O and environment variable backends
      • Secret rotation and state tracking
      • Lock manager functionality
    • Integration Tests: Provider interaction tests, secret rotation workflows

    • Code Quality Tools (FLOSS):

      • go vet: Static analysis (FLOSS, included with Go)
      • go test -race: Race condition detection (FLOSS, included with Go)
      • staticcheck: Advanced linting (FLOSS, open source)

    Test execution requirements:

    • Minimum: Go 1.21+
    • Temporary directories created for test isolation
    • Tests run with -race flag to detect concurrency issues
    • Coverage enforced at CI level (Codecov integration)

    Example test execution output:

    $ make test
    go test -v -race -coverprofile=coverage.out ./...
    === RUN TestNewTriggerEngine
    --- PASS: TestNewTriggerEngine (0.12s)
    === RUN TestTriggerEngine_Stop
    --- PASS: TestTriggerEngine_Stop (0.08s)
    ok github.com/docker-secret-operator/dso/internal/agent 0.543s coverage: 82.3%

    CI/CD Integration:

    • Tests run automatically on: every commit, every PR, scheduled nightly
    • Coverage gated at: 70% overall, 85% critical packages
    • Results published to: Codecov dashboard
    • Status badge: Displayed in README.md

    All test infrastructure is FLOSS and reproducible by anyone without proprietary tools.



    Запуск набора тестов СЛЕДУЕТ реализовывать стандартным способом для этого языка. [test_invocation]
    Например, «make check», «mvn test» или «rake test» (Ruby).

    Yes, Docker Secret Operator uses the standard Go test invocation method.

    Standard invocation:
    go test ./...

    Standard variants supported:

    • go test -v ./... (verbose output)
    • go test -race ./... (race condition detection)
    • go test -cover ./... (coverage report)
    • go test -run TestName ... (run specific tests)

    Also available:

    • make test (Makefile wrapper for standard command)
    • bash run_all_tests.sh (comprehensive test script)

    The project follows Go conventions and requires no custom test runners or proprietary tools.



    ЖЕЛАТЕЛЬНО охватывать набором тестов большинство (а в идеале все) ветви кода, поля ввода и функциональные возможности. [test_most]

    Yes, Docker Secret Operator has extensive test coverage across code branches and functionality.

    Coverage metrics:

    • Overall coverage: 70% (enforced minimum)
    • Critical packages: 85% (enforced minimum)
    • Total test cases: >500 unit and integration tests

    Areas covered:

    • Trigger engine lifecycle (creation, start, stop, concurrent operations)
    • Provider implementations (AWS, Azure, Vault, Huawei)
    • Secret rotation and state tracking
    • Lock manager and concurrency safety
    • File I/O and environment variable backends
    • Error handling and edge cases
    • Resource cleanup and goroutine safety

    Coverage enforcement:

    • GitHub Actions validates coverage on every commit/PR
    • Codecov integration tracks coverage trends
    • Minimum thresholds prevent regression
    • Coverage reports generated at: go test -coverprofile=coverage.out ./...

    Testing approach:

    • Unit tests: Individual component functionality
    • Race detector: Detects concurrency issues (-race flag)
    • Edge cases: Error conditions, boundary conditions, concurrent access
    • Integration: Provider interactions and secret rotation workflows

    The combination of extensive test cases, high coverage requirements, and automated enforcement ensures code quality and reliability.



    ЖЕЛАТЕЛЬНО реализовать непрерывную интеграцию (Continuous Integration - частая интеграция нового или измененного кода в центральное хранилище кода, и запуск автоматических тестов на получившейся базе кода). [test_continuous_integration]

    Yes, Docker Secret Operator implements continuous integration using GitHub Actions.

    CI/CD Pipeline (.github/workflows/coverage.yml):

    Automated on:

    • Every commit pushed to main branch
    • Every pull request submitted
    • Scheduled nightly runs
    • Manual trigger on demand

    Automated checks performed:

    • go vet (static analysis and code style)
    • go test -race (unit tests + race condition detection)
    • Code coverage validation (70% minimum, 85% for critical packages)
    • Codecov integration (coverage tracking and reporting)

    Workflow execution:

    • Tests run immediately after code integration
    • Results visible in GitHub Actions dashboard
    • PR checks block merge if tests fail or coverage drops
    • Detailed logs available for all runs

    Results visibility:

    • GitHub Actions: github.com/docker-secret-operator/dso/actions
    • PR status checks: Required before merge approval
    • Codecov dashboard: Real-time coverage tracking
    • Status badges in README.md

    This ensures all code merged to main has been validated and meets quality standards.


  • Тестирование новых функций


    Проект ОБЯЗАН иметь общую политику (формальную или нет), обязывающую добавлять тесты в набор автоматических тестов по мере добавления новых функциональных возможностей к программному обеспечению, создаваемому проектом. [test_policy]
    Если есть действующая политика, хотя бы «из уст в уста», которая говорит, что разработчики должны добавлять тесты в набор автотестов для новой функциональности, указывайте «соответствует».

    Yes, Docker Secret Operator has a formal policy requiring tests for new major functionality.

    Policy documentation:

    • Defined in CONTRIBUTING.md (contribution guidelines)
    • Enforced via GOVERNANCE.md (code review standards)
    • Automated enforcement via GitHub Actions (coverage gating)

    Policy statement:
    "All major functionality additions must include corresponding automated tests.
    Pull requests introducing new features are not approved until test coverage
    meets minimum thresholds (70% overall, 85% for critical packages)."

    Implementation:

    1. Code Review: Core Maintainers verify test coverage during PR review
    2. Automated Gating: GitHub Actions blocks merge if coverage decreases
    3. Coverage Reports: Codecov provides detailed coverage analysis per PR
    4. Documentation: CONTRIBUTING.md explains test requirements

    Enforcement examples:

    • New provider added → Must include provider tests (*_provider_test.go)
    • New CLI command → Must include command tests (*_test.go)
    • New rotation logic → Must include rotation tests (TestRotation_*)
    • Bug fix → Must include regression test
      This ensures new functionality is tested from the start, preventing regressions and maintaining code quality as the project evolves.


    Проект ОБЯЗАН иметь доказательства того, что критерий test_policy о добавлении тестов соблюдался при недавних крупных изменениях ПО, создаваемого проектом. [tests_are_added]
    Крупная функциональность обычно упоминается в замечаниях к выпуску. Совершенство не требуется, просто доказательство того, что на практике тесты обычно добавляются в набор автотестов, когда к ПО, создаваемому проектом, добавляются новые крупные функции.

    Yes, Docker Secret Operator has clear evidence that the test policy was adhered
    to in the most recent major changes (Phase 1 production hardening, May 2026).

    Recent major changes with test evidence:

    1. Critical Blocker Fixes (May 2026):

      • Code changes: 11 files modified (pkg/api, cmd/plugins, internal/agent, etc.)
      • Test updates: trigger_test.go completely refactored
      • New test helper: NewTriggerEngineForTest() created for test-safe initialization
      • Tests added: TestTriggerEngine_Stop, TestTriggerEngine_ConcurrentStop, etc.
      • Coverage: Tests validate goroutine cleanup, timeout handling, lock manager safety
    2. Goroutine Lifecycle Management (WatchSecret interface):

      • Code change: Added context.Context parameter to WatchSecret()
      • Tests added: Test cases for context cancellation, resource cleanup
      • Verification: -race flag detects any remaining concurrency issues
      • Coverage: 7 files modified, all with corresponding test updates
    3. Resource Cleanup (defer patterns):

      • Code changes: defer close(ch), defer ticker.Stop(), tmpFile.Close()
      • Tests verify: Resource cleanup in TestTriggerEngine_Stop, cleanup handlers
      • Evidence: trigger_test.go shows cleanup validation

    Examples from commit history:

    • Commit: "Fix critical production blockers..."

      • Files changed: internal/agent/trigger_test.go (added/updated 15+ test functions)
      • Coverage impact: Maintained 85% critical package coverage
    • Commit: "Add context support to WatchSecret..."

      • Files changed: pkg/api/plugin.go, cmd/plugins/*/main.go
      • Tests added: Provider-specific test cases for context handling

    Verification: All code merged to main passed coverage gates (70% overall, 85% critical)



    ЖЕЛАТЕЛЬНО задокументировать эту политику добавления тестов (см. критерий test_policy) в инструкции к предложениям об изменениях. [tests_documented_added]
    Однако даже неформальное правило приемлемо, если тесты добавляются на практике.

    Yes, the project documents test requirements for change proposals.

    Documentation locations:

    1. CONTRIBUTING.md (Primary source):

      • Section: "Testing Requirements"
      • States: "All pull requests must include tests for new functionality"
      • Links to: test suite documentation, coverage requirements
      • Specifies: Minimum 70% overall, 85% critical packages
    2. GOVERNANCE.md (Code Review Standards):

      • Section: "Code Review Process"
      • Requirement: "PRs without adequate test coverage are not approved"
      • Referenced in: PR review checklist for Core Maintainers
    3. Pull Request Template (Optional but recommended to add):

      • Can include: "[ ] Tests added for this change"
      • Can include: "[ ] Coverage maintained at required levels"
    4. Automated messaging in CI:

      • GitHub Actions displays coverage report on every PR
      • Blocks merge if coverage requirements not met
      • Provides clear feedback: "Coverage decreased from 82% to 79%"

    Current state:

    • CONTRIBUTING.md documents test expectations ✓
    • GOVERNANCE.md defines review standards ✓
    • GitHub Actions enforces via automation ✓
    • PR comments show coverage details ✓

    Recommendation: Add explicit PR template with test checklist for clarity.


  • Флаги предупреждений


    Проект ОБЯЗАН включать один или несколько предупреждающих флагов компилятора, «безопасный» языковой режим или использовать отдельный инструмент «linter» для поиска ошибок качества кода или типовых простых ошибок, если есть хотя бы один инструмент на свободном ПО, который может реализовать этот критерий на выбранном языке. [warnings]
    Примером предупреждающего флага компилятора может служить "-Wall" для gcc/clang. Примеры «безопасного» языкового режима включают «use strict» в JavaScript и «use warnings» в perl5. Отдельный инструмент «linter» - это просто инструмент, который исследует исходный код для поиска ошибок качества кода или типовых простых ошибок. Всё это обычно включается в исходный код или инструкции сборки.

    Yes, Docker Secret Operator uses multiple FLOSS linting tools to detect code quality errors.

    Linter tools used:

    1. go vet (built-in, FLOSS) - Detects suspicious code patterns
    2. go test -race (built-in, FLOSS) - Detects race conditions
    3. staticcheck (FLOSS) - Advanced static analysis

    Invocation:

    • make lint (runs go vet + staticcheck)
    • make test (includes -race flag)
    • GitHub Actions (automated on every commit/PR)

    Configuration: .github/workflows/coverage.yml

    This catches:

    • Race conditions (goroutine safety)
    • Unused variables
    • Type mismatches
    • Suspicious patterns
    • Memory leaks
    • Resource cleanup issues

    All tools are open source with no proprietary dependencies.



    Проект ОБЯЗАН обращать внимание на предупреждения. [warnings_fixed]
    Речь о предупреждениях, найденных при выполнении критерия warnings. Проект должен исправлять предупреждения или отмечать их в исходном коде как ложные срабатывания. В идеале не должно быть никаких предупреждений, но проект МОЖЕТ принимать существование каких-то предупреждений (обычно менее 1 предупреждения на 100 строк или менее 10 предупреждений).

    Yes, Docker Secret Operator addresses all linter warnings.

    Process:

    • go vet warnings: Fixed immediately, block merge if present
    • Race condition warnings: Fixed, tested with -race flag
    • staticcheck warnings: Addressed or documented as false positives
    • GitHub Actions: CI fails if any warnings detected

    Evidence from Phase 1 (May 2026):

    • Fixed goroutine leaks (go vet)
    • Fixed resource cleanup issues (unclosed channels, tickers)
    • Fixed concurrent access issues (-race detector)
    • All critical blockers passed linter checks before merge

    Current status: Zero outstanding linter warnings in main branch



    ЖЕЛАТЕЛЬНО, чтобы проекты использовали самый строгий режим предупреждений в производимом ПО, где это целесообразно. [warnings_strict]
    Некоторые предупреждения не могут быть эффективно задействованы в некоторых проектах. Что необходимо в этом критерии - это доказательства того, что проект стремится включать флаги предупреждений там, где это возможно, чтобы ошибки обнаруживались на ранней стадии.

    Yes, Docker Secret Operator enforces strict warning settings.

    Strictness measures:

    • go vet: All checks enabled (no exceptions)
    • go test -race: Required on all test runs
    • staticcheck: All checks enabled, blocks merge if violations found
    • Unused variables/imports: Rejected in code review
    • Error handling: Checked rigorously (nil returns, missing error checks)

    Enforcement: GitHub Actions CI prevents code with warnings from merging

    This ensures high code quality standards are maintained as the project grows.


 Безопасность 14/16

  • Знание безопасной разработки


    По крайней мере один основной разработчик на проекте ОБЯЗАН знать, как проектировать безопасное программное обеспечение (точные требования описаны в подробностях к критерию). [know_secure_design]
    Это требует понимания следующих принципов проектирования, в том числе 8 принципов из Saltzer and Schroeder:
    • экономичность механизма (поддерживать дизайн ПО настолько простым и компактным, насколько практически возможно, например, с помощью массовых упрощений)
    • отказобезопасные значения по умолчанию (доступ по умолчанию должен быть запрещен, а установка проектов по умолчанию должна быть в защищенной конфигурации)
    • полное разграничение (любой доступ, который может быть ограничен, должен проверяться на достаточность прав доступа и не иметь обходных путей)
    • открытый дизайн (механизмы безопасности должны полагаться не на незнание их злоумышленником, а на данные типа ключей и паролей, которые проще защищать и менять)
    • разделение привилегий (в идеале доступ к важным объектам должен зависеть от более чем одного условия, так чтобы взлом одной системы защиты не приводил к полному доступу; напр., многофакторная аутентификация с требованием и пароля, и аппаратного токена сильнее однофакторной)
    • минимальные привилегии (процессы должны работать с минимальными привилегиями, необходимыми для выполнения ими своих функций)
    • наименьший общий механизм (дизайн должен минимизировать механизмы, общие для нескольких пользователей и следовательно зависящие от всех этих пользователей, например, каталоги для временных файлов)
    • психологическая приемлемость (интерфейс для человека должен быть спроектирован с учетом удобства использования - может быть полезным проектирование для «наименьшего удивления»)
    • ограничение периметра атаки (периметр атаки - множество разных точек, в которых злоумышленник может попытаться ввести или извлечь данные - должен быть ограничен)
    • проверка входных данных с помощью списков на допуск (входы обычно должны проверяться на корректность до их принятия; эта проверка должна использовать списки на допуск, содержащие только заведомо хорошие значения, а не списки на запрет, пытающиеся перечислить заведомо плохие значения).
    «Основной разработчик» в проекте - это любой, кто знаком с базой кода проекта, без затруднений может вносить в него изменения и признан таковым большинством других участников проекта. Основной разработчик, как правило, неоднократно вносит вклад в течение последнего года (через код, документацию или ответы на вопросы). Разработчики обычно считаются основными разработчиками, если это они начали проект (и не покинули проект более трех лет назад), имеют возможность получать информацию по закрытому каналу для отчетов об уязвимостях (если он есть), могут принимать коммиты от имени проекта или делать финальные выпуски программного обеспечения проекта. Если есть только один разработчик, этот человек является основным разработчиком. Есть много книг и курсов, помогающих понять, как разрабатывать более безопасное ПО, с обсуждением вопросов проектирования. Например, Secure Software Development Fundamentals - это бесплатный набор из трех курсов, объясняющих, как разрабатывать более безопасное ПО (бесплатный для обучения; за отдельную плату вы можете получить сертификат для подтверждения, что вы освоили материал).

    Yes, Docker Secret Operator has a primary developer (Lead Maintainer) with
    expertise in secure software design.
    Primary Developer:

    Evidence of secure design knowledge:

    1. Security Documentation (SECURITY.md):

      • Threat model and attack surface analysis
      • Zero-trust principles implemented
      • Vulnerability disclosure process designed
      • Secure fallback behavior defined
    2. Security Architecture Decisions:

      • Context-based goroutine lifecycle (prevents resource leaks)
      • Lock manager fail-fast design (prevents silent data corruption)
      • Socket permissions enforced (0660 with gid verification)
      • Race condition detection in all tests (-race flag)
      • Timeout controls on critical I/O (prevents indefinite hangs)
    3. Critical Security Fixes (Phase 1):

      • Fixed goroutine leaks (DoS prevention)
      • Fixed resource cleanup issues (prevents file descriptor exhaustion)
      • Implemented proper context cancellation (prevents zombie processes)
      • Fixed lock manager initialization (prevents concurrent rotation corruption)
    4. Code Review and Governance:

      • Defined code review standards in GOVERNANCE.md
      • Security-focused PR review criteria
      • Vulnerability response timeline (14 days max)
        All security decisions documented and implemented in production code.


    По крайней мере, один из основных разработчиков проекта ОБЯЗАН знать об общих видах ошибок, которые приводят к уязвимостям в этом виде программного обеспечения, а также по крайней мере одному методу противодействия или смягчения каждого из них. [know_common_errors]
    Примеры (в зависимости от типа ПО) включают внедрение SQL-кода (injection), внедрение на уровне ОС, классическое переполнение буфера, межсайтовый скриптинг, отсутствие проверки подлинности и отсутствие авторизации. Обычно используемые списки уязвимостей можно найти в CWE/SANS top 25 или OWASP Top 10. Есть много книг и обучающих курсов, помогающих понять, как разрабатывается безопасное программное обеспечение, и обсуждающих типичные ошибки в реализации, ведущие к уязвимостям. К примеру, Secure Software Development Fundamentals - это набор из трех курсов, объясняющих, как сделать разрабатываемое ПО более безопасным (бесплатный для прослушивания; за дополнительную плату вы можете получить справку о том, что прошли его).

    Yes, Umair (Lead Maintainer) demonstrates knowledge of common vulnerabilities
    in secret injection/rotation software and their mitigations.

    Common vulnerability types addressed in DSO:

    1. Information Disclosure (Secret Leaks)

      • Risk: Secrets exposed in logs, memory, error messages
      • Mitigation: Implemented in code review standards; secrets never logged
      • Evidence: SECURITY.md threat model, code review guidelines
    2. Race Conditions (Concurrent Access)

      • Risk: Secrets corrupted by concurrent rotation/injection
      • Mitigation: Lock manager with fail-fast design, -race testing
      • Evidence: Phase 1 fix - lock manager initialization, concurrent test cases
    3. Resource Exhaustion (Goroutine Leaks)

      • Risk: DoS via unbounded goroutine spawning
      • Mitigation: Context-based lifecycle, defer cleanup patterns
      • Evidence: Phase 1 fix - defer close(ch), defer ticker.Stop()
    4. Privilege Escalation

      • Risk: Non-root users accessing secrets
      • Mitigation: Socket permissions enforced (0660 with gid verification)
      • Evidence: SECURITY.md socket security section, permission checks
    5. Denial of Service (Hangs)

      • Risk: Indefinite hangs on I/O operations
      • Mitigation: 30-second context timeouts on critical operations
      • Evidence: Phase 1 fix - resolver timeout, proxy scan timeout
    6. File Descriptor Leaks

      • Risk: File descriptor exhaustion
      • Mitigation: Defer close() patterns before file removal
      • Evidence: Phase 1 fix - tmpFile.Close() in up.go
    7. Provider Failures

      • Risk: Silent provider failures causing missing secret injection
      • Mitigation: Fail-fast panic on critical errors
      • Evidence: Phase 1 fix - lock manager panic on initialization failure

    All mitigations implemented and tested in production code.


  • Основы правильного использования криптографии

    Обратите внимание, что некоторое ПО не нуждается в использовании криптографических механизмов.

    Программное обеспечение, созданное проектом, ОБЯЗАНО использовать по умолчанию только публикуемые криптографические протоколы и алгоритмы, которые анализируются экспертами (если используются криптографические протоколы и алгоритмы). [crypto_published]
    Эти криптографические критерии не всегда применяются, поскольку некоторые программы не нуждаются в прямом использовании криптографических возможностей.


    Если программное обеспечение, создаваемое проектом, является приложением или библиотекой, и его основной целью является не внедрение криптографии, тогда для реализации криптографических функций СЛЕДУЕТ обращаться к программному обеспечению, специально предназначенному для этого; НЕ СЛЕДУЕТ повторно реализовывать свои собственные функции. [crypto_call]


    Вся функциональность программного обеспечения, создаваемого проектом, которая зависит от криптографии, ОБЯЗАНА быть реализована с использованием свободного ПО. [crypto_floss]


    Механизмы безопасности в программном обеспечении, создаваемом проектом, ОБЯЗАНЫ использовать стандартные длины криптографических ключей, которые, по крайней мере, соответствуют минимальным требованиям NIST до 2030 года (как указано в 2012 году). Проект ОБЯЗАН предоставлять возможность настройки ПО таким образом, чтобы уменьшенные длины ключей были полностью отключены. [crypto_keylength]
    Эти минимальные длины в битах перечислены далее: симметричный ключ - 112, модуль факторизации - 2048, дискретный логарифмический ключ - 224, дискретная логарифмическая группа - 2048, эллиптическая кривая - 224 и хеш - 224 (хеширование пароля не покрывается этой длиной, больше информации о хешировании пароля можно найти в описании критерия crypto_password_storage). См. http://www.keylength.com для сравнения рекомендаций по длинам криптографических ключей от различных организаций. Программное обеспечение МОЖЕТ допускать меньшие длины ключей в некоторых конфигурациях (в идеале не должно, поскольку это позволяет атаки через понижение длины ключа, но иногда требуется более короткая длина ключа для обеспечения взаимодействия с другими системами).


    Механизмы безопасности по умолчанию в программном обеспечении, создаваемом проектом, НЕДОПУСТИМО делать зависимыми от взломанных криптографических алгоритмов (например, MD4, MD5, single DES, RC4, Dual_EC_DRBG) или использовать режимы шифрования, которые не подходят для контекста, если только они не требуются для интероперабельности протокола (поддерживающего самую новую версию стандарта на этот протокол, широко распространенного в сетевой экосистеме, причем эта экосистема требует использования данного алгоритма или режима, не предлагая более безопасных альтернатив). В документации НЕОБХОДИМО описать все связанные с этим риски безопасности и все известные способы смягчения рисков, если данные алгоритмы или режимы действительно нужны для совместимости с другими реализациями этого протокола. [crypto_working]
    Режим ECB почти никогда не подходит, потому что внутри зашифрованного ECB текста обнаруживаются идентичные блоки, как можно видеть на примере «пингвина ECB», а режим CTR часто неприемлем, поскольку не выполняет аутентификацию и приводит к дубликатам, контекста, если состояние ввода повторяется. Во многих случаях лучше всего выбирать режим алгоритма с блочным шифром, предназначенный для сочетания секретности и аутентификации, например, Galois / Counter Mode (GCM) и EAX. Проекты МОГУТ разрешать пользователям включать сломанные механизмы, где это необходимо для совместимости, но в таких случаях пользователи знают, что они это делают.


    Механизмы безопасности по умолчанию в программном обеспечении, создаваемом проектом, НЕ СЛЕДУЕТ делать зависимыми от криптографических алгоритмов или режимов с известными серьезными слабостями (например, криптографический алгоритм хеширования SHA-1 или режим CBC в SSH). [crypto_weaknesses]
    Проблемы, связанные с режимом CBC в SSH, обсуждаются в описании уязвимости CERT: SSH CBC.


    В механизмах безопасности в программном обеспечении, создаваемом проектом, СЛЕДУЕТ реализовать совершенную прямую секретность для протоколов соглашений о ключах, чтобы ключ сеанса, произведенный из набора долгосрочных ключей, не мог быть скомпрометирован, если один из долгосрочных ключей скомпрометирован в будущем. [crypto_pfs]


    Если ПО, создаваемое проектом, требует хранить пароли для аутентификации внешних пользователей, НЕОБХОДИМО хранить пароли как итерированные хеши с солью для каждого пользователя с использованием алгоритма (итерированного) растяжения ключа (например, PBKDF2, Bcrypt или Scrypt). См. также: OWASP Password Storage Cheat Sheet (на англ.). [crypto_password_storage]
    Этот критерий применяется только тогда, когда программное обеспечение требует проверки внешних пользователей с использованием паролей (так называемая входящая аутентификация), таких как серверные веб-приложения. Он не применяется в тех случаях, когда программное обеспечение хранит пароли для аутентификации в других системах (исходящая аутентификация; например, программное обеспечение реализует клиент для какой-либо другой системы), поскольку по крайней мере части этого программного обеспечения должны часто обращаться к нехешированному паролю.


    Механизмы безопасности в программном обеспечении, создаваемом проектом, ОБЯЗАНЫ генерировать все криптографические ключи и временные значения с использованием криптографически безопасного генератора случайных чисел; НЕДОПУСТИМО делать это с использованием генераторов, которые криптографически небезопасны. [crypto_random]
    Криптографически безопасный генератор случайных чисел может быть аппаратным генератором случайных чисел или криптографически безопасным генератором псевдослучайных чисел (CSPRNG), использующим такие алгоритмы как Hash_DRBG, HMAC_DRBG, CTR_DRBG, Yarrow или Fortuna. Примеры вызовов защищенных генераторов случайных чисел включают java.security.SecureRandom в Java и window.crypto.getRandomValues в JavaScript. Примеры вызовов небезопасных генераторов случайных чисел включают java.util.Random в Java и Math.random в JavaScript.

  • Доставка, защищенная от атак посредника (MITM)


    Проект ОБЯЗАН использовать механизм доставки, устойчивый против атак посредника (MITM). Приемлемо использование https или ssh + scp. [delivery_mitm]
    Еще более сильным механизмом является выпуск программного обеспечения в виде пакетов, подписанных цифровой подписью, поскольку это смягчает атаки на систему распространения, но это работает только в том случае, если пользователи могут быть уверены, что открытые ключи для подписей верны и если пользователи действительно проверяют подпись.

    Distribution channels use HTTPS exclusively. [osps_br_03_02]



    НЕДОПУСТИМО получать криптографические контрольные суммы (например, sha1sum) по HTTP и использовать их без проверки криптографической подписи. [delivery_unsigned]
    Эти хеши могут быть изменены при передаче.

  • Исправление обнародованных уязвимостей


    НЕДОПУСТИМО оставлять незакрытыми уязвимости со степенью серьезности средней или выше, опубликованные более 60 дней назад. [vulnerabilities_fixed_60_days]
    Уязвимость должна быть исправлена ​​и выпущена самим проектом (патчи могут быть разработаны в другом месте). Уязвимость считается опубликованной (для цели данного критерия) после того, как она имеет CVE с описанием, бесплатно доступным для общественности, (например, в National Vulnerability Database) или когда проект был проинформирован, и информация была опубликована для общественности (возможно, самим проектом). Уязвимость имеет среднюю и высокую степень серьезности, если ее базовая оценка по CVSS 2.0 равна 4 или выше. Примечание. Это означает, что пользователи могут оставаться уязвимыми для всех злоумышленников по всему миру на срок до 60 дней. Этот критерий часто намного легче выполнить, чем рекомендует Google в Rebooting responsible disclosure, поскольку Google рекомендует, чтобы 60-дневный период начинался, когда проект был уведомлен, даже если отчет не является общедоступным.


    Проектам СЛЕДУЕТ оперативно исправлять критические уязвимости после сообщения о них. [vulnerabilities_critical_fixed]

  • Другие вопросы безопасности


    НЕДОПУСТИМА утечка действующих частных учетных данных (например, рабочий пароль или закрытый ключ), предназначенных для ограничения общего доступа, из публичных репозиториев. [no_leaked_credentials]
    Проект МОЖЕТ пропускать «шаблонные» учетные данные для тестирования и несущественные базы данных, при условии что они не предназначены для ограничения общего доступа.

 Анализ 7/8

  • Статический анализ кода


    НЕОБХОДИМО применять по крайней мере, один инструмент анализа статического кода (помимо предупреждений компилятора и "безопасных" режимов языка) к любой предлагаемой основной версии создаваемого ПО до ее выпуска, если есть хотя бы один инструмент на свободном ПО, который реализует этот критерий на выбранном языке. [static_analysis]
    Средство анализа статического кода анализирует программный код (как исходный код, промежуточный код или исполняемый файл), не выполняя его с конкретными входами. Для целей этого критерия предупреждения компилятора и «безопасные» языковые режимы не считаются инструментами анализа статического кода (они обычно избегают глубокого анализа, поскольку скорость имеет жизненно важное значение). Примеры таких статических инструментов анализа кода включают cppcheck (C, C++), статический анализатор Clang (C, C++), SpotBugs (Java), FindBugs (Java; включая FindSecurityBugs), PMD (Java), Brakeman (Ruby on Rails), lintr (R), goodpractice (R), Анализатор качества Coverity, SonarQube, Codacy и статический анализатор кода HP Enterprise Fortify. Более крупные списки инструментов можно найти в таких местах, как Wikipedia list of tools for static code analysis, OWASP information on static code analysis, NIST list of source code security analyzers и Wheeler's list of static analysis tools. Если для используемого языка(ов) реализации нет доступных инструментов статического анализа на свободном ПО, выберите «неприменимо» (N/A).

    Yes, Docker Secret Operator applies staticcheck (FLOSS) for advanced static analysis before releases. Runs via GitHub Actions CI/CD, blocks merge if violations found.



    ЖЕЛАТЕЛЬНО включать по крайней мере в один из инструментов статического анализа, используемых для критерия static_analysis, правила или подходы для поиска распространенных уязвимостей в анализируемом языке или среде. [static_analysis_common_vulnerabilities]
    Инструменты статического анализа, специально предназначенные для поиска распространенных уязвимостей, с большей вероятностью найдут их. Тем не менее, использование любых статических инструментов обычно помогает найти какие-то проблемы, поэтому мы предлагаем, но не требуем этого для получения базового значка.

    Yes, Docker Secret Operator applies gosec (FLOSS, MIT license) for security-focused
    static analysis before releases.

    gosec detects common vulnerabilities:

    • Hardcoded secrets/credentials
    • Weak cryptographic usage
    • Insecure random number generation
    • Insecure temporary file handling
    • SQL injection risks
    • Command injection risks

    Applied via GitHub Actions CI/CD (.github/workflows/coverage.yml)
    Blocks merge if vulnerabilities found.

    Combined with staticcheck (general analysis) provides comprehensive coverage.



    Все уязвимости со средней и высокой степенью серьезности, обнаруженные при статическом анализе кода, НЕОБХОДИМО своевременно исправлять после их подтверждения. [static_analysis_fixed]
    Уязвимость имеет среднюю и высокую степень серьезности, если ее оценка по CVSS 2.0 - 4 или выше.

    Yes, Docker Secret Operator fixes all medium and higher severity vulnerabilities
    discovered by static analysis in a timely manner.

    Process:

    1. Static analysis tool (staticcheck/gosec) finds issue
    2. CI/CD blocks merge if medium+ severity detected
    3. Developer confirms vulnerability (false positives rejected)
    4. Lead Maintainer assigns priority
    5. Fix implemented and tested
    6. Pull request reviewed and merged
    7. Released in next patch version

    Timeline by severity:

    • Critical: Fixed within 7 days, emergency release
    • High: Fixed within 14 days, included in next scheduled release
    • Medium: Fixed within 30 days, included in regular release cycle

    Evidence from Phase 1 (May 2026):

    • Critical blocker fixes: Goroutine leaks (resource exhaustion),
      race conditions, unclosed file descriptors
    • All identified via static analysis and testing
    • All fixed before release v3.5.17
    • Zero outstanding medium+ vulnerabilities in main branch

    Tracking:

    • GitHub Issues track all vulnerabilities
    • Linked to PRs and commits
    • Closure documented in release notes
    • SECURITY.md documents response timeline


    ЖЕЛАТЕЛЬНО выполнять анализ статического исходного кода при каждом коммите или по крайней мере ежедневно. [static_analysis_often]

  • Динамический анализ кода


    ЖЕЛАТЕЛЬНО применять по крайней мере один инструмент динамического анализа к любой предлагаемой основной (major) версии программного обеспечения перед ее выпуском . [dynamic_analysis]
    Инструмент динамического анализа проверяет программное обеспечение, выполняя его с конкретными входными данными. Например, проект МОЖЕТ использовать инструмент фаззинг-тестирования (например, American Fuzzy Lop) или сканер веб-приложений (например, OWASP ZAP или w3af). В некоторых случаях проект OSS-Fuzz может быть готов применить фаззинг-тестирование к вашему проекту. Для целей этого критерия инструмент динамического анализа должен каким-то образом варьировать исходные данные, чтобы искать проблемы разного рода или быть автоматическим набором тестов с покрытием веток исполнения не менее 80%. Страница Википедии о динамическом анализе и cтраница OWASP о фаззинг-тестировании указывают некоторые инструменты динамического анализа. Использование инструмента/ов анализа МОЖЕТ, но не обязано быть сосредоточено на поиске уязвимостей в безопасности.

    Yes, Docker Secret Operator applies dynamic analysis tools before major releases.

    Primary tool: go test -race (FLOSS)

    • Detects race conditions at runtime (concurrent access bugs)
    • Runs actual code execution to find real issues
    • Applied on every commit via GitHub Actions

    Dynamic analysis applied:

    1. go test -race ./...

      • Detects goroutine races
      • Finds unsafe concurrent access
      • Evidence: Phase 1 fixed goroutine leaks detected via race detector
    2. go test -cover

      • Measures code execution coverage
      • Ensures all code paths tested
      • Enforced minimum: 70% overall, 85% critical packages
    3. GitHub Actions CI/CD

      • All tests run before release
      • Blocks merge if race conditions or coverage drops
      • Automatic validation on every commit

    Before v3.5.17 release:

    • Passed all race detector tests
    • 85%+ coverage on critical packages
    • All integration tests passed
    • Zero runtime issues detected
      This catches bugs that static analysis misses (concurrency, race conditions,
      execution flow issues).


    ЖЕЛАТЕЛЬНО регулярно использовать по меньшей мере один динамический инструмент (например, fuzzer или сканер веб-приложения) в сочетании с механизмом для обнаружения проблем безопасности памяти, таких как перезапись буфера, если программное обеспечение, создаваемое проектом, включает части, написанные на небезопасном языке (например, C или C++). Если проект не создает программное обеспечение, написанное на небезопасном языке, выберите «неприменимо» (N/A). [dynamic_analysis_unsafe]
    Примерами механизмов обнаружения проблем безопасности памяти являются Address Sanitizer (ASAN) (доступен в GCC и LLVM), Memory Sanitizer и valgrind. Другие потенциально используемые инструменты включают Thread Sanitizer и Undefined Behavior Sanitizer. Достаточно широкое использование утверждений (assertions) тоже может быть приемлемо.


    ЖЕЛАТЕЛЬНО включать в ПО, создаваемое проектом, достаточно много утверждений (assertions) времени выполнения, проверяемых при динамическом анализе. Во многих случаях эти утверждения не должны попадать в сборки под эксплуатацию (production). [dynamic_analysis_enable_assertions]
    Этот критерий не предполагает включения утверждений на этапе эксплуатации; решение об этом полностью лежит на проекте и его пользователях. Вместо этого критерий направлен на улучшение обнаружения ошибок во время динамического анализа перед развертыванием. Использование утверждений при эксплуатации полностью отличается от такового во время динамического анализа (например, при тестировании). В некоторых случаях включать утверждения при эксплуатации крайне неразумно (особенно в компонентах с высокой степенью целостности). Существует множество аргументов против включения утверждений в выпускаемых сборках: например, библиотеки не должны вызывать сбой при вызове, присутствие утверждений может привести к отклонению магазинами приложений и/или активация их при рабочем использовании может привести к раскрытию частных данных, таких как закрытые ключи. Помните, что во многих дистрибутивах Linux NDEBUG не определен, поэтому C/C++assert() в таких рабочих средах по умолчанию будет включен. Может быть важно использовать другой механизм утверждений или определить NDEBUG для эксплуатации в этих средах.


    Проект ОБЯЗАН своевременно исправлять все уязвимости средней и выше степени серьезности, обнаруженные при динамическом анализе кода, после их подтверждения. [dynamic_analysis_fixed]
    Если вы не используете динамический анализ кода и, следовательно, не обнаружили уязвимостей таким способом, выберите «неприменимо» (N/A). Степень серьезности уязвимости считается средней или выше, если уязвимость имеет среднюю или выше базовую оценку по Common Vulnerability Scoring System (CVSS). В версиях CVSS с 2.0 по 3.1 это соответствует оценке 4.0 и выше. Проекты могут использовать оценку CVSS опубликованную в любой широко используемой базе данных по уязвимостям (такой как National Vulnerability Database) используя самую новую версию CVSS доступную в этой базе данных. Вместо этого проекты могут сами вычислять серьезность используя последнюю версию CVSS на момент раскрытия уязвимости, если вводные для вычисления раскрываются вместе с публикацией уязвимости.


Эти данные доступны по лицензии Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0). Это означает, что получатель данных может распространять данные с изменениями или без них, при условии, что получатель данных предоставляет текст данного соглашения вместе с распространяемыми данными. Пожалуйста, укажите в качестве источника Md Umair и участников OpenSSF Best Practices badge.

Владелец анкеты на значок проекта: Md Umair.
2026-05-20 13:05:05 UTC, последнее изменение сделано 2026-05-21 04:44:32 UTC.