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 olaravel.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 comoactive_status,role, ou mude oemailde 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) ePOST /api/broker/registerestã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)
- Proteção de Rotas:
- Bloquear
api/logscom middleware de administrador.
- Garantir que TODA rota de escrita (
POST,PUT,DELETE) esteja protegida porauth:sanctumouauth:broker.
- Implementação de Policies (Autorização):
- Criar Laravel Policies para
BrokereResidencepara validar a propriedade do dado antes de qualquerupdateoudelete.
- 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().
- Saneamento de Markdown/HTML:
- Revisar usos de
{!! !!}nos arquivos.blade.phpe 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.