Skip to content

Security: arandu-io/framework

Security

SECURITY.md

Security Policy

Reporting a vulnerability

Do not open a public issue. Use one of:

That is the only channel, and it is deliberate. An security@ address was published here before the domain had a mail exchanger, so a report sent to it reached nobody while the sender believed it had arrived — and the embargo clock started running on its own. A channel that swallows the message is worse than no channel at all.

The advisory form is private, it notifies the maintainers, and it is where the fix and the disclosure happen.

A public issue about a vulnerability will be closed and moved to a private advisory — with thanks, not with a scolding.

What to expect, in time

Step Deadline
Acknowledgement 72 hours
Triage and severity (CVSS) 7 days
Fix, or a plan with a date 30 days
Coordinated disclosure 90 days, or sooner once a fix exists

If the flaw is being exploited, the embargo ends: fix and notice go out immediately.

Supported versions

The current major and the previous one, for 12 months after the new major is released. Security fixes land in both. While the project is on v0.x, only the latest minor is supported.

What counts as a vulnerability in this project

Ours: any way to bypass security.Grant, any leak of data between tenants, any failure in CSRF, sessions, password hashing, rate limiting or security headers — and any code generated by aru that is born insecure.

That last one is the most important. If the generator emits a module with a hole, the hole is ours in every project that ran the generator, and the fix has to ship with a regeneration command rather than a note.

Not ours: an application that disabled aru doctor, used SystemGrant outside its scope, or wrote SQL by hand outside a repository. Those are documentation items, not advisories.

Disclosure

Through GitHub Security Advisory, which issues a CVE. The advisory is published together with the fixed version — never before it.

Every advisory states: affected versions, fixed versions, impact, temporary mitigation, and credit to the reporter.

Supply chain

  • The core depends on the standard library and golang.org/x/crypto. That is the main defense, and it is checked in CI
  • govulncheck runs in CI and blocks the merge
  • Dependency updates are reviewed by a person; never merged automatically
  • No replace pointing outside the module in a release

After an incident

A fix has two parts: the patch, and a new rule in aru doctor that stops the pattern from coming back. That is what turns an incident into something permanent — and it is the same logic as the hints on the error page.

There aren't any published security advisories