CVE-2026-49400 in October
Sumário
de VulDB • 14/09/2026
O módulo de sistema do October System fornece o núcleo para o October Content Management System. Antes das versões 3.7.17 e 4.2.21, a trait `SessionMaker` do backend armazenava o estado da sessão dos widgets como `base64(serialize(...))` e consumia-o com `unserialize()` sem uma restrição de `allowed_classes`. Qualquer caminho de código que pudesse gravar em uma chave de sessão `widget.*` com bytes controlados pelo atacante poderia desencadear injeção de objetos PHP na próxima vez que o widget lesse seu estado da sessão, permitindo a instanciação de classes arbitrárias e cadeias de gadgets PHP alcançáveis. Este problema afeta apenas instalações executadas com `cms.safe_mode` habilitado. O Safe Mode é um recurso opcional nicho, usado principalmente para instalações de demonstração e cenários multi-tenant ou de editores compartilhados onde usuários não confiáveis são deliberadamente concedidos acesso ao editor de marcação do CMS. Em implantações padrão em produção, o Safe Mode está desativado, o acesso ao backend é restrito a administradores confiáveis e um editor de marcação já pode executar PHP arbitrário diretamente. O caminho de gravação da sessão que atinge esse sink é protegido pela sandbox do Safe Mode, portanto, instalações sem o Safe Mode habilitado não estão expostas. O escopo de impacto é estreito mesmo com o Safe Mode ativado. Os caminhos padrão de código do backend que populam o estado da sessão dos widgets (termos de pesquisa, opções de ordenação, IDs selecionados, valores de filtro) envolvem a entrada dentro de uma forma de array conhecida antes da serialização, portanto, os valores fornecidos pelo usuário nunca chegam ao `unserialize()` como um payload serializado controlável. A exploração requer o caminho de gravação da sessão do Safe Mode junto com uma cadeia de gadgets PHP adequada alcançável a partir do conjunto de dependências instalado. O endurecimento abaixo remove o sink de injeção de objetos subjacente, portanto, a classe de problema é encerrada independentemente. A vulnerabilidade foi corrigida nas v3.7.17 e v4.2.21. Duas alterações foram aplicadas. `Backend\Traits\SessionMaker` agora armazena o estado da sessão dos widgets como JSON puro em vez de `base64(serialize(...))`, eliminando completamente o sink de injeção de objetos para novas gravações. As leituras caem transparentemente no formato legado por um ciclo de atualização, para que as sessões existentes mantenham seu estado de widget salvo. O caminho alternativo do legacy `unserialize()` agora define `allowed_classes => false`, portanto, mesmo os valores gravados antes da atualização não podem instanciar objetos. Como solução alternativa, restrinja o acesso à edição de marcação do CMS apenas a administradores totalmente confiáveis, a recomendação padrão do October CMS para qualquer implantação.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.