Executive brief
Ech0 is a commenting platform that allows guest users to submit comments and provide email addresses for moderation and reply notifications. Due to improper data exposure settings, unauthenticated attackers can harvest all guest commenter email addresses by making simple API requests to public endpoints. This exposes users' private email addresses without their knowledge or consent, creating privacy compliance risks and enabling targeted phishing campaigns.
Technical details
The vulnerability is an information exposure issue (CWE-200) caused by improper JSON serialization configuration on the Comment model. The Email field in internal/model/comment/comment.go uses json:"email" instead of json:"-" (which is correctly applied to other PII fields like IPHash and UserAgent), causing the field to be included in JSON responses. The public endpoints GET /api/comments?echo_id=X and GET /api/comments/public?limit=N on PublicRouterGroup require no authentication and return raw Comment structs without field projection or stripping. An unauthenticated attacker can iterate through these endpoints to harvest every guest commenter's email address on an instance. The fix is to change the JSON tag to json:"-" or introduce a PublicComment DTO that excludes the email field. Versions before 4.7.3 are affected; patched version 4.7.3 is available.
Affected products
- lin-snow Ech0 before 4.7.3
Timeline
- 2026-05-03: disclosed: GitHub Security Advisory GHSA-rj4g-rqgh-rx9h published
- 2026-08-25: advisory: CVE-2026-79660 published
- 2026-04-03: patched: Patched in version 4.7.3