JaraLock Your access. Your rules.

Before you trust it

Security

Three reviews of this codebase — what was found, what was fixed, and what is knowingly accepted and why. Published in full and unedited, so you can read it before you talk to anyone.

Two entries below record a review that was wrong: an XSS finding that missed the path where the real bug turned out to be, and an Atlassian endpoint that only a live call proved incorrect. They are left in, because a security document that lists only wins is not evidence of anything.

Your access. Your rules.

Security considerations

Three security reviews have been done against this codebase. The first (auth, secret handling, persistence, and the multi-tenant API surface) found four issues; a second pass over the web UI's own surface — session cookies, CSRF, and the sinks that render stored data — is recorded below it; the third, on 2026-09-02, found three more and has its own section further down. All seven findings are fixed. 1,022 tests pass, ruff and mypy clean, and pip-audit reports no known vulnerabilities.

From the first review:

Web UI-specific review (the session-cookie/CSRF/HTML-rendering surface the API doesn't have):

Third review — 2026-09-02

A fresh pass over the multi-tenant surface, run as an attacker would rather than as a test suite: injection surface, cross-tenant isolation, the sinks that render stored data, admin-supplied values that become file paths or URLs, credential storage, and dependencies.

What held up. Cross-tenant isolation is correct — every ID-parameterised route (/runs/{id}, /employees/{id}, bulk runs, departments, roles, admins) loads through a helper that takes the authenticated organization and rejects a mismatch, so no IDOR was found. There is no raw SQL anywhere. API keys are hashed at rest. The safelist refused a live offboard of a protected account when tried against a real running container.

Three real findings, all fixed:

Known and accepted

Two administrator-supplied URLs are fetched by the server. The SIEM webhook (siem.webhook_url) and the Anthropic SCIM base_url, the latter sent with its bearer token. Both are deliberately free-form: a SIEM lives wherever the customer put it, and Anthropic's SCIM base URL differs between the commercial product and Claude for Government, so neither can be hardcoded.

This is recorded rather than blocked, and the reasoning is worth stating because it depends on how you deploy:

Not blocked by default because JaraLock is self-hosted and bring-your-own-credentials: the network belongs to the operator, and plenty of organizations legitimately run their SIEM on an internal address. Refusing private address ranges would break a correct setup to defend against an administrator the operator themselves onboarded. An opt-in restriction is a small additive change if a deployment wants one — ask.

Also still true:

Ask the awkward question

If your security team wants something here checked, ask directly — ms.blxckroze@blxckroze.com. The 30-day trial ships the full source, so every claim on this page can be verified against the code rather than taken on trust.