CVE-2026-49400 in October
Zusammenfassung
von VulDB • 14.09.2026
October System stellt das Systemmodul für das October Content Management System bereit. Vor den Versionen 3.7.17 und 4.2.21 speicherte das Backend-`SessionMaker`-Trait den Sitzungsstatus von Widgets als `base64(serialize(...))` und verarbeitete diesen mit `unserialize()`, ohne eine Einschränkung durch `allowed_classes`. Jeder Codepfad, der in einen `widget.*`-Sitzungsschlüssel mit vom Angreifer kontrollierten Bytes schreiben konnte, könnte bei der nächsten Leseoperation des Widgets dessen Sitzungsstatus auslösen und so PHP Object Injection ermöglichen, was die Instanziierung beliebiger Klassen und das Erreichen von PHP Gadget Chains zur Folge hatte. Dieses Problem betrifft nur Installationen, die mit aktiviertem `cms.safe_mode` ausgeführt werden. Safe Mode ist eine Nischenfunktion für opt-in-Szenarien, die hauptsächlich für Demo-Installationen sowie Multi-Tenant- oder Shared-Editor-Szenarien verwendet wird, in denen nicht vertrauenswürdigen Benutzern absichtlich der Zugriff auf den CMS-Markup-Editor gewährt wird. In Standard-Produktivbereitstellungen ist Safe Mode deaktiviert, der Backend-Zugriff ist auf vertrauenswürdige Administratoren beschränkt und ein Markup-Editor kann bereits direkt beliebigen PHP-Code ausführen. Der Sitzungs-Schreibpfad, der zu dieser Schwachstelle führt, wird durch die Safe-Mode-Sandbox abgesichert, sodass Installationen ohne aktivierten Safe Mode nicht betroffen sind. Die Reichweite der Auswirkung ist selbst bei aktiviertem Safe Mode eng gefasst. Die Standard-Backend-Codepfade, die den Widget-Sitzungsstatus (Suchbegriffe, Sortieroptionen, ausgewählte IDs, Filterwerte) füllen, umschließen die Eingabe vor dem Serialisieren in eine bekannte Array-Struktur, sodass benutzergestellte Werte niemals als steuerbarer serialisierter Payload an `unserialize()` gelangen. Die Ausnutzung erfordert den Safe Mode-Sitzungsschreibpfad zusammen mit einer geeigneten PHP Gadget Chain, die von der installierten Abhängigkeitsmenge erreichbar ist. Die folgende Härtungsmaßnahme entfernt die zugrunde liegende Object-Injection-Schwachstelle, sodass die Art des Problems unabhängig davon geschlossen wird. Die Schwachstelle wurde in v3.7.17 und v4.2.21 gepatcht. Es wurden zwei Änderungen vorgenommen: `Backend\Traits\SessionMaker` speichert den Widget-Sitzungsstatus nun als plain JSON anstatt von `base64(serialize(...))`, wodurch die Object-Injection-Schwachstelle für neue Schreibvorgänge vollständig eliminiert wird. Leseoperationen fallen transparent auf das Legacy-Format zurück, um einen Upgrade-Zyklus lang beizubehalten, sodass bestehende Sitzungen ihren gespeicherten Widget-Status behalten. Der Legacy-`unserialize()`-Fallback-Pfad setzt nun `allowed_classes => false`, sodass auch vor dem Upgrade geschriebene Werte keine Objekte instanziieren können. Als Workaround sollte der Zugriff auf die CMS-Markup-Bearbeitung ausschließlich vollständig vertrauenswürdigen Administratoren eingeschränkt werden, was die Standard-Empfehlung für jede October-CMS-Bereitstellung ist.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.