Skip to content

fix(notify): escape breach source data in alerts - #25

Merged
WhiteMuush merged 1 commit into
developfrom
fix/escape-alert-notifications
Oct 12, 2026
Merged

WhiteMuush merged 1 commit into
developfrom
fix/escape-alert-notifications

Conversation

@WhiteMuush

Copy link
Copy Markdown
Owner

Summary

Breach names and data types come from external sources, some of them dark web aggregators, and reached every alert channel unescaped.

Channel Before After
Email a crafted name injected HTML (a fake "reset your password" link) into the administrator's email every value is HTML-escaped
Slack <!channel> pinged the whole channel, <https://...|text> rendered a disguised link & < > escaped, source values shown as inline code
Teams [text](url) rendered a disguised link source values shown as inline code
SIEM (syslog, CEF) a line break started a forged event each event stays on one line

Scheduled reports already escaped their values, and the other emails only carry values Gardik generates. The generic JSON webhook still sends raw values: its consumer parses JSON, it does not render it.

The Teams rendering of inline code follows the MessageCard markdown support; it is covered by unit tests but was not checked against a live Teams channel.

Type of change

  • feat: new feature
  • fix: bug fix
  • chore: maintenance / dependencies
  • docs: documentation
  • refactor: code refactor

Checklist

Breach names and data types come from external sources, some of them
dark web aggregators, and reached every alert channel as they were. A
crafted name could inject a fake link into the administrator's email,
ping a whole Slack channel with <!channel> or render a disguised link
in Slack and Teams, and forge a new event in the SIEM export with a
line break.

The alert email escapes every value. Slack and Teams escape their
control characters and show source values as inline code. CEF and
syslog keep each event on one line.

Refs #24
@WhiteMuush WhiteMuush self-assigned this Oct 12, 2026
@WhiteMuush
WhiteMuush merged commit 2a6254a into develop Oct 12, 2026
15 checks passed
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