Cerebro Studio · Backlog · Changelog
RioNoTeatro • /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md
Abrir Studio Projeto externo em modo read-only; encaminhamento permitido, escrita bloqueada.

Backlog Unificado

Projeto: RioNoTeatro. Fonte principal: /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.

Sem itens pendentes em /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Especificações Disponíveis (fora da fila pendente)

Detalhe do BK Selecionado

/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-209-guarda-integridade-mercadopago-alerta-whatsapp.md • 2026-04-04T15:54:23.868Z

BK-209 - Guarda de integridade do Mercado Pago + alerta WhatsApp

Objetivo

Reduzir o risco de adulteração silenciosa das credenciais ou do fluxo Mercado Pago, detectando drift em arquivos e variáveis críticas e avisando imediatamente por WhatsApp.

Escopo da rodada

  • criar um monitor standalone para Mercado Pago em admin/cron/
  • comparar baseline de integridade contra:
  • variáveis críticas de pagamento
  • arquivos críticos do fluxo Mercado Pago
  • permissões/ownership mínimos esperados
  • manter baseline e estado fora do webroot
  • alertar por WhatsApp para 5521999605790 e 5521999915554
  • endurecer permissões do .env e de arquivos críticos do pagamento

Restrições operacionais

  • não tocar no fluxo PagSeguro nesta rodada
  • respeitar o lock concorrente de arquivos que outro programador esteja atualizando
  • evitar dependência de números de alerta vindos do .env para o disparo do monitor

Leitura técnica inicial

  • o .env atual está com permissão 644, o que é mais aberto do que deveria para um arquivo com token de pagamento
  • o helper de WhatsApp já existe em includes/whatsapp_helper.php
  • o helper usa BOT_WHATSAPP_API_URL fixo em config/bot_config.php e BOT_WHATSAPP_API_KEY vindo do ambiente
  • as credenciais Mercado Pago em uso hoje estão em variáveis MERCADOPAGO_PUBLIC_KEY_PIX e MERCADOPAGO_ACCESS_TOKEN_PIX
  • os arquivos mais sensíveis do fluxo Mercado Pago hoje são:
  • .env
  • config/connect.php
  • config/bot_config.php
  • action.php
  • checkout_pix.php
  • js/checkout_pix.js
  • webhook_mp_ingressos.php
  • includes/whatsapp_helper.php

Estratégia escolhida

  • baseline com hashes e metadados, sem salvar segredo literal
  • baseline e estado fora do webroot, em diretório de sistema
  • cron de verificação recorrente
  • deduplicação de alerta para não floodar WhatsApp
  • endurecimento mínimo de ownership/permissão dos arquivos mais críticos

Próximos passos

  • implementar o monitor em admin/cron/monitor_mercadopago_integrity.php
  • instalar/agendar execução recorrente
  • selar baseline inicial do estado atual
  • validar o check e registrar o procedimento de reseal quando houver mudança legítima

Atualização de 2026-04-03 20:13 -03

  • criado admin/cron/monitor_mercadopago_integrity.php
  • monitor implementado com:
  • baseline por hash de variáveis críticas
  • baseline por hash e metadados de arquivos críticos
  • verificação de ownership/permissão esperados
  • estado e log fora do webroot
  • alerta WhatsApp deduplicado para 5521999605790 e 5521999915554
  • storage operacional:
  • baseline: /root/.rnt_security/mercadopago_guard/baseline.json
  • state: /root/.rnt_security/mercadopago_guard/state.json
  • log: /root/.rnt_security/mercadopago_guard/guard.log
  • cron instalado em /etc/cron.d/rnt-mercadopago-guard com execução a cada minuto como root
  • baseline inicial selado com sucesso
  • check manual retornou OK
  • endurecimento aplicado:
  • .env -> root:www 640
  • config/connect.php -> root:www 644
  • config/bot_config.php -> root:www 644
  • action.php -> root:www 644
  • checkout_pix.php -> root:www 644
  • js/checkout_pix.js -> root:www 644
  • webhook_mp_ingressos.php -> root:www 644

Procedimento quando houver troca legítima de credencial

Depois de uma mudança intencional nas credenciais Mercado Pago ou em arquivos monitorados:

  1. validar o motivo da mudança
  2. aplicar a alteração
  3. rodar:
  • php /www/wwwroot/rionoteatro.com.br/admin/cron/monitor_mercadopago_integrity.php --seal
  1. confirmar o estado:
  • php /www/wwwroot/rionoteatro.com.br/admin/cron/monitor_mercadopago_integrity.php --status

Atualização de 2026-04-04 12:42 -03

  • RCA do alerta recorrente de 30 em 30 minutos:
  • a baseline ainda estava no estado antigo (root:www, .env 640, hashes anteriores)
  • houve alteração legítima em .env, checkout_pix.php e js/checkout_pix.js
  • o monitor também ficou frágil por depender de metadata hardcoded, enquanto o owner/group real do projeto na VPS estava em nobody:nogroup
  • normalização aplicada em admin/cron/monitor_mercadopago_integrity.php:
  • owner/group esperado agora é derivado do diretório raiz real do projeto
  • .env continua exigindo 640
  • arquivos de código continuam em 644
  • a mensagem de alerta passa a orientar --seal quando a mudança for autorizada
  • o snapshot do .env ganhou fallback para hash derivado das variáveis críticas já carregadas quando o arquivo não estiver legível para o usuário efetivo do PHP, evitando baseline missing -> hash logo após o --seal
  • procedimento operacional confirmado para mudança legítima:
  1. validar que o drift foi causado por manutenção autorizada
  2. corrigir eventual permissão insegura residual
  3. rodar php admin/cron/monitor_mercadopago_integrity.php --seal
  4. confirmar com --status e --check

Status 2026-04-04 12:49 -03

  • BK-209 concluído: monitor normalizado, base de hashes atualizada e alerta de drift real revalidado.
  • Baseline selada no mesmo contexto root usado pelo cron para evitar hash faltante no .env.
  • Lock integrado com docs/LOCK.md e rotina validada via php ... --check + --status.