Seja bem vindo

Security

Contexto de Auditoria de Segurança: tgarante-portal

Este documento serve como um "checkpoint" para retomar o trabalho de segurança em outra máquina ou sessão.

Estado Atual

Foi realizada uma auditoria completa no projeto (Laravel 10 + Livewire + Jetstream). Foram identificadas falhas críticas que permitem invasões, roubo de dados e manipulação de informações sem autenticação.

Falhas Identificadas (Resumo)

🚨 1. Exposição de Logs do Sistema

  • Caminho: routes/api.php (Linha 148)
  • Problema: O endpoint api/logs é público. Qualquer pessoa pode ler o laravel.log, que contém stack traces e dados sensíveis.

🚨 2. Vulnerabilidades de IDOR (Insecure Direct Object Reference)

  • Caminhos:
  • BrokerController::update
  • ApiResidenceController::update
  • ResidenceController::update
  • Problema: Os controllers não verificam se o usuário autenticado é o dono do registro sendo editado. Um corretor pode editar o perfil de outro ou deletar imóveis de terceiros apenas mudando o ID na URL.

🚨 3. Mass Assignment Generalizado

  • Caminho: Quase 50 modelos em app/Models/.
  • Problema: Uso de protected $guarded = []. Isso permite que um atacante injete valores em colunas como active_status, role, ou mude o email de qualquer conta enviando campos extras na requisição HTTP.

🚨 4. Bypass de Autenticação em Rotas Críticas

  • Caminho: routes/api.php (Linhas 73-75)
  • Problema: Rotas como POST /api/v2/immobile (criação de imóvel) e POST /api/broker/register estão fora de middlewares de autenticação, permitindo criação/alteração de dados por usuários anônimos.



Plano de Correção (Próximos Passos)

  1. Proteção de Rotas:
  • Bloquear api/logs com middleware de administrador.
  • Garantir que TODA rota de escrita (POST, PUT, DELETE) esteja protegida por auth:sanctum ou auth:broker.
  1. Implementação de Policies (Autorização):
  • Criar Laravel Policies para Broker e Residence para validar a propriedade do dado antes de qualquer update ou delete.
  1. Segurança dos Modelos:
  • Substituir $guarded = [] por $fillable = [...] listando explicitamente apenas os campos seguros para entrada do usuário.
  • Parar de usar $request->all() em mass updates; usar $request->only(...) ou $request->validated().
  1. Saneamento de Markdown/HTML:
  • Revisar usos de {!! !!} nos arquivos .blade.php e garantir que o HTML seja limpo antes de ser exibido.


Nota para a Próxima Máquina: Ao iniciar uma nova conversa, forneça este arquivo para que o Antigravity tenha o contexto completo das vulnerabilidades encontradas.