Thanks for helping keep this project and its users safe. This document covers
how to report a vulnerability. For the security posture of the application
itself — threat model, data flow, deployment checklist — see
docs/SECURITY.md and the companion documents in
docs/.
⚠️ Evaluation tool. This is an internal evaluation tool. It is not a certified medical device, and its output does not establish legal anonymization. The deploying institution is the data controller and is responsible for its own security review, DPIA, and information-governance sign-off before processing real patient data.
This is an actively developed research project. Only the latest release and
the main branch receive security fixes. Please upgrade before reporting, in
case the issue has already been addressed.
| Version | Supported |
|---|---|
| Latest release | ✅ |
main |
✅ |
| Older releases | ❌ |
Please do not open a public GitHub issue for security vulnerabilities.
Report privately through either channel:
- GitHub Security Advisories (preferred) — use the Report a vulnerability button on the repository's Security tab. This keeps the report private and lets us collaborate on a fix.
- Email — contact the maintainer at fabian.wolf2@tu-dresden.de with
the subject line
[deidentifier security].
Please include, where possible:
- a description of the vulnerability and its impact,
- steps to reproduce (proof of concept, affected endpoint, configuration),
- the version or commit hash and the deployment mode (detectors enabled, OCR engine, Docker or local),
- any suggested remediation.
🚫 Never attach a real clinical document. Reproduce with synthetic text —
backend/tests/files/contains examples — and attach that instead.
A missed identifier is a known limitation, not a vulnerability: no detector finds everything, which is why human review is part of the design. Report those as normal issues (with synthetic reproduction), or better, quantify them with the evaluation harness.
Do report as a security issue anything that makes the tool claim more than it checked, for example:
- a redacted PDF export whose blackout can be reversed or whose text remains extractable,
- document content appearing in logs or in an API response that should not carry it,
- a status of
PASSwhile redacted content demonstrably remains in the output, - a path by which one user could reach another user's document or result.
- Acknowledgement: we aim to confirm receipt within 5 business days.
- Assessment: we investigate and keep you updated on findings and planned remediation.
- Disclosure: we follow coordinated disclosure. Please allow a reasonable window for a fix before public disclosure. We are happy to credit reporters in the release notes unless you prefer to stay anonymous.
As a small research team we cannot offer a paid bug bounty, but we genuinely appreciate responsible disclosure.
In scope: the FastAPI backend, the Vue frontend, the anonymization pipeline, the redacted-PDF export, and the official Docker images.
Out of scope: vulnerabilities in third-party dependencies (report those
upstream; we track them via Dependabot and the security workflow), issues that
require a compromised host, the absence of authentication (deliberate — the app
is designed to run behind an institutional auth proxy), and misconfiguration
already called out in docs/SECURITY.md.