CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-28352

Broken Access Control in Indico Event Series Management (CVE-2026-28352)

Amit Schendel
Amit Schendel
Senior Security Researcher

Mar 1, 2026·6 min read·46 visits

Executive Summary (TL;DR)

Indico < 3.3.11 exposes the event series management API without authentication. Attackers can modify series patterns or delete series metadata remotely.

A critical access control vulnerability in the Indico event management system allows unauthenticated attackers to modify or delete event series metadata. The flaw exists in the `RHEventSeries` handler, which failed to enforce authentication checks or permission validation prior to version 3.3.11.

Vulnerability Overview

Indico is a feature-rich event management system widely used for organizing conferences, workshops, and meetings. The platform relies on a complex hierarchy of categories, events, and series to structure content. A security vulnerability identified as CVE-2026-28352 exists in the module responsible for managing 'event series'—a logical grouping mechanism that links related events (e.g., a weekly lecture series).

The vulnerability is classified as a Missing Access Control issue (CWE-285). Specifically, the API endpoints handling the creation, modification, and deletion of event series data were exposed without mandatory authentication or authorization checks. In a standard Indico deployment, management functions are strictly reserved for event managers or system administrators. However, due to a lapse in the request handler inheritance structure, these specific endpoints accepted requests from any network user, regardless of their authentication status.

This flaw allows an attacker to bypass the intended security model entirely. By interacting directly with the backend API, an unauthorized actor can manipulate the metadata defining an event series. This includes modifying the title patterns used for cloning events and deleting the series association itself, which disrupts the logical organization of events within the system.

Root Cause Analysis

The root cause of this vulnerability lies in the implementation of the RHEventSeries class within Indico's backend logic. Indico utilizes a Flask-based architecture where request handling logic is encapsulated in classes derived from a base RH (Request Handler) class. Security in this framework is typically enforced through one of two mechanisms: explicitly implementing a _check_access method to validate permissions, or inheriting from a secure base class like RHProtected which enforces session validation by default.

In the affected versions (prior to 3.3.11), RHEventSeries inherited directly from the generic RH class. Critically, the developer failed to override the _check_access method. The base RH class is designed to be permissive for public endpoints, performing no authentication checks unless instructed otherwise. Consequently, when the Flask router dispatched HTTP requests to this handler, the application processed them immediately without verifying the identity of the requester or their permissions regarding the target event series.

This architectural oversight meant that the logic flow for critical actions—specifically process_POST, process_PATCH, and process_DELETE—executed in an unprivileged context. The system assumed, incorrectly, that access control was handled upstream or implicitly, leaving the endpoint wide open to public network traffic.

Code Analysis

The remediation of CVE-2026-28352 involved hardening the class hierarchy and implementing explicit permission logic. The following analysis compares the vulnerable implementation with the patched version introduced in commit fb6d800fbab3ac987c642ad42b297ea3cdfc0593.

Vulnerable Implementation

The original code likely resembled the following structure, where RHEventSeries inherits from RH and lacks access control hooks:

# Vulnerable: Inherits from base RH, no access checks
class RHEventSeries(RH):
    def _process_args(self):
        self.series = EventSeries.get_or_404(request.view_args['series_id'])
 
    def _process_DELETE(self):
        # ... logic to delete series ...

Patched Implementation

The fix enforces security layers. First, the inheritance is changed to RHProtected to ensure a valid user session exists. Second, a specific _check_access method is added to verify that the user has management rights over the specific series being targeted.

# Fixed: Inherits from RHProtected and enforces specific permissions
class RHEventSeries(RHProtected):
    def _process_args(self):
        self.series = EventSeries.get_or_404(request.view_args['series_id'])
 
    def _check_access(self):
        # 1. Base check ensures user is logged in
        RHProtected._check_access(self)
        
        # 2. Specific check: User must manage ALL events in the series
        if self.series and not self.series.can_manage(session.user):
            raise NoReportError.wrap_exc(
                Forbidden(_('You can only manage a series if you can manage all its events.'))
            )

The patch also introduces the can_manage method on the EventSeries model, ensuring that management rights are consistent across all events linked to the series. This prevents a scenario where a user with rights to only one event in a series could modify the entire series settings.

Exploitation Mechanics

Exploiting this vulnerability requires no authentication and can be performed by any attacker with network access to the Indico instance. The attack vector involves sending crafted HTTP requests to the /event-series/<series_id> endpoint. Since the ID is typically a sequential integer, an attacker can easily enumerate valid series IDs.

Attack Scenario: Deleting a Series

To break the association between events in a series, an attacker issues a DELETE request. This does not delete the events themselves but removes the EventSeries object, causing the events to lose their grouping and numbering metadata.

DELETE /event-series/12345 HTTP/1.1
Host: indico.target-org.example
Accept: application/json
# No Cookie or Authorization header required

Attack Scenario: Modifying Patterns

An attacker can also send a PATCH request to modify the event_title_pattern. This pattern is used when cloning events within the series. Malicious modification here could confuse legitimate administrators or, depending on how the title pattern is rendered in the administrative UI, potentially serve as a vector for stored Cross-Site Scripting (XSS) if output encoding is insufficient (though XSS is not the primary scope of this specific CVE).

PATCH /event-series/12345 HTTP/1.1
Host: indico.target-org.example
Content-Type: application/json
 
{
    "event_title_pattern": "HACKED_SERIES_{}"
}

The impact is immediate: the server processes the request and commits the changes to the database without challenging the user.

Impact Assessment

While CVE-2026-28352 allows unauthorized write access, the scope is limited to event series metadata. It does not provide direct access to sensitive user data, private event content, or uploaded files. The impact is primarily categorized as Integrity and Availability degradation regarding the organization of events.

Confidentiality (Low): The attacker can retrieve metadata about a series (titles, patterns) even if the series is associated with private events. However, the deep content of the events remains protected by separate ACLs.

Integrity (Low/Medium): The ability to modify the event_title_pattern allows an attacker to vandalize the configuration of a series. This can disrupt administrative workflows and lead to confusion among event organizers.

Availability (Low): By deleting the EventSeries object, the attacker disrupts the logical grouping of events. While the underlying event data persists, the structural integrity of the conference or lecture series is damaged, requiring administrative intervention to restore.

CVSS v3.1 Scoring: The vulnerability is assigned a Base Score of 6.5 (Medium). The vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N reflects the network-based attack vector, low complexity, and lack of privileges required, balanced by the limited scope of the impact.

Official Patches

IndicoIndico v3.3.11 Release Notes
GitHubGHSA Advisory

Fix Analysis (1)

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
EPSS Probability
0.04%
Top 89% most exploited

Affected Systems

Indico Event Management System

Affected Versions Detail

Product
Affected Versions
Fixed Version
Indico
Indico
< 3.3.113.3.11
AttributeDetail
CWECWE-285 / CWE-306
CVSS v3.16.5 (Medium)
Attack VectorNetwork
Privileges RequiredNone
ImpactMetadata Modification
Exploit StatusProof of Concept

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1496Resource Hijacking (Metadata Modification)
Impact
CWE-285
Improper Authorization

Vulnerability Timeline

Initial fix development started
2026-02-17
Final authorization logic committed
2026-02-24
Indico 3.3.11 released with fix
2026-02-27
GHSA-rfpp-2hgm-gp5v and CVE-2026-28352 published
2026-02-27

References & Sources

  • [1]Patch Commit
  • [2]NVD CVE-2026-28352

More Reports

•about 6 hours ago•GHSA-PW6J-QG29-8W7F
5.9

GHSA-pw6j-qg29-8w7f: State Persistence and Sensitive Credential Leakage in Tornado CurlAsyncHTTPClient

A state persistence vulnerability exists in Tornado's CurlAsyncHTTPClient component where pooled pycurl.Curl handles are reused across asynchronous requests without a complete state reset. Consequently, sensitive per-request configurations, such as client TLS certificates or proxy basic authentication credentials, persist on the shared handle. This behavior leads to subsequent requests leaking these credentials to unauthorized remote servers.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 6 hours ago•CVE-2026-48748
7.5

CVE-2026-48748: Netty HTTP/3 QPACK Blocked Streams Memory Exhaustion

CVE-2026-48748 is a denial-of-service vulnerability in Netty's HTTP/3 codec (netty-codec-http3) occurring when QPACK dynamic tables are enabled but the blocked streams limit is not explicitly configured. A bug in limit checking and a memory leak in stream tracking allow unauthenticated remote attackers to exhaust the JVM heap memory and crash the server.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 7 hours ago•CVE-2026-50009
4.8

CVE-2026-50009: Stateless Reset Token Exposure in Netty QUIC

CVE-2026-50009 is a cryptographic design vulnerability in the Netty network application framework. Prior to version 4.2.15.Final, the framework's QUIC protocol implementation fails to cryptographically segregate the generated Connection IDs and the associated Stateless Reset Tokens. An on-path network attacker who sniffs traffic during a Connection ID rotation can extract secret token material from cleartext headers, enabling them to inject spoofed reset packets and terminate active connections.

Alon Barad
Alon Barad
5 views•6 min read
•about 7 hours ago•CVE-2026-50010
7.5

CVE-2026-50010: Hostname Verification Bypass in Netty TLS Client

A critical hostname verification bypass vulnerability exists in the Netty network application framework when configured as a TLS client. When a developer registers a custom plain X509TrustManager, Netty wraps it inside an X509TrustManagerWrapper to adapt it to the X509ExtendedTrustManager API. However, this wrapper discards the SSLEngine context, bypassing critical hostname checks. Because the wrapper is identified as an X509ExtendedTrustManager, standard cryptographic engines and Netty's OpenSSL wrappers do not re-wrap it, failing to execute any hostname validation. Consequently, clients silently accept certificates for any host, enabling unauthenticated Man-in-the-Middle (MitM) attacks.

Amit Schendel
Amit Schendel
5 views•8 min read
•about 8 hours ago•CVE-2026-50011
7.5

CVE-2026-50011: Unbounded Resource Pre-Allocation in Netty Redis Codec

An uncontrolled resource pre-allocation flaw in the Netty Redis codec module allows remote unauthenticated attackers to cause a denial of service (OutOfMemoryError) by sending a crafted Redis Serialization Protocol (RESP) array header.

Amit Schendel
Amit Schendel
4 views•7 min read
•about 8 hours ago•CVE-2026-50020
5.3

CVE-2026-50020: HTTP Request Smuggling in Netty HttpObjectDecoder via Arbitrary Leading Control Bytes

CVE-2026-50020 is a medium-severity HTTP Request Smuggling/Response Smuggling vulnerability (CWE-444) within the Netty asynchronous network application framework. The flaw resides in Netty's HTTP codec implementation, specifically the HttpObjectDecoder class, which silently consumes arbitrary ISO control bytes preceding the first request line.

Alon Barad
Alon Barad
4 views•7 min read