Skip to content

Commit bc22082

Browse files
authored
docs: threat model and attack surface analysis (OSPS-SA-03.02) (#90)
## Summary - Renames the \"Security Assessment\" section in `SECURITY.md` to \"Threat Model and Attack Surface Analysis\" - Adds an explicit **Attack Surface** subsection documenting trust boundaries, entry points, and critical code paths - Notes that the threat model is reviewed at each release - Satisfies OSPS-SA-03.02 ## Test plan - [ ] Review `SECURITY.md` changes for accuracy and completeness - [ ] Approve and merge 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: paradoxbound <paradoxbound@users.noreply.github.com> Signed-off-by: Paradoxbound <paradoxbound@users.noreply.github.com> Co-authored-by: Paradoxbound <paradoxbound@users.noreply.github.com>
1 parent 97152d2 commit bc22082

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

SECURITY.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,27 @@ This project uses no manually stored CI/CD secrets. The only secret in the pipel
3535

3636
If you discover that credentials have been accidentally committed or exposed, rotate them immediately, then report the incident privately using the process in the [Reporting a Vulnerability](#reporting-a-vulnerability) section below.
3737

38-
## Security Assessment
38+
## Threat Model and Attack Surface Analysis
3939

40-
This section documents the most likely and impactful security risks for this project.
40+
This section documents the attack surface, trust boundaries, and identified threats for this project. It is reviewed and updated at each release.
41+
42+
### Attack Surface
43+
44+
**Trust boundaries:**
45+
- **MCP client → MCP server (stdio):** The server is spawned as a local subprocess by the MCP client (e.g. Claude Desktop, LibreChat). Communication is over stdio; no network socket is exposed. The client is considered trusted.
46+
- **MCP server → BookStack API (HTTPS):** All requests are authenticated with a Bearer token. The server enforces HTTPS and rejects plain-HTTP base URLs at startup.
47+
- **Operator → MCP server (environment variables):** `BOOKSTACK_BASE_URL`, `BOOKSTACK_TOKEN_ID`, `BOOKSTACK_TOKEN_SECRET`, and `BOOKSTACK_ENABLE_WRITE` are supplied at deployment time by the operator. They are not accepted from MCP clients or end users.
48+
49+
**Entry points:**
50+
- MCP tool input parameters (validated by Zod schemas before use)
51+
- Environment variables (read once at startup; never re-read or logged)
52+
- BookStack API responses (relayed to the MCP client; not interpreted by the server)
53+
54+
**Critical code paths:**
55+
- Credential loading and HTTP request construction (`packages/core/src/bookstack-client.ts`)
56+
- Write operation gating — `BOOKSTACK_ENABLE_WRITE` check before registering write tools (`packages/stdio/src/index.ts`)
57+
- HTTPS enforcement — URL validation at startup rejects non-HTTPS base URLs
58+
- Tool input validation — Zod schemas on all MCP tool parameters
4159

4260
### 1. API credential exposure (HIGH)
4361

0 commit comments

Comments
 (0)