Pular para o conteúdo
Skillpedia
Agentes35 mil · #5643

detecting-broken-object-property-level-authorization

Ajuda seu agente a encontrar falhas em APIs que expõem ou permitem modificar dados indevidamente. Protege contra acesso a informações sensíveis.

O que ela faz

Esta ferramenta ajuda a encontrar falhas de segurança em APIs. Ela verifica se a API está mostrando informações que não deveria (como senhas ou salários) ou se permite que usuários alterem dados que não deveriam ter acesso, como mudar o próprio nível de permissão para administrador.

Quando usar

  • ✓Ao investigar um problema de segurança em um aplicativo.
  • ✓Ao criar testes para garantir que uma API é segura.
  • ✓Quando você suspeita que dados sensíveis estão sendo expostos indevidamente.

Exemplo do que pedir para a IA

“Verifique se a API de usuários expõe campos como 'salário' ou 'senha' nas respostas.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-broken-object-property-level-authorization/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/detecting-broken-object-property-level-authorization/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta compara os dados que a API retorna com o que é esperado. Ela também tenta enviar dados extras ou modificados para ver se a API aceita alterações indevidas em campos sensíveis.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill detecting-broken-object-property-level-authorization

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/detecting-broken-object-property-level-authorization/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Detecção de Autorização Quebrada em Nível de Propriedade de Objeto

Visão Geral

Autorização Quebrada em Nível de Propriedade de Objeto (BOPLA), classificada como API3:2023 no OWASP API Security Top 10, combina duas classes de vulnerabilidade relacionadas: Exposição Excessiva de Dados (API retornando mais dados do que o necessário) e Atribuição em Massa (API aceitando mais dados do que o pretendido). Mesmo quando as APIs aplicam a autorização em nível de objeto corretamente, elas podem falhar em controlar quais propriedades específicas de um objeto um usuário pode ler ou modificar. Atacantes exploram isso lendo propriedades sensíveis de respostas da API ou injetando propriedades adicionais em corpos de requisição para modificar campos aos quais não deveriam ter acesso.

Quando Usar

  • Ao investigar incidentes de segurança que exigem a detecção de autorização quebrada em nível de propriedade de objeto
  • Ao construir regras de detecção ou consultas de caça a ameaças para este domínio
  • Quando analistas de SOC precisam de procedimentos estruturados para este tipo de análise
  • Ao validar a cobertura de monitoramento de segurança para técnicas de ataque relacionadas

Pré-requisitos

  • API alvo com endpoints que retornam ou aceitam dados de objeto
  • Documentação ou esquema da API (especificação OpenAPI preferida)
  • Burp Suite ou Postman para manipulação de requisições de API
  • Múltiplas contas de usuário com diferentes níveis de privilégio
  • Python 3.8+ com a biblioteca requests para testes automatizados
  • Autorização para realizar testes de segurança

Padrões de Vulnerabilidade

Exposição Excessiva de Dados

A API retorna propriedades de objeto que o cliente não precisa:

// GET /api/v1/users/123
// Response includes sensitive fields the UI doesn't display:
{
  "id": 123,
  "username": "john_doe",
  "email": "john@example.com",
  "name": "John Doe",
  "ssn": "123-45-6789",           // Sensitive - not needed by UI
  "salary": 95000,                 // Sensitive - not needed by UI
  "internal_notes": "VIP client",  // Internal - should not be exposed
  "password_hash": "$2b$12...",    // Critical - never expose
  "role": "admin",                 // May enable privilege discovery
  "created_by": "system_admin",   // Internal metadata
  "credit_card_last4": "4242"     // PCI compliance violation
}

Atribuição em Massa

A API vincula dados fornecidos pelo cliente a propriedades internas do objeto sem filtragem:

// Normal user update request
PUT /api/v1/users/123
Content-Type: application/json

{
  "name": "John Updated",
  "email": "new@example.com",
  "role": "admin",           // Attacker-injected: privilege escalation
  "is_verified": true,       // Attacker-injected: bypass verification
  "discount_rate": 100,      // Attacker-injected: business logic abuse
  "account_balance": 999999  // Attacker-injected: financial fraud
}

Metodologia de Teste

#!/usr/bin/env python3
"""Scanner de Vulnerabilidade BOPLA

Testa APIs para Autorização Quebrada em Nível de Propriedade de Objeto,
incluindo Exposição Excessiva de Dados e Atribuição em Massa.
"""

import requests
import json
import sys
from typing import Dict, List, Optional, Set
from dataclasses import dataclass, field
from copy import deepcopy

@dataclass
class BOPLAFinding:
    endpoint: str
    method: str
    vulnerability_type: str  # "excessive_exposure" ou "mass_assignment"
    severity: str
    property_name: str
    details: str

class BOPLAScanner:
    SENSITIVE_PROPERTY_PATTERNS = {
        "critical": [
            "password", "password_hash", "secret", "token", "api_key",
            "private_key", "secret_key", "access_token", "refresh_token",
        ],
        "high": [
            "ssn", "social_security", "tax_id", "credit_card", "card_number",
            "cvv", "bank_account", "routing_number",
        ],
        "medium": [
            "salary", "income", "internal_notes", "admin_notes",
            "created_by", "modified_by", "ip_address", "session_id",
            "role", "permissions", "is_admin", "is_superuser", "privilege",
        ],
        "low": [
            "phone", "address", "date_of_birth", "dob", "age",
            "gender", "ethnicity", "religion",
        ]
    }

    MASS_ASSIGNMENT_FIELDS = [
        ("role", "admin"),
        ("is_admin", True),
        ("is_verified", True),
        ("is_active", True),
        ("email_verified", True),
        ("account_type", "premium"),
        ("discount_rate", 100),
        ("credit_limit", 999999),
        ("permissions", ["admin", "write", "delete"]),
        ("account_balance", 999999),
        ("subscription_tier", "enterprise"),
        ("rate_limit", 999999),
    ]


…
Perguntas frequentes

O que é 'Broken Object Property Level Authorization' (BOPLA)?

É um tipo de falha de segurança onde a API não controla corretamente quais partes (propriedades) de um objeto (como um usuário ou um pedido) um usuário pode ver ou modificar. Isso pode levar à exposição de dados sensíveis ou à alteração indevida de informações.

Quais são os dois tipos de problemas que essa ferramenta detecta?

Ela detecta 'Exposição Excessiva de Dados' (a API mostra mais informações do que o necessário) e 'Atribuição em Massa' (a API aceita dados para campos que não deveria, permitindo alterações indevidas).

Preciso ser um programador experiente para usar isso?

Não necessariamente. A ferramenta é projetada para ajudar a identificar problemas de segurança. No entanto, para configurar e executar os testes automatizados, pode ser útil ter algum conhecimento básico de programação e ferramentas como Burp Suite ou Postman.

Detalhes

Descrição original do autor

Detect and test for OWASP API3:2023 Broken Object Property Level Authorization (BOPLA), covering excessive data exposure in API responses and mass assignment via injected request-body properties. Use when reviewing API responses/requests for over-exposed or over-writable object fields, or building detection rules and test cases for property-level authorization gaps that object-level checks miss.

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#5643
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas