SentinelFlow is an independent, educational, open-source portfolio project. It is not a bank system, not a regulatory compliance product, and not a production fraud-decision engine. It runs on synthetic data only and makes no real financial decisions.
The local stack is designed to bind to a developer's own machine. It is not a deployment target and has never been hardened for one. Do not expose it to a network you do not control, and do not put real data into it.
| Version | Supported |
|---|---|
main |
Yes — fixes land here |
| Tagged releases | Only the most recent |
| Anything older | No |
The project is pre-1.0. There is no long-term support branch, and there is no commitment to backport a fix to an earlier tag.
Do not open a public issue for a security problem.
Report it privately through GitHub:
https://github.com/la3679/sentinelflow/security/advisories/new
Please include:
- What the problem is, and which component it affects
- How to reproduce it, ideally from a clean clone
- What an attacker could achieve
- The commit or tag you tested
This is a personal project maintained by one person in their own time. It has no on-call rotation and no service-level agreement, and it would be dishonest to publish response times it cannot meet. What is committed to:
- An acknowledgement that the report was received and read.
- An honest assessment: accepted, not a vulnerability, or accepted but out of scope for a project of this kind — with the reasoning either way.
- Credit in the advisory and the changelog, unless you prefer otherwise.
- Coordinated disclosure: the advisory is published once a fix is available, or once it is clear no fix will be made.
- Injection of any kind in
apps/apiorapps/scoring - Authorization flaws — a role reaching data or an action it should not
- Secrets or credentials committed to the repository or written to logs, metrics labels, event payloads, or error responses
- Unbounded list, export, or replay endpoints that allow resource exhaustion
- Formula injection in CSV export
- Container escapes or privilege escalation from the images this repository builds
- Supply-chain problems in the build: an unpinned action, a missing checksum, a dependency that is not what it claims to be
- Anything requiring the local stack to be exposed to the public internet. It is documented as local-only and is not built to be deployed.
- The absence of a control the project explicitly does not implement. Role handling in the console is a user-experience affordance and is documented as never being a security boundary.
- Findings against a demonstration credential generated by
make bootstrap. Those are random per machine, git-ignored, and protect nothing real. - Vulnerabilities in a third-party dependency with no available fix. Report those upstream; SentinelFlow's scanners already surface fixable ones and fail the build on them.
- Denial of service against a single-broker, single-node local stack. It is not built for availability.
These are the controls that exist today, not aspirations:
| Control | Where |
|---|---|
| Secret scanning over history | gitleaks on every push and pull request, plus weekly |
| Push protection | Enabled on the repository |
| Dependency review | Fails a pull request on a high-severity or copyleft addition |
| Dependabot | Weekly, every ecosystem in the monorepo |
| Container scanning | Trivy on every image, failing on fixable HIGH and CRITICAL |
| Non-root containers | Asserted in CI against the built image, not just declared |
| Pinned actions | Third-party actions pinned to an immutable commit SHA |
| Verified build tooling | The Maven Wrapper validates a recorded SHA-256 |
| Least-privilege workflows | permissions: contents: read unless a job needs more |
| Closed management endpoints | Only health, info and prometheus; asserted by test and smoke |
- Test against anything other than your own local instance.
- Include real financial data, real personal data, or credentials in a report.
- Open a public issue, a discussion, or a pull request that describes an unfixed vulnerability.