Skip to content

MEDIUM: Server binds 0.0.0.0, age truncation, PHI logging, default passwords #55

@AlexMikhalev

Description

@AlexMikhalev

Security Findings - MEDIUM (batch)

Source: Security audit (2026-02-24)

Finding 6: Server Binds to 0.0.0.0 by Default

  • Location: crates/terraphim-api/src/lib.rs:17
  • Fix: Default to 127.0.0.1, allow override via API_HOST env var

Finding 7: Integer Truncation in Patient Age

  • Location: crates/terraphim-api/src/service.rs:302
  • profile.age as u8 truncates u32 silently (300 -> 44)
  • Fix: Validate age 0-150, return 400 for out-of-range

Finding 8: Debug Logging of Patient Clinical Data (PHI)

  • Location: crates/terraphim-api/src/routes/mod.rs:91-93
  • Patient age, sex, diagnoses logged at debug level
  • Fix: Never log PHI, use anonymized identifiers

Finding 9: WebSocket No Connection Limits

  • Location: crates/terraphim-api/src/routes/mod.rs:301-384
  • No connection limits, auth, idle timeout, or backpressure
  • Fix: Add semaphore for concurrent workflows, add auth + timeouts

Finding 11: Grafana Default Admin Password

  • Location: docker/docker-compose.yml:113
  • GF_SECURITY_ADMIN_PASSWORD defaults to admin
  • Fix: Remove default, fail if not set

Metadata

Metadata

Assignees

No one assigned

    Labels

    securitySecurity vulnerabilities and audit findings

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions