Pular para o conteúdo principal

Questão de Segurança da Informação — Autorização e Controle de Acesso (RBAC, ABAC, MAC, DAC e ACL) — FCC 2026

Segurança da InformaçãoAutorização e Controle de Acesso (RBAC, ABAC, MAC, DAC e ACL)
Código
fc142067
Banca
FCC
Órgão
ALERR
Ano
2026
Cargo
Ana Leg ( )
Uma Assembleia Legislativa disponibiliza uma API REST para consulta e gestão de documentos legislativos. Um endpoint permite acessar documentos por meio da seguinte requisição:   GET /api/documentos/{documentId}   Authorization: Bearer   Durante testes de segurança, foi identificado que usuários autenticados conseguem acessar documentos de outros gabinetes simplesmente alterando o valor de {documentId} na URL, sem qualquer validação adicional no backend.   Considerando o cenário descrito e as boas práticas de segurança da OWASP API Security Top 10 (2023), é possível concluir que se trata de uma vulnerabilidade
  1. Aque poderia ser completamente mitigada somente substituindo os identificadores sequenciais por UUIDs aleatórios.
  2. Bque poderia ser prevenida por meio da comparação entre o ID do usuário presente no JWT e o {documentId} na requisição.
  3. Cde autenticação, pois o uso de JWT não impede que usuários acessem recursos de outros usuários.
  4. Dde Broken Object Level Authorization (BOLA), pois o sistema não valida se o usuário autenticado tem permissão para acessar o objeto identificado por {documentId}.
  5. Ede Broken Function Level Authorization (BFLA), pois o endpoint não restringe quais funções podem ser executadas.
Revelar gabarito e comentário

GabaritoD — de Broken Object Level Authorization (BOLA), pois o sistema não valida se o usuário autenticado tem permissão para acessar o objeto identificado por {documentId}.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Broken Object Level Authorization (BOLA) em APIs REST

Gabarito: letra D. O cenário descreve uma falha de Broken Object Level Authorization (BOLA) — a API autentica o usuário, mas não verifica se ele tem permissão para acessar o objeto específico identificado por {documentId}. A OWASP API Security Top 10 (2023) classifica essa vulnerabilidade como API1:2023 – Broken Object Level Authorization, que ocorre quando o backend confia apenas na autenticação e não valida a propriedade do recurso.

O problema central aqui é a distinção entre autenticação e autorização. Autenticação é o processo de verificar quem o usuário é (identidade); autorização é o processo de verificar o que esse usuário pode fazer (permissões). No cenário, o usuário está autenticado (Bearer token), mas o sistema não realiza a autorização no nível do objeto — ou seja, não confere se aquele documento pertence ao gabinete do usuário logado. Isso permite que um usuário acesse documentos de outros gabinetes simplesmente alterando o documentId na URL, caracterizando uma escalada de privilégios horizontal (usuário comum acessa dados de outro usuário da mesma categoria).

A OWASP define BOLA como a vulnerabilidade que ocorre quando uma API não verifica se o objeto pertencente ao identificador enviado na requisição pertence ao usuário autenticado. O exemplo clássico é uma API bancária onde o usuário pode consultar transações alterando o ID na URL, sem validação de propriedade. As consequências incluem violação de confidencialidade, violação de conformidade (LGPD, GDPR, PCI-DSS) e perda de confiança.

A prevenção adequada envolve implementar um mecanismo de autorização que verifique, em cada requisição, se o usuário autenticado tem permissão para acessar o objeto solicitado. Isso pode ser feito comparando o ID do usuário no JWT com o proprietário do recurso, ou usando políticas de acesso baseadas em papéis (RBAC) ou atributos (ABAC). A OWASP também recomenda preferir IDs aleatórios e imprevisíveis (como UUIDs) como medida complementar, mas isso não substitui a validação de autorização — apenas dificulta a descoberta de outros IDs.

A pegadinha desta questão está em confundir BOLA com Broken Function Level Authorization (BFLA). Enquanto BOLA protege o acesso ao objeto como um todo (API1), BFLA protege o acesso à funcionalidade/ação em si (API5). No cenário, o usuário acessa um documento (objeto) que não deveria — isso é BOLA. BFLA seria se o usuário conseguisse executar uma função administrativa (como deletar ou aprovar) sem ter permissão para tal.

NÃO CAIA NESSA!

A banca tenta confundir BOLA com BFLA. A diferença crucial: BOLA é sobre acessar objetos (dados) que não pertencem ao usuário; BFLA é sobre executar funções (ações) que o usuário não deveria executar. No enunciado, o usuário acessa um documento de outro gabinete — isso é acesso a objeto, não execução de função. Guarde: BOLA = objeto/dado; BFLA = função/ação.

Critério

BOLA (API1)

BFLA (API5)

Foco da vulnerabilidade

Acesso a objetos/dados (ex.: documento, registro)

Acesso a funções/ações (ex.: deletar, aprovar)

Exemplo típico

Alterar {documentId} na URL para acessar recurso alheio

Executar endpoint administrativo sem permissão

Tipo de escalada

Horizontal (usuário comum acessa dados de outro usuário)

Vertical (usuário comum executa função de admin)

Pergunta-chave

"O usuário pode acessar este objeto?"

"O usuário pode executar esta função?"

Classificação OWASP 2023

API1:2023

API5:2023

1BOLA (API1)
Acesso a objeto/dado
Ex.: documento de outro gabinete
2BFLA (API5)
Execução de função/ação
Ex.: deletar, aprovar, configurar
3Mitigação
Validar autorização por objeto
RBAC ou ABAC
UUID como medida complementar
BOLA vs BFLA
LEVELsoulevel.com.br
BOLA vs BFLA: BOLA (API1) (Acesso a objeto/dado, Ex.: documento de outro gabinete); BFLA (API5) (Execução de função/ação, Ex.: deletar, aprovar, configurar); Mitigação (Validar autorização por objeto, RBAC ou ABAC, UUID como medida complementar)

Alternativa A — ❌ Incorreta

Afirma que a vulnerabilidade poderia ser completamente mitigada apenas substituindo IDs sequenciais por UUIDs aleatórios. Isso é falso: UUIDs dificultam a descoberta de outros IDs, mas não impedem o acesso se o backend não validar a autorização. Um usuário que conhece o UUID de outro documento (por exemplo, via referência em outro lugar) ainda conseguiria acessá-lo. A OWASP recomenda UUIDs como medida complementar, não como solução única. A mitigação correta exige validação de autorização no backend.

Alternativa B — ❌ Incorreta

Afirma que a vulnerabilidade poderia ser prevenida somente pela comparação entre o ID do usuário no JWT e o documentId. Essa é uma medida válida de prevenção, mas a alternativa usa o termo "somente", tornando-a incorreta — existem outras formas de mitigação (RBAC, ABAC, políticas de acesso). Além disso, a comparação direta entre ID do usuário e documentId nem sempre é aplicável: em muitos casos, o documento pertence a um gabinete (grupo), não a um usuário individual. A validação correta deve verificar se o usuário pertence ao gabinete dono do documento.

Alternativa C — ❌ Incorreta

Classifica a vulnerabilidade como de autenticação, afirmando que o JWT não impede o acesso a recursos de outros usuários. Isso confunde autenticação com autorização. O JWT cumpre seu papel de autenticar o usuário; o problema é a falta de autorização no nível do objeto. A vulnerabilidade é de autorização (BOLA), não de autenticação. A alternativa C descreve corretamente o sintoma (JWT não impede acesso a recursos de outros), mas erra ao classificá-lo como falha de autenticação.

Alternativa D — ✅ Correta ⟵ GABARITO

Identifica corretamente a vulnerabilidade como Broken Object Level Authorization (BOLA), pois o sistema não valida se o usuário autenticado tem permissão para acessar o objeto identificado por {documentId}. Isso corresponde exatamente à definição da OWASP API1:2023: a API autentica o usuário, mas não verifica a propriedade do recurso. O usuário consegue acessar documentos de outros gabinetes alterando o ID na URL, sem validação adicional no backend.

Alternativa E — ❌ Incorreta

Classifica a vulnerabilidade como Broken Function Level Authorization (BFLA), afirmando que o endpoint não restringe quais funções podem ser executadas. Isso é incorreto: BFLA ocorre quando o usuário executa funções/ações que não deveria (como deletar, aprovar, configurar). No cenário, o usuário acessa um objeto (documento) que não deveria — isso é BOLA, não BFLA. A distinção é clara: BOLA protege o acesso ao objeto; BFLA protege o acesso à funcionalidade.

Gabarito: letra D — a vulnerabilidade é Broken Object Level Authorization (BOLA), pois o sistema não valida se o usuário autenticado tem permissão para acessar o objeto identificado por {documentId}.

Link permanente: /questoes/fc142067