Pular para o conteúdo
Skillpedia
Segurança48 mil · #2854

django-access-review

Faz seu agente verificar se o acesso a dados em um sistema chamado Django está seguro. É útil para encontrar falhas que permitam acesso indevido a informações.

O que ela faz

Esta ferramenta ajuda a verificar se usuários não autorizados podem acessar, modificar ou excluir dados de outros usuários em sistemas feitos com Django ou DRF. Ela investiga como as permissões funcionam no código para encontrar falhas de segurança.

Quando usar

  • ✓Ao revisar o código de segurança de um sistema Django/DRF.
  • ✓Quando se suspeita que um usuário pode ver ou alterar dados de outro.
  • ✓Para garantir que apenas pessoas autorizadas acessem informações específicas.

Exemplo do que pedir para a IA

“Verifique se um usuário comum pode ver os dados de outro usuário no sistema de documentos.”

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/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/django-access-review/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/django-access-review/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta analisa o código para entender como as permissões são verificadas, rastreando o caminho dos dados e procurando por pontos onde o acesso pode ser indevido. Ela foca em entender a lógica específica do sistema em vez de procurar por padrões de erro genéricos.

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 sickn33/agentic-awesome-skills --skill django-access-review

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/django-access-review/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.

<!-- Material de referência baseado na Série de Folhas de Dicas da OWASP (CC BY-SA 4.0) https://cheatsheetseries.owasp.org/ -->

Revisão de Controle de Acesso e IDOR no Django

Encontre vulnerabilidades de controle de acesso investigando como a base de código responde a uma pergunta:

O Usuário A pode acessar, modificar ou excluir os dados do Usuário B?

Quando Usar

  • Você precisa revisar o código Django ou DRF em busca de lacunas de controle de acesso, risco de IDOR ou falhas de autorização em nível de objeto.
  • A tarefa envolve confirmar se um usuário pode acessar, modificar ou excluir os dados de outro usuário.
  • Você deseja uma revisão de autorização orientada por investigação em vez de correspondência genérica de padrões.

Filosofia: Investigação em Vez de Correspondência de Padrões

NÃO escaneie por padrões vulneráveis predefinidos. Em vez disso:

  1. Entenda como a autorização funciona NESTA base de código
  2. Faça perguntas sobre fluxos de dados específicos
  3. Rastreie o código para encontrar onde (ou se) as verificações de acesso ocorrem
  4. Relate apenas o que você confirmou por meio de investigação

Cada base de código implementa a autorização de maneira diferente. Seu trabalho é entender essa implementação específica e, em seguida, encontrar lacunas.


Fase 1: Entenda o Modelo de Autorização

Antes de procurar por bugs, responda a estas perguntas sobre a base de código:

Como a autorização é aplicada?

Pesquise a base de código para encontrar:

□ Where are permission checks implemented?
  - Decorators? (@login_required, @permission_required, custom?)
  - Middleware? (TenantMiddleware, AuthorizationMiddleware?)
  - Base classes? (BaseAPIView, TenantScopedViewSet?)
  - Permission classes? (DRF permission_classes?)
  - Custom mixins? (OwnershipMixin, TenantMixin?)

□ How are queries scoped?
  - Custom managers? (TenantManager, UserScopedManager?)
  - get_queryset() overrides?
  - Middleware that sets query context?

□ What's the ownership model?
  - Single user ownership? (document.owner_id)
  - Organization/tenant ownership? (document.organization_id)
  - Hierarchical? (org -> team -> user -> resource)
  - Role-based within context? (org admin vs member)

Comandos de Investigação

# Find how auth is typically done
grep -rn "permission_classes\|@login_required\|@permission_required" --include="*.py" | head -20

# Find base classes that views inherit from
grep -rn "class Base.*View\|class.*Mixin.*:" --include="*.py" | head -20

# Find custom managers
grep -rn "class.*Manager\|def get_queryset" --include="*.py" | head -20

# Find ownership fields on models
grep -rn "owner\|user_id\|organization\|tenant" --include="models.py" | head -30

Não prossiga até que você entenda o modelo de autorização.


Fase 2: Mapeie a Superfície de Ataque

Identifique endpoints que lidam com dados específicos do usuário:

Que recursos existem?

□ What models contain user data?
□ Which have ownership fields (owner_id, user_id, organization_id)?
□ Which are accessed via ID in URLs or request bodies?

Que operações são expostas?

Para cada recurso, mapeie:

  • Liste endpoints - quais dados são retornados?
  • Detalhe/recupere endpoints - como o objeto é buscado?
  • Crie endpoints - quem define o proprietário?
  • Atualize endpoints - os usuários podem modificar os dados de outros?
  • Exclua endpoints - os usuários podem excluir os dados de outros?
  • Ações personalizadas - o que elas acessam?

Fase 3: Faça Perguntas e Investigue

Para cada endpoint que lida com dados do usuário, pergunte:

A Pergunta Central

"Se eu sou o Usuário A e sei o ID do recurso do Usuário B, posso acessá-lo?"

Rastreie o código para responder a isso:

1. Where does the resource ID enter the system?
   - URL path: /api/documents/{id}/
   - Query param: ?document_id=123
   - Request body: {"document_id": 123}

2. Where is that ID used to fetch data?
   - Find the ORM query or database call

3. Between (1) and (2), what checks exist?
   - Is the query scoped to current user?
   - Is there an explicit ownership check?
   - Is there a permission check on the object?
   - Does a base class or mixin enforce access?

4. If you can't find a check, is there one you missed?
   - Check parent classes
   - Check middleware
   - Check managers
   - Check decorators at URL level

Perguntas de Acompanhamento

□ Para endpoints de lista: A consulta filtra para os dados do usuário ou retorna tudo?

□ Para endpoints de criação: Quem define o proprietário - o servidor ou a solicitação?

□ Para operações em massa: Elas são restritas aos dados do usuário?

□ Para recursos relacionados: Se posso acessar um documento, posso acessar seus comentários?
  E se o documento pertencer a outra pessoa?


…
Perguntas frequentes

O que é IDOR?

IDOR significa 'Insecure Direct Object Reference'. É uma falha de segurança onde um usuário pode acessar recursos (como dados ou arquivos) que ele não deveria ter permissão para ver, simplesmente alterando um identificador (como um número) na URL ou na requisição.

Como essa ferramenta encontra falhas?

Ela não procura por erros automaticamente. Em vez disso, ela ajuda você a investigar manualmente como o sistema verifica quem pode fazer o quê com os dados, seguindo o fluxo do código para encontrar onde as verificações de acesso podem estar faltando ou falhando.

Preciso saber programar em Django para usar?

É útil ter algum conhecimento básico de como o Django funciona, especialmente sobre como ele lida com dados e permissões. A ferramenta guia a investigação, mas a análise final do código é necessária.

Detalhes

Descrição original do autor

Use when reviewing Django or DRF access control: trace authorization flows, IDOR risks, object permissions, query scoping and tenant isolation before proposing a verified fix.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2854
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas