Skip to content

Audit: security hardening and maintenance findings #18

Description

@Koan-Bot

Audit Findings — 2026-04-10

Comprehensive maintainability and security audit of the codebase.

Fixed (PR #17)

  • String eval qq{} in API.pm and Service.pm replaced with safe eval { require $file }
  • Symbolic reference string eval in DataAsYaml.pm replaced with no strict 'refs'
  • Removed defunct .travis.yml
  • Added .env*, .DS_Store, IDE dirs to .gitignore

Remaining Items

  • Bare die statements (medium) — 8 instances across Service.pm, Images.pm, and Specs/Roles/Service.pm use die without error messages. Makes debugging harder for users. (Partially addressed by PR fix: descriptive error messages and dead code removal #11)
  • Test coverage gaps (medium) — Routes.pm, API.pm factory, Service.pm internals, Helpers/DataAsYaml.pm, and Roles modules lack direct unit tests. Estimated ~60-70% coverage.
  • Version string validation (low) — BUILD_version() regex m{/(v[0-9\.]+)} is permissive. Could restrict to v\d+\.\d+ for robustness.

Notes

  • PR ci: fix Perl compat and modernize CI workflow #15 already addresses CI modernization (Perl version alignment, cpm@v2, platform fixes)
  • AUTOLOAD dispatch in Routes.pm is well-protected (whitelist from static YAML data block)
  • No hardcoded secrets found — credentials properly sourced from environment variables

🤖 Created by Kōan from audit session

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions