Skip to content

Harden report rendering, indicator loading and browser parsing - #9

Merged
interplains merged 1 commit into
mainfrom
fix/audit-hardening
Oct 20, 2026
Merged

interplains merged 1 commit into
mainfrom
fix/audit-hardening

Conversation

@interplains

Copy link
Copy Markdown
Owner

Summary

Hardening fixes from the pre-release security review. Each change is small and independently tested.

  • Report rendering: artifact-derived text (profile names, registry values, page titles) is sanitised before rendering. Control characters, line separators and bidirectional overrides are replaced, and newlines collapse to spaces, so crafted input cannot forge lines in a forwarded report. The privacy note now appears on every report, including clean and reference-only ones.
  • Indicator loading: values that are not hostnames, IP addresses or hex digests are rejected, including empty, unspecified (0.0.0.0, ::) and over-long values. Indicator count is capped. All 405 shipped indicators still load.
  • Browser parsing: deeply nested JSON is treated as a malformed artifact rather than aborting the module. Oversized databases are refused before being copied.
  • CLI: --iocs and --json paths not on a local disk are refused before anything is opened. Relative paths such as --json report.json still work.
  • Cleanup: the unused write-mode module and an unused quoting helper are removed.

Testing

  • Full suite: 274 passed, 8 skipped. The 14 fewer tests are exactly those of the removed module.
  • Reproducible-build check passes.

Report: sanitise artifact-derived text before rendering. Control characters,
line separators and bidirectional overrides are replaced and newlines collapse
to spaces, so a crafted profile name or registry value cannot forge report
lines. The privacy note now appears on every report, not only on ones with
findings.

Indicators: reject values that are not hostnames, IP addresses or hex digests,
including empty, unspecified and over-long values, and cap the indicator count.

Browser: treat deeply nested JSON as a malformed artifact instead of aborting
the module, and refuse oversized databases before copying them.

CLI: refuse --iocs and --json paths that are not on a local disk.

Remove the unused write-mode module and an unused quoting helper.
@interplains
interplains merged commit e9ee40a into main Oct 20, 2026
19 checks passed
@interplains
interplains deleted the fix/audit-hardening branch October 20, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant