CVE-2026-72723 is a permission boundary flaw in Discourse's SiteSerializer, not merely a missing authorization check. The vulnerability lives in how the serialization layer handles restricted tags compared to the application's main content routes.
When tags are restricted through category access controls, category tag groups, or explicit tag-group permissions, Discourse correctly prevents authenticated users from viewing content tagged with those restrictions. However, the /site.json endpoint bypasses this protection entirely. The SiteSerializer's anonymous_default_navigation_menu_tags method returns all tags without applying filter_visible, which means unauthenticated users receive a complete enumeration of restricted tag names and their descriptions.
This is reconnaissance gold. An attacker learns the existence of internal categories, confidential projects, and privileged support channels purely from tag names they should never see. The descriptions add context that aids targeting. The CVSS 5.3 rating undersells this: the attack requires no authentication, uses a standard endpoint, and reveals structural information about the forum's organization. In internal corporate Discourse instances, legal communities, or support forums handling privileged matters, this structural disclosure is far more valuable than the score suggests.
The fix applying filter_visible to one method is deliberately surgical — and that's the signal. The existence of filter_visible in DiscourseTagging proves someone previously understood this vulnerability class. The fact that it wasn't applied to this serialization path reflects how security assumptions accumulate unevenly across a codebase: permission filtering gets added to routes, topic queries, and content serializers, but the fast-path serialization layer for navigation data was never retrofitted. Other serialization paths likely have the same gap — RSS feeds, webhook payloads, and search result serialization all serve precomputed structures that may assume anonymous context equals no permission boundaries.
The multi-branch fix pattern (affecting 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0) suggests a shared code pattern was corrected across release tracks rather than independent discoveries. Audit other SiteSerializer methods for similar permission boundary bypasses, and treat this as evidence that your serialization layer may have accumulated similar shortcuts. The question isn't whether other paths have this flaw — it's which ones haven't been audited yet.