Em versões até e incluindo 3.0.0, duas partes da API GraphQL retornaram dados sem verificar se os dados pertenciam ao usuário logado: - **Conteúdo de documentos.** Um usuário conectado pode baixar o conteúdo bruto de qualquer documento por seu ID, independentemente de quem o possuisse. O resolvedor não possui um parâmetro de autenticação desde o commit inicial do projeto ( 2022 - 11 - 22 ) — assim, todas as versões de ` nl. nl- portal: documenten- api` já publicadas são afetadas (a primeira versão na Maven Central é ` 0.2.2.RELEASE`, publicado 2023 - 08 - 31 ). - **Decisões (`besluiten`).** Um usuário conectado pode listar, pesquisar e ler registros de decisões — incluindo seus trilhos de auditoria e os documentos a eles associados — para qualquer usuário. A consulta de lista também aceitou filtros (tipo de decisão, identificação, organização responsável, caso relacionado), o que tornou fácil enumerar decisões em toda a base de usuários. O módulo ` beluiten` foi introduzido no ` 1.5 linha de lançamento.x` (commit ` 9229460 b`, 2024 - 08 - 19 ), então versões de ` nl. nl- portal:besluiten` a partir de ` 1.5.0 ` através de ` 3.0.0 " são afetados.

Decisões e seus anexos frequentemente contêm dados pessoais sensíveis (decisões sobre benefícios, permissões, objeções e similares), assim o impacto da confidencialidade é elevado. Os dois endpoints também se encadeiam naturalmente: uma vez que um atacante descobriu os IDs de documentos de outro usuário, enumerando decisões, eles podem puxar o conteúdo desses documentos através do endpoint de documentos. ### Por que esses dois achados são relatados juntos. Eles compartilham a mesma causa raiz e a mesma forma. Ambos os resolvedores GraphQL foram declarados sem um parâmetro de autenticação na assinatura do método, o que significa que o framework nunca liga o usuário autenticado no resolvedor e, portanto, o resolvedor não pôde realizar verificações de autorização por usuário. O padrão de correção é o mesmo — ligue o principal autenticado para o resolvedor, ou remova o resolvedor completamente. E na prática, os dois endpoints reforçam- se como uma cadeia (enumerar por meio de decisões, exfiltrar por meio de documentos), de modo que eles descrevem uma única fraqueza de extremidade para extremidade na superfície do GráficoQL.

Atualizar para ** 3.0.1 ** ou mais tarde. - **`nl.nl- portal:documenten- api`** — o resolvedor agora declara o parâmetro de autenticação, assim que o framework liga o usuário autenticado no caminho de chamada. Corrigir o commit: ` 32 e 0 ebdf` — "Adicionar autência no Conteúdo do DocumentoQuery.kt". - **`nl.nl- portal:besluiten`** — o módulo inteiro `besluiten` é removido em 3.0.1. Os consumidores que dependem da funcionalidade besluiten devem implementar uma substituição na camada de aplicativo com autorização explícita por usuário em cada resolvedor antes de atualizar. Correção de commit: ` f 592 af 1 b` — "Remoção da API de Besluiten".

Para implantações que não podem atualizar imediatamente. - Bloqueie as seguintes operações do GraphQL no gateway da API: `getDocumentContent`, `getBesluiten`, `getBesluit`, `getBesluitAuditTrails`, `getBesluitAuditTrail`, `getBesluitDocument`, `getBesluitDocument`. - Se não for possível bloquear por operação, bloqueie completamente o GraphQL do módulo `Besluiten` e bloqueie a consulta de conteúdo de documento. ## Detalhes técnicos. - `nl.nlportal.documentenapi.graphql.DocumentContentQuery.getDocumentContent(documentApi, id)` não declarou um parâmetro `CommonGroundAuthentication` no resolver. O principal autenticado não estava, portanto, ligado ao caminho de chamada e o conteúdo do documento poderia ser recuperado sem que o resolvedor participasse da autorização do usuário. Patched adicionando `authentication: CommonGroundAuthentication` à assinatura do resolver, assim a resolução do argumento da Spring rejeita invocações não autenticadas da consulta. - `nl.nlportal.besluiten.graphql.BesluitenQuery` expuse seis operações GraphQL — `getBesluiten`, `getBesluit`, `getBesluitAuditTrails`, `getBesluitAuditTrail`, `getBesluitDocument`, `getBesluitDocument`, `getBesluitDocument` — nenhum dos quais declarou um parâmetro `CommonGroundAuthentication`. Em particular, `getBesluiten` aceitou argumentos de filtro (`besluitType`, `identificatie`, `verantwoordelijkeOrganisatie`, `zaak`, `pageNumber`), mas não realizou nenhum escopo de usuário, permitindo que os usuários enumerassem registros de besluit entre usuários. As operações de busca de pontos (`getBesluit`, `getBesluitAuditTrail`, `getBesluitDocument`) retornaram dados para qualquer UUID sem cheques de propriedade. A correção é a remoção de `BesluitenQuery`, `BesluitenAutoConfiguration`, e o teste de integração, e a entrada de configuração automática foi desligada dos padrões do aplicativo.

Descoberto durante o engajamento de testes de penetração das bibliotecas nl-portal-backend (fase 1, Maio 2026 ). Atribuição do fornecedor a ser adicionado antes da publicação. Registro de aconselhamento: GHSA-qpm 9 - h 556 - mwxm. Identificadores relacionados: CVE- 2026 - 49463.

Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 08 T 21: 11: 54.000 Z e lista a sua última modificação como 2026 - 07 - 08 T 21: 11: 54.000 Z.

Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N.

Software afetado e informações de versão: Pacote Maven nl.nl- portal:documenten-api — ECOSISTEM: introduzido 0, corrigido 3.0.1. Pacote Maven nl.nl- portal:besluiten — ECOSISTEM: introduzido 1.5.0, corrigido 3.0.1.

Classificação e evidência: identificadores de fraqueza CWE- 200, CWE- 285. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.