sipnab

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

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

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


Это критерии Базового Уровня 1. Это критерии версии v2026.08.28.

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

        

 Основы

  • Общая

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

    sipnab is a SIP and RTP capture, analysis, and security tool for VoIP networks. It unifies sngrep (interactive TUI) and sipgrep (CLI) into a single Rust binary, adding first-class RTP quality monitoring (jitter, loss, MOS), VoIP diagnostic aliases, TLS/SRTP decryption, and security analysis (scanner, flood and fraud detection, STIR/SHAKEN). It also runs as an MCP server so an AI agent can drive it. Its only runtime dependency is libpcap.

    Используйте формат выражения лицензии 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) - это структурированная схема именования для информационных систем, программного обеспечения и пакетов. Она используется в ряде систем и баз данных для отчетов об уязвимостях.

    sipnab is under active development and not yet recommended for production use (the README states this). Despite the pre-1.0 status, it enforces a strict quality bar: more than 10,000 automated tests (10,468 at v0.5.196) run in CI on every push; Clippy and CodeQL gate every merge on a deny-on-warning basis; 19 fuzz targets cover every attacker-controlled parser and run daily under AddressSanitizer via ClusterFuzzLite, with ThreadSanitizer weekly over the threaded paths; releases ship with sigstore build provenance and CycloneDX SBOMs; and the tool is validated against a real-traffic pcap corpus. SECURITY.md documents the security model, including privilege drop, chroot and the scope of reportable issues.

    One note for reviewers of the crypto criteria: sipnab decrypts SIP and RTP that other systems encrypted, so it must interoperate with whatever algorithm a capture used. Vetted "weak" algorithms may therefore appear where reading an existing capture requires them — the project does not choose weak cryptography for its own protection.

 Элементы управления 24/24 ●

  • Элементы управления


    Когда пользователь пытается прочитать или изменить чувствительный ресурс в авторитетном репозитории проекта, система ДОЛЖНА требовать от пользователя прохождения процесса многофакторной аутентификации. [OSPS-AC-01.01]
    Обеспечьте многофакторную аутентификацию для системы контроля версий проекта, требуя от соавторов предоставления второй формы аутентификации при доступе к конфиденциальным данным или изменении настроек репозитория. Для этой меры приемлемы passkeys (ключи доступа).

    GitHub requires 2FA as of March 2023.



    При добавлении нового соавтора система контроля версий ДОЛЖНА требовать ручного назначения прав доступа или по умолчанию ограничивать права доступа соавтора до минимально доступных привилегий. [OSPS-AC-02.01]
    Большинство публичных систем контроля версий настроены таким образом. Убедитесь, что система контроля версий проекта всегда назначает минимально доступные права доступа соавторам по умолчанию при добавлении, предоставляя дополнительные права доступа только при необходимости.

    GitHub grants new collaborators only the permission level the owner explicitly assigns, and there are no organization base permissions (user-owned repository). Workflows default to least privilege too: every workflow declares top-level permissions of contents: read (scorecard.yml declares none) and raises scopes only per job.



    При попытке прямого коммита в основную ветку проекта механизм принудительного исполнения ДОЛЖЕН предотвращать применение изменения. [OSPS-AC-03.01]
    Если VCS централизована, установите защиту ветки на основную ветку в VCS проекта. В качестве альтернативы используйте децентрализованный подход, как в ядре Linux, где изменения сначала предлагаются в другом репозитории, а слияние изменений в основной репозиторий требует специального отдельного действия.

    Branch protection on main requires the CI success status check, so changes reach main only through pull requests that pass CI (documented in CONTRIBUTING.md: https://github.com/NormB/sipnab/blob/main/CONTRIBUTING.md).



    Когда предпринимается попытка удалить основную ветку проекта, система контроля версий ОБЯЗАНА рассматривать это как деликатное действие и требовать явного подтверждения намерения. [OSPS-AC-03.02]
    Установите защиту ветки на основную ветку в системе контроля версий проекта для предотвращения удаления.

    Branch protection on main blocks deletion and force-pushes; deleting the branch would require the owner to first remove the protection rule explicitly in repository settings.



    Когда конвейер CI/CD оперирует ненадежными метаданными, эти параметры ОБЯЗАНЫ быть очищены и проверены перед использованием в конвейере. [OSPS-BR-01.01]
    Конвейеры CI/CD должны санировать (заключать в кавычки, экранировать или завершаться при ожидаемых значениях) все входные метаданные, соответствующие недоверенным источникам. Это включает такие данные, как имена веток, сообщения коммитов, теги, заголовки запросов на слияние и информацию об авторах.

    No workflow interpolates untrusted event data (PR titles, bodies, branch names, issue or comment text) into run: scripts; a repository-wide search finds no github.event.pull_request.* / issue / comment / head_ref expressions in .github/workflows/. No workflow uses pull_request_target. Every third-party action is pinned to a full commit SHA.



    Когда конвейер CI/CD работает с недоверенными снимками кода, он ДОЛЖЕН запрещать доступ к привилегированным учётным данным и ресурсам CI/CD. [OSPS-BR-01.03]
    Конвейеры CI/CD должны изолировать недоверенные снимки кода от привилегированных учётных данных и ресурсов. В частности, проекты должны следить за тем, чтобы рабочие процессы, выполняющие сборку или запуск кода до его проверки коллаборатором, не имели доступа к учётным данным CI/CD.

    Pull requests from forks run under the pull_request trigger, which GitHub executes without repository secrets and with a read-only token; no workflow uses pull_request_target or workflow_run on untrusted code. Credential-bearing jobs (release, crates.io publish via the crates-io environment and OIDC trusted publishing, sigstore attestations) run only on tag pushes by the maintainer.



    Когда проект указывает URI как официальный канал проекта, этот URI ОБЯЗАН передаваться исключительно с использованием зашифрованных каналов. [OSPS-BR-03.01]
    Настройте веб-сайты и системы контроля версий проекта на использование зашифрованных каналов, таких как SSH или HTTPS для передачи данных. Убедитесь, что все инструменты и домены, на которые ссылается документация проекта, доступны только через зашифрованные каналы.

    Project URLs use HTTPS exclusively.



    Если проект указывает URI в качестве официального канала распространения, этот канал ОБЯЗАН быть защищен от атак «злоумышленник в канале связи» (adversary-in-the-middle) с использованием криптографически аутентифицированных каналов. [OSPS-BR-03.02]
    Артефакты, распространяемые проектом, следует распространять через каналы, обеспечивающие целостность и подлинность. Использование HTTPS для загрузок, подписанных релизов или распространения через доверенные менеджеры пакетов — все это приемлемые методы защиты от атак «злоумышленник в канале связи».

    Distribution channels use HTTPS exclusively.



    Проект ОБЯЗАН предотвращать непреднамеренное сохранение незашифрованных конфиденциальных данных, таких как секреты и учетные данные, в системе контроля версий. [OSPS-BR-07.01]
    Настройте .gitignore или эквивалент для исключения файлов, которые могут содержать конфиденциальную информацию. Используйте pre-commit хуки и автоматизированные инструменты сканирования для обнаружения и предотвращения включения конфиденциальных данных в коммиты.

    No credentials are stored in the repository. [no_leaked_credentials]



    Когда проект сделал релиз, документация проекта ОБЯЗАНА включать руководства пользователя для всего базового функционала. [OSPS-DO-01.01]
    Создайте руководства пользователя или документацию для всего базового функционала проекта, объясняющие, как устанавливать, настраивать и использовать возможности проекта. Если есть какие-либо известные опасные или деструктивные действия, включите хорошо заметные предупреждения.

    Basic documentation is published on the documentation site and in the repository, covering all four required topics:
    • How to install — https://sipnab.com/docs/install/
    • How to start / how to use — the interactive TUI guide at https://sipnab.com/docs/tui/ and the command-line reference at https://sipnab.com/docs/cli/
    • How to use, with worked examples — the cookbook of task-based recipes at https://sipnab.com/docs/cookbook/, plus a step-by-step MCP walkthrough at https://sipnab.com/docs/mcp-walkthrough/ and a troubleshooting guide at https://sipnab.com/docs/troubleshooting/
    • How to use it securely — SECURITY.md documents the security model and operational guidance, including running with privilege drop (--user) and filesystem isolation (--chroot), the "do not open a public issue for vulnerabilities" reporting rule, and the tool's threat model: https://github.com/NormB/sipnab/blob/main/SECURITY.md [documentation_basics]



    Когда проект сделал релиз, документация проекта ОБЯЗАНА включать руководство по сообщению о дефектах. [OSPS-DO-02.01]
    Рекомендуется, чтобы проекты использовали трекер задач по умолчанию в их системе контроля версий. Если используется внешний источник, убедитесь, что документация проекта и руководство по внесению вклада четко и заметно объясняют, как использовать систему сообщения об ошибках. Рекомендуется, чтобы документация проекта также устанавливала ожидания относительно того, как дефекты будут сортироваться и решаться.

    Non-trivial SECURITY[.md] file found file in repository: https://github.com/NormB/sipnab/blob/main/SECURITY.md.



    Проект ОБЯЗАН иметь один или несколько механизмов для публичного обсуждения предлагаемых изменений и препятствий использования. [OSPS-GV-02.01]
    Создайте один или несколько механизмов для публичных обсуждений в рамках проекта, таких как списки рассылки, мгновенные сообщения или трекеры задач, чтобы облегчить открытое общение и обратную связь.

    GitHub supports public discussions on proposed changes (via pull requests) and usage obstacles (via issues).



    Документация проекта ОБЯЗАНА включать объяснение процесса внесения вклада или четко указывать, что публичные вклады не принимаются [OSPS-GV-03.01]
    Создайте файл CONTRIBUTING.md или директорию CONTRIBUTING/ для описания процесса внесения вклада, включая шаги для отправки изменений и взаимодействия с сопровождающими проекта.

    Contribution process documented in repository.



    Лицензия исходного кода ОБЯЗАНА соответствовать Определению Открытого ПО OSI или Определению Свободного Программного Обеспечения FSF. [OSPS-LE-02.01]
    Добавьте файл LICENSE в репозиторий проекта с лицензией, которая является одобренной лицензией Open Source Initiative (OSI), или свободной лицензией, одобренной Фондом свободного программного обеспечения (FSF). Примеры таких лицензий включают MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL) и GNU General Public License (GPL). Выпуск в публичное достояние соответствует этому контролю, если нет других ограничений, таких как патенты.

    sipnab is released under MIT OR Apache-2.0. Both licenses independently satisfy every bar the criterion lists:

    • OSI-approved: MIT and Apache-2.0 are both on the OSI approved-license list.
    • FSF free: both are FSF-approved free-software licenses.
    • Debian main: both are accepted in Debian main.
    • Fedora "good": both are Fedora-approved "good" licenses. [floss_license]


    Лицензия выпускаемых программных активов ОБЯЗАНА соответствовать Определению Открытого ПО OSI или Определению Свободного Программного Обеспечения FSF. [OSPS-LE-02.02]
    Если с выпущенными программными активами включена другая лицензия, убедитесь, что это одобренная лицензия Open Source Initiative (OSI) или свободная лицензия, одобренная Free Software Foundation (FSF). Примеры таких лицензий включают MIT, BSD 2-clause, BSD 3-clause revised, Apache 2.0, Lesser GNU General Public License (LGPL) и GNU General Public License (GPL). Обратите внимание, что лицензия для выпущенных программных активов может отличаться от лицензии для исходного кода.

    sipnab is released under MIT OR Apache-2.0. Both licenses independently satisfy every bar the criterion lists:

    • OSI-approved: MIT and Apache-2.0 are both on the OSI approved-license list.
    • FSF free: both are FSF-approved free-software licenses.
    • Debian main: both are accepted in Debian main.
    • Fedora "good": both are Fedora-approved "good" licenses. [floss_license]


    Лицензия исходного кода ОБЯЗАНА поддерживаться в файле LICENSE, файле COPYING, каталоге LICENSES/ или каталоге LICENSE/ соответствующего репозитория. [OSPS-LE-03.01]
    Включите лицензию исходного кода проекта в файл LICENSE, файл COPYING, каталог LICENSES/ или каталог LICENSE/ проекта, чтобы обеспечить наглядность и ясность условий лицензирования. Имя файла МОЖЕТ иметь расширение. Если у проекта несколько репозиториев, убедитесь, что каждый репозиторий включает файл лицензии.

    License file found in repository.



    Лицензия выпускаемых программных активов ОБЯЗАНА быть включена в выпускаемый исходный код или в файл LICENSE, файл COPYING либо каталог LICENSE/ рядом с соответствующими активами релиза. [OSPS-LE-03.02]
    Включите лицензию выпущенных программных активов проекта в выпущенный исходный код или в файл LICENSE, файл COPYING или директорию LICENSE/ рядом с соответствующими выпущенными активами, чтобы обеспечить видимость и ясность условий лицензирования. Имя файла МОЖЕТ иметь расширение. Если у проекта несколько репозиториев, убедитесь, что каждый репозиторий включает файл лицензии.

    Репозиторий исходного кода проекта ОБЯЗАН быть общедоступным для чтения по статическому URL. [OSPS-QA-01.01]
    Используйте общую систему контроля версий (VCS), такую как GitHub, GitLab или Bitbucket. Убедитесь, что репозиторий доступен для публичного чтения. Избегайте дублирования или зеркалирования репозиториев, если только хорошо видимая документация не разъясняет первичный источник. Избегайте частых изменений репозитория, которые могут повлиять на URL репозитория. Убедитесь, что репозиторий публичный.

    Repository is publicly available on GitHub.



    Система контроля версий ОБЯЗАНА содержать общедоступную запись всех внесенных изменений, кто внес изменения и когда были внесены изменения. [OSPS-QA-01.02]
    Используйте общую VCS, такую как GitHub, GitLab или Bitbucket, для поддержания публично доступной истории коммитов. Избегайте сжатия или перезаписи коммитов таким образом, чтобы это скрывало автора любых коммитов.

    Repository git metadata is publicly available on GitHub.



    Когда система управления пакетами это поддерживает, репозиторий исходного кода ОБЯЗАН содержать список зависимостей, учитывающий прямые языковые зависимости. [OSPS-QA-02.01]
    Это может быть в виде файла менеджера пакетов или файла языковых зависимостей, перечисляющего все прямые зависимости, такие как package.json, Gemfile или go.mod.

    Direct dependencies are declared in Cargo.toml and fully resolved in the committed Cargo.lock; the fuzz workspace has its own manifest and lockfile. CycloneDX SBOMs are also published with each release.



    Проекты с несколькими репозиториями ОБЯЗАНЫ документировать список кодовых баз, являющихся частью проекта. [OSPS-QA-04.01]
    Документируйте любые дополнительные репозитории кода подпроектов, создаваемые проектом и компилируемые в выпуск. Эта документация должна включать статус и назначение соответствующей кодовой базы.

    sipnab is a single-repository project; the source, documentation site (https://sipnab.com, built by .github/workflows/pages.yml) and fuzz targets all live in https://github.com/NormB/sipnab



    Система управления версиями НЕ ДОЛЖНА содержать сгенерированные исполняемые артефакты. [OSPS-QA-05.01]
    Удалите сгенерированные исполняемые артефакты из системы контроля версий проекта. Рекомендуется, чтобы в любом сценарии, где сгенерированный исполняемый артефакт является критическим для процесса, такого как тестирование, он должен вместо этого генерироваться во время сборки или храниться отдельно и загружаться во время определенного хорошо задокументированного этапа конвейера.

    No generated executables are committed; binaries are built by CI and published only as release assets.



    Система управления версиями НЕ ДОЛЖНА содержать нерецензируемые двоичные артефакты. [OSPS-QA-05.02]
    Не добавляйте никакие непроверяемые бинарные артефакты в систему контроля версий проекта. Это включает исполняемые бинарные файлы приложений, файлы библиотек и аналогичные артефакты. Это не включает такие активы, как графические изображения, звуковые или музыкальные файлы и подобный контент, обычно хранящийся в бинарном формате.

    The only binary files are small test fixtures: packet captures (.pcap/.pcapng) under tests/ that are readable with sipnab, tshark or Wireshark, and three tiny .bin protocol fixtures (TLS premaster values, an rtpengine reply) documented alongside the tests that use them. No opaque or compiled binaries are committed.



    Документация проекта ОБЯЗАНА содержать контакты по вопросам безопасности. [OSPS-VM-02.01]
    Создайте файл security.md (или с аналогичным именем), который содержит контакты по вопросам безопасности для проекта.

    The vulnerability reporting process is published in SECURITY.md (https://github.com/NormB/sipnab/blob/main/SECURITY.md): do not open a public issue; email security@sipnab.com with a description, reproduction steps and impact, using a [SECURITY] subject prefix. It also defines scope, response targets and disclosure policy. [vulnerability_report_process]



Вы можете использовать инструменты и системы ИИ для предложения изменений через простой URL, например https://www.bestpractices.dev/ru/projects/13931/choose/edit?osps_ac_01_01_status=Met&osps_ac_01_01_justification=GitHub+enforced. Смотрите нашу систему автоматизированных предложений о том, как это сделать. Эти данные доступны по лицензии Community Data License Agreement – Permissive, Version 2.0 (CDLA-Permissive-2.0). Это означает, что получатель данных может распространять данные с изменениями или без них, при условии, что получатель данных предоставляет текст данного соглашения вместе с распространяемыми данными. Пожалуйста, укажите в качестве источника Norm Brandinger и участников OpenSSF Best Practices badge.

Владелец анкеты на значок проекта: Norm Brandinger.
2026-08-02 14:39:34 UTC, последнее изменение сделано 2026-09-30 15:50:33 UTC. Последний раз условия для получения значка были выполнены 2026-08-06 13:59:14 UTC.