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)
- BK-136
- BK-137
- BK-138
- BK-147
- BK-148
- BK-149
- BK-150
- BK-151
- BK-156
- BK-158
- BK-159
- BK-160
- BK-161
- BK-162
- BK-163
- BK-164
- BK-165
- BK-166
- BK-170
- BK-171
- BK-172
- BK-177
- BK-183
- BK-186
- BK-187
- BK-189
- BK-190
- BK-191
- BK-192
- BK-193
- BK-195
- BK-196
- BK-197
- BK-198
- BK-199
- BK-201
- BK-205
- BK-207
- BK-208
- BK-209
- BK-210
- BK-211
- BK-212
- BK-213
- BK-214
- BK-215
- BK-216
- BK-217
- BK-218
- BK-219
- BK-220
- BK-221
- BK-229
- BK-230
- BK-231
- BK-232
- BK-233
- BK-234
- BK-235
- BK-236
- BK-239
- BK-240
- BK-241
- BK-242
- BK-243
- BK-244
- BK-245
- BK-246
- BK-248
- BK-249
- BK-250
- BK-251
- BK-252
- BK-253
- BK-254
- BK-255
- BK-256
- BK-257
- BK-258
- BK-259
- BK-260
- BK-261
- BK-262
- BK-263
- BK-264
- BK-265
- BK-266
- BK-267
- BK-268
- BK-269
- BK-270
- BK-271
- BK-272
- BK-275
- BK-276
- BK-277
- BK-278
- BK-279
- BK-280
- BK-295
- BK-313
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
5521999605790e5521999915554 - endurecer permissões do
.enve 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
.envpara o disparo do monitor
Leitura técnica inicial
- o
.envatual está com permissão644, 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_URLfixo emconfig/bot_config.phpeBOT_WHATSAPP_API_KEYvindo do ambiente - as credenciais Mercado Pago em uso hoje estão em variáveis
MERCADOPAGO_PUBLIC_KEY_PIXeMERCADOPAGO_ACCESS_TOKEN_PIX - os arquivos mais sensíveis do fluxo Mercado Pago hoje são:
.envconfig/connect.phpconfig/bot_config.phpaction.phpcheckout_pix.phpjs/checkout_pix.jswebhook_mp_ingressos.phpincludes/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
5521999605790e5521999915554 - 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-guardcom execução a cada minuto comoroot - baseline inicial selado com sucesso
- check manual retornou
OK - endurecimento aplicado:
.env->root:www 640config/connect.php->root:www 644config/bot_config.php->root:www 644action.php->root:www 644checkout_pix.php->root:www 644js/checkout_pix.js->root:www 644webhook_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:
- validar o motivo da mudança
- aplicar a alteração
- rodar:
php /www/wwwroot/rionoteatro.com.br/admin/cron/monitor_mercadopago_integrity.php --seal
- 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.phpejs/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
.envcontinua exigindo640- arquivos de código continuam em
644 - a mensagem de alerta passa a orientar
--sealquando a mudança for autorizada - o snapshot do
.envganhou 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 baselinemissing -> hashlogo após o--seal - procedimento operacional confirmado para mudança legítima:
- validar que o drift foi causado por manutenção autorizada
- corrigir eventual permissão insegura residual
- rodar
php admin/cron/monitor_mercadopago_integrity.php --seal - confirmar com
--statuse--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.mde rotina validada viaphp ... --check+--status.