bookstack-mcp

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

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

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


Это критерии Базового Уровня 3. Эти критерии относятся к базовой версии v2025.10.10 с обновлённым текстом критериев из версии v2026.02.19. Критерии, новые в версии v2026.02.19, помечены как «будущие» и начнут применяться с 2026-06-01. Пожалуйста, предоставьте ответы на «будущие» критерии до этой даты.

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

        

 Основы

  • Общая

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

    BookStack stores your team's knowledge — but AI assistants can't access it without an integration. BookStack MCP Server bridges that gap, connecting AI assistants (Claude Desktop, LibreChat, and any MCP-compatible client) directly to your BookStack instance so they can search, read, and manage your documentation through natural language.

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

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

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


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

    All CI/CD workflows use a read-all or contents: read baseline with per-job permission overrides granting only what each job requires. The one over-privileged case (verify job having packages: write when it only inspects images) was corrected to packages: read in PR #73. Write permissions (packages: write, contents: write, security-events: write) are scoped only to the specific jobs that need them.



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

    The pipelines do not interpolate user-controlled strings (branch names, commit messages, PR titles) directly into shell run: steps. Dynamic values used in shell steps are either integers (PR number), file-sourced (version from package.json via jq), or GitHub-controlled identifiers (github.repository, github.actor). StepSecurity harden-runner is applied to all jobs.



    Когда создается официальный релиз, все активы в этом релизе ДОЛЖНЫ быть четко связаны с идентификатором релиза или другим уникальным идентификатором для актива. [OSPS-BR-02.02]
    Назначьте уникальный идентификатор версии каждому программному активу, произведенному проектом, следуя единообразному соглашению об именовании или схеме нумерации. Примеры включают SemVer, CalVer или идентификатор git-коммита.

    All release assets are tagged with the version identifier vX.Y.Z derived from packages/stdio/package.json:

    GitHub Release is created with the exact git tag (vX.Y.Z) as both the release name and tag ref
    Docker images are published with :X.Y.Z, :X.Y, and :X tags in addition to :latest, ensuring the exact version is always addressable
    SLSA Level 2 provenance attestations are attached to the specific image digest at build time, cryptographically binding each image to the commit and build run that produced it
    The git tag is only created after the registry manifest is verified, so the tag always corresponds to a confirmed published image



    НЕОБХОДИМО, чтобы проект определил политику управления секретами и учетными данными, используемыми проектом. Политика должна включать руководства по хранению, доступу и ротации секретов и учетных данных. [OSPS-BR-07.02]
    Задокументируйте, как секреты и учетные данные управляются и используются в рамках проекта. Это должно включать подробную информацию о том, как хранятся секреты (например, с использованием инструмента управления секретами), как контролируется доступ, и как секреты ротируются или обновляются. Убедитесь, что конфиденциальная информация не встроена в исходный код и не хранится в системах контроля версий.

    SECURITY.md contains a "Secrets and Credentials Policy" section documenting storage (env vars only, .gitignore, never hardcoded), access (dedicated least-privilege BookStack user, separate tokens per environment), rotation (immediately on exposure, recommended 90-day cadence, revoke old tokens promptly), CI/CD secrets (none manually stored; only auto-provisioned short-lived GITHUB_TOKEN), and incident response (rotate first, then report privately).



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

    The README Verifying releases section documents how to verify Docker image provenance attestations using gh attestation verify (by tag and by digest), confirming the image was built by the official pipeline from this repository. It also documents git tag --verify for signed source tags.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА содержать инструкции по проверке ожидаемой личности человека или процесса, создающего программный релиз. [OSPS-DO-03.02]
    Ожидаемая личность может быть в форме идентификаторов ключей, используемых для подписи, эмитента и личности из сертификата sigstore или других подобных форм. По возможности избегайте хранения этой документации в том же месте, что и конвейер сборки и выпуска, чтобы избежать компрометации как программного обеспечения, так и документации для проверки целостности программного обеспечения в случае единичного нарушения безопасности.

    The README Verifying releases section documents two methods for verifying authorship identity:

    gh attestation verify confirms the image was built by a GitHub Actions workflow running under the paradoxbound organisation — cryptographically binding the release to the repository owner's identity
    git tag --verify verifies the SSH signature on the git tag against the signing key registered to the paradoxbound GitHub account



    Когда проект выпустил релиз, документация проекта ДОЛЖНА включать описательное заявление о масштабе и сроках поддержки для каждого релиза. [OSPS-DO-04.01]
    Для информирования о масштабе и сроках поддержки выпущенных программных активов проекта, проект должен иметь файл SUPPORT.md, раздел "Поддержка" в SECURITY.md или другую документацию, объясняющую жизненный цикл поддержки, включая ожидаемую продолжительность поддержки для каждого релиза, типы предоставляемой поддержки (например, исправления ошибок, обновления безопасности) и любые соответствующие политики или процедуры получения поддержки.

    SECURITY.md contains a "Supported Versions" section stating that only the latest release (2.6.x) is actively maintained with security updates, and all prior versions (< 2.6) are unsupported. This defines both scope (security updates) and duration (latest release only) of support.



    Когда проект выпустил релиз, документация проекта ДОЛЖНА предоставлять описательное заявление о том, когда релизы или версии больше не будут получать обновления безопасности. [OSPS-DO-05.01]
    Для информирования о масштабе и сроках поддержки исправлений безопасности, проект должен иметь SUPPORT.md или другую документацию, объясняющую политику проекта в отношении обновлений безопасности.

    SECURITY.md states: "Only the latest release is actively maintained with security updates." The Supported Versions table marks all versions below 2.6.x as unsupported. This makes the end-of-support condition explicit: a release stops receiving security updates as soon as a newer release is published.



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

    MAINTAINERS.md contains an "Adding collaborators" section documenting the four-step review process required before escalated permissions are granted: verified contribution track record, identity verification, explicit approval from @paradoxbound, and least-privilege scoping. This policy applies to all sensitive resource access listed in the document.



    Когда проект выпустил релиз, все скомпилированные выпущенные программные активы ДОЛЖНЫ поставляться со списком компонентов программного обеспечения (Software Bill of Materials). [OSPS-QA-02.02]
    Рекомендуется автоматически генерировать SBOM во время сборки с использованием инструмента, который был проверен на точность. Это позволяет пользователям получать эти данные стандартизированным способом наряду с другими проектами в их среде.

    The project produces Docker images as its compiled release assets. Starting from v2.6.1, every Docker image release is accompanied by a Software Bill of Materials (SBOM) in SPDX JSON format (sbom.spdx.json), generated by anchore/sbom-action using Syft and attached as an asset to the corresponding GitHub Release. Users can download it with gh release download vX.Y.Z --pattern 'sbom.spdx.json'. The release pipeline validates SBOM generation on every PR via a smoke test in the pre-merge CD check job.



    Когда проект выпустил релиз, состоящий из нескольких репозиториев исходного кода, все подпроекты ДОЛЖНЫ применять требования безопасности, которые являются столь же строгими или более строгими, чем первичная кодовая база. [OSPS-QA-04.02]
    Любые дополнительные репозитории кода подпроектов, созданные проектом и скомпилированные в релиз, должны применять требования безопасности в соответствии со статусом и целями соответствующей кодовой базы. В дополнение к следованию соответствующим требованиям OSPS Baseline, это может включать требование проверки безопасности, обеспечение отсутствия уязвимостей и обеспечение отсутствия известных проблем безопасности.

    This project is a single-repository monorepo (packages/core + packages/stdio). There are no separate source code repositories involved in producing a release — both packages live in github.com/paradoxbound/bookstack-mcp and are built, tested, and released together by the same CI/CD pipeline. The criterion is marked N/A.



    Пока проект активен, документация проекта ДОЛЖНА четко документировать, когда и как выполняются тесты. [OSPS-QA-06.02]
    Добавьте раздел в документацию по участию в проекте, объясняющий, как запускать тесты локально и как запускать тесты в конвейере CI/CD. Документация должна объяснять, что тестируют тесты и как интерпретировать результаты.

    The README Testing section documents both when and how tests are run. Tests run automatically on every pull request and every push to main via the Functional Tests GitHub Actions workflow. Locally, tests are run with npm test after setting TEST_BOOKSTACK_URL, TEST_BOOKSTACK_TOKEN_ID, and TEST_BOOKSTACK_TOKEN_SECRET. The section also describes test behaviour: self-seeding, automatic cleanup, and graceful skip when credentials are absent.



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

    CONTRIBUTING.md step 2 in "Making changes" explicitly states: "any change that adds or modifies functionality should include corresponding tests in the automated test suite (packages/core/tests/)". This policy applies to all contributors as part of the documented contribution workflow.



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

    The project's primary branch is protected by a branch protection rule requiring at least one approving review from a non-author collaborator before any pull request can be merged. This is enforced for all users including repository administrators, with no bypass permitted.



    Когда проект выпустил релиз, проект ДОЛЖЕН выполнить моделирование угроз и анализ поверхности атаки для понимания и защиты от атак на критические пути кода, функции и взаимодействия внутри системы. [OSPS-SA-03.02]
    Моделирование угроз - это деятельность, при которой проект рассматривает кодовую базу, связанные процессы и инфраструктуру, интерфейсы, ключевые компоненты и "думает как хакер", проводя мозговой штурм о том, как система может быть взломана или скомпрометирована. Каждая выявленная угроза перечисляется, чтобы проект мог затем подумать о том, как проактивно избежать или закрыть любые бреши/уязвимости, которые могут возникнуть. Убедитесь, что это обновляется для новых функций или критических изменений.

    The project's SECURITY.md contains a 'Threat Model and Attack Surface Analysis' section documenting trust boundaries, entry points, and critical code paths, with six identified threats rated by severity and their mitigations. The section notes it is reviewed and updated at each release.



    Пока активен, любые уязвимости в программных компонентах, не затрагивающие проект, ДОЛЖНЫ быть учтены в документе VEX, дополняющем отчет об уязвимостях деталями о неэксплуатируемости. [OSPS-VM-04.02]
    Создайте поток VEX, сообщающий о статусе эксплуатируемости известных уязвимостей, включая детали оценки или любые меры по смягчению, препятствующие выполнению уязвимого кода.

    A VEX document (vex.json) in OpenVEX format is maintained at the repository root. When vulnerability scanners report CVEs in dependencies that do not affect the deployed product, statements are added with machine-readable justifications. Trivy reads the VEX document automatically during both PR and release scans to suppress confirmed non-applicable findings."



    Пока активна, документация проекта ДОЛЖНА включать политику, определяющую порог для устранения результатов SCA, связанных с уязвимостями и лицензиями. [OSPS-VM-05.01]
    Задокументируйте в проекте политику, определяющую порог для устранения результатов SCA, связанных с уязвимостями и лицензиями. Включите процесс выявления, приоритизации и устранения этих результатов.

    SECURITY.md includes a 'Vulnerability and License Remediation Policy' section defining severity thresholds (CRITICAL blocks release, HIGH must be resolved within 30 days, MEDIUM/LOW addressed via Dependabot) and a license policy requiring OSI-approved permissive licenses for all runtime dependencies.



    Пока активна, документация проекта ДОЛЖНА включать политику для устранения нарушений SCA до любого релиза. [OSPS-VM-05.02]
    Задокументируйте в проекте политику для устранения применимых результатов анализа состава программного обеспечения перед любым релизом и добавьте проверки статуса, которые подтверждают соответствие этой политике перед релизом.

    SECURITY.md explicitly states that no release may be published while any unresolved CRITICAL or HIGH severity SCA finding remains open. CRITICAL findings are blocked by the Trivy release gate and HIGH findings are blocked by the npm audit CI gate, both of which must pass before a release can proceed.



    Пока активны, все изменения в кодовой базе проекта ДОЛЖНЫ автоматически оцениваться на соответствие задокументированной политике по вредоносным зависимостям и известным уязвимостям в зависимостях, а затем блокироваться в случае нарушений, за исключением случаев, когда они объявлены и подавлены как неэксплуатируемые. [OSPS-VM-05.03]
    Создайте проверку статуса в системе контроля версий проекта, которая запускает инструмент анализа состава программного обеспечения для всех изменений в кодовой базе. Требуйте, чтобы проверка статуса проходила успешно, прежде чем изменения могут быть объединены.

    SECURITY.md documents the automated dependency evaluation pipeline that runs on every PR and push to main: npm audit blocks on HIGH/CRITICAL and malicious package advisories, OSV Scanner blocks on any OSV advisory match including malicious packages, Trivy blocks on CRITICAL in the Docker image, and GitHub Dependency Review blocks on new vulnerable or malicious dependencies introduced by a PR. Confirmed non-exploitable findings may be suppressed via vex.json.



    Пока активна, документация проекта ДОЛЖНА включать политику, определяющую порог для устранения результатов SAST. [OSPS-VM-06.01]
    Задокументируйте в проекте политику, определяющую порог для устранения результатов статического тестирования безопасности приложений (SAST). Включите процесс выявления, приоритизации и устранения этих результатов.

    SECURITY.md includes a 'SAST Policy' section defining remediation thresholds: error-level (HIGH/CRITICAL) CodeQL findings block merge; warning-level (MEDIUM) and note-level (LOW) findings are reported to the GitHub Security tab on a best-effort basis.



    Пока активны, все изменения в кодовой базе проекта ДОЛЖНЫ автоматически оцениваться на соответствие задокументированной политике по слабым местам безопасности и блокироваться в случае нарушений, за исключением случаев, когда они объявлены и подавлены как неэксплуатируемые. [OSPS-VM-06.02]
    Создайте проверку статуса в системе контроля версий проекта, которая запускает инструмент статического тестирования безопасности приложений (SAST) для всех изменений в кодовой базе. Требуйте, чтобы проверка статуса проходила успешно, прежде чем изменения могут быть объединены.

    CodeQL runs automatically on every PR and push to main. The workflow fails with exit code 1 if any error-level finding is found in the SARIF output, and CodeQL is a required branch protection check — PRs cannot merge while the check fails. False positives may be suppressed inline with a documented justification.



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

Владелец анкеты на значок проекта: Jim Bailey.
2026-03-08 10:20:21 UTC, последнее изменение сделано 2026-03-10 14:13:23 UTC. Последний раз условия для получения значка были выполнены 2026-03-10 14:13:23 UTC.