PT-2026-24137 · Pocket Id · Pocket-Id
CVSS v3.1
8.5
Alta
| Vetor | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N |
Nome do Software Vulnerável e Versões Afetadas
Versões do Pocket ID anteriores à 2.4.0
Descrição
O Pocket ID é um provedor OIDC suscetível à troca de código entre clientes e à reutilização de código expirado. O endpoint de token OIDC valida incorretamente os códigos de autorização, rejeitando-os apenas quando tanto o ID do cliente está incorreto quanto o código está expirado. Essa falha permite que um atacante troque códigos de autorização emitidos para um cliente pelas credenciais de outro cliente, potencialmente obtendo tokens para usuários que não autorizaram o cliente malicioso. Códigos de autorização expirados também podem ser reutilizados até que um processo de limpeza seja executado. O problema reside no arquivo
backend/internal/service/oidc service.go, especificamente na linha 407, onde um E lógico (&&) deveria ser um OU lógico (||) na lógica de validação do código de autorização. O código vulnerável é: if authorizationCodeMetaData.ClientID != input.ClientID && authorizationCodeMetaData.ExpiresAt.ToTime().Before(time.Now()). Um atacante pode explorar isso usando um código de autorização válido destinado a um cliente com o ID do cliente de outro cliente para obter tokens de acesso. O endpoint da API envolvido é /api/oidc/token, utilizando o parâmetro grant type definido como authorization code, o parâmetro code contendo o código de autorização e os parâmetros client id e client secret para autenticação do cliente.Recomendações
Versões anteriores à 2.4.0 devem ser atualizadas para a versão 2.4.0 ou posterior.
Exploit
Correção
Incorrect Authorization
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Pocket-Id