Skip to content

Security: greenbone/rust-gvm

SECURITY.md

Security Policy

Supported Versions

Version Supported
Latest published minor ✅ Security fixes
Earlier minors Critical fixes only, at maintainer discretion

The GitHub Releases page is authoritative for the latest published minor. The main branch can identify itself as the next version while that version is still undergoing release qualification.

We support the latest minor release with security patches. Once a new minor or major version is published, prior versions receive patches only for critical vulnerabilities at maintainer discretion.

Reporting a Vulnerability

Please do not open public GitHub issues for security vulnerabilities.

Instead, use GitHub Private Vulnerability Reporting:

  1. Go to the Security Advisories tab
  2. Click "Report a vulnerability"
  3. Fill in the details — affected crate(s), reproduction steps, and impact assessment

No alternate private contact channel is published in this repository. If the GitHub reporting control is unavailable, contact a maintainer without including exploit details and ask for a private disclosure channel.

What to expect

  • Acknowledgment within 48 hours
  • Initial assessment within 5 business days
  • Patch timeline depends on severity:
    • Critical / High: Target fix within 7 days
    • Medium: Target fix within 30 days
    • Low: Next scheduled release
  • We will coordinate disclosure timing with you. We follow responsible disclosure practices.

What qualifies

  • Vulnerabilities in gvm-protocol, gvm-gmp, gvm-client, or gvm-connection
  • Authentication bypass or credential exposure in transport handling (SSH, Unix socket, TLS)
  • XML parsing vulnerabilities (injection, XXE, billion-laughs)
  • Memory safety issues
  • Dependency vulnerabilities with a viable attack path through our code

What doesn't qualify

  • Vulnerabilities in gvm-mock-server — it is a testing tool, not production software
  • Issues in upstream dependencies without a demonstrated attack path through rust-gvm
  • Denial-of-service via malformed GMP XML from a trusted gvmd server (trusted network assumption)

Security Measures

Dependency Auditing

Known Advisory Exceptions

There are currently no accepted RustSec advisory exceptions. The SSH dependency is built without russh's optional RSA support, removing the vulnerable rsa crate from the resolved graph while retaining compression and AWS-LC.

Supply Chain

  • All dependencies sourced exclusively from crates.io
  • Git dependencies denied by default ([sources] unknown-git = "deny")
  • GitHub Actions pinned to immutable commit SHAs; Dependabot keeps them current
  • CycloneDX JSON is generated and quality-gated in Security; tagged releases publish the verified JSON/XML SBOM bundle

Code Quality

  • cargo clippy with -D warnings in CI
  • workspace unsafe_code = "forbid", reinforced by the Security workflow's source and cargo-geiger gates
  • MSRV tested (currently Rust 1.89.0)
  • XML framing uses quick-xml with a 64 MiB default frame limit and a separate 256-element nesting limit; transport response and mock request limits are configurable

Security-Relevant Architecture

Trust Model

┌─────────────┐     GMP/XML      ┌──────────┐
│ rust-gvm    │◄────────────────►│  gvmd    │
│ (client)    │  Unix / SSH / TLS │ (server) │
└─────────────┘                   └──────────┘
       ▲
       │ The transport layer (gvm-connection) handles:
       │ • SSH host key verification
       │ • Unix socket file permissions (OS-level)
       │ • TLS certificate and DNS/IP SAN validation
       │
       │ GMP authentication is username/password over
       │ the encrypted transport — never plaintext TCP.
  • gvmd is trusted: rust-gvm is a client library; it trusts the server's XML responses. Malicious server responses are out of scope (same trust model as python-gvm).
  • Credentials: Passed at runtime, never stored by the library. Callers are responsible for secure credential management.
  • Transport security: SSH and TLS transports encrypt all GMP traffic. Unix sockets rely on filesystem permissions.

GitHub Security Features Checklist

GitHub repository settings below were verified live on 2026-09-21. They are distinct from workflow configuration kept in this checkout.

Feature Status Notes
Private vulnerability reporting ✅ Enabled Settings → Security → Advisories
Dependabot version updates ✅ Configured Cargo, Actions, pip, and Docker
Dependabot alerts/security updates ✅ Enabled Security update PRs are enabled
Secret scanning ✅ Enabled Repository security setting
Secret scanning push protection ✅ Enabled Repository security setting
Code scanning ✅ Active Semgrep uploads SARIF code-scanning results
Branch protection ✅ Enforced on main Administrators included; strict CI and Security checks; one CODEOWNER review; stale-review dismissal; last-push approval; linear history
Signed commits ❌ Not enabled This setting is not currently required
OSSF Scorecard ✅ Active Public repository workflow runs on main pushes, weekly, and manual dispatch

Verification Follow-up

Recheck these live settings after repository-visibility, branch-protection, or security-policy changes. Required signed commits remain a separate policy decision; they are not enabled as of the verification date.

Changelog

Date Change
2026-03-17 Initial security policy
2026-09-21 Reconciled versions, transport controls, workflows, and release/SBOM claims with v0.7

There aren't any published security advisories