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-210-hardening-z-dispara-lista-digital.md • 2026-04-11T18:05:52.813Z
BK-210 - Hardening do disparo de listas + filtro de eventos externos
Objetivo
Fechar a execução pública indevida de z_dispara.php e z_dispara_diario.php e corrigir o disparo de lista digital para considerar apenas peças com venda online do próprio site.
Contexto confirmado
z_dispara.phpez_dispara_diario.phpficam na raiz pública do site- ambos podiam ser chamados por URL e não tinham trava explícita de execução via CLI apenas
z_dispara_diario.phpestava consultando toda a tabelapecasativa do dia, sem separar:- peças com venda online
- eventos externos de produtor/bot exibidos em
eventos.php - caso concreto confirmado:
Equipe Sonic /TIJUCAorigem = botid_produtor = 50929parceria_online = 0link_externoapontando para Sympla
Regra de filtro adotada
Usar a mesma distinção já aplicada na vitrine de eventos.php:
- venda online:
id_produtor IS NULL- ou
parceria_online = 1 - evento externo:
id_produtorpreenchido- e
parceria_online = 0
Próximos passos
- bloquear execução web pública dos dois scripts
- restringir o SQL para peças com venda online
- validar sintaxe PHP
Atualização de 2026-04-03 20:24 -03
z_dispara.phppassou a aceitar apenas execução viaCLIz_dispara_diario.phppassou a aceitar apenas execução viaCLI- ambos agora retornam
403quando acessados por URL pública - o filtro de peças para lista digital ficou restrito a:
id_produtor IS NULL- ou
parceria_online = 1 - isso elimina da rotina diária os eventos externos mostrados em
eventos.php - caso concreto validado fora do filtro:
Equipe Sonic /TIJUCAorigem=botid_produtor=50929parceria_online=0link_externoSympla
Validação
php -l z_dispara.phpphp -l z_dispara_diario.phpcurl -I https://rionoteatro.com.br/z_dispara.php->403curl -I https://rionoteatro.com.br/z_dispara_diario.php->403
Atualização de 2026-04-11 14:55 -03
Achado crítico novo
re_env.phpestava público na web e respondia200- esse arquivo monta exatamente assuntos
Lista Vendas PRÉ:/Lista Vendas FINAL: - ele também contém um bug grave de reenvio:
$enviada_anteriormente = false;if (!$enviada_anteriormente) { ... envia ... }- na prática, se executado, ele reprocessa histórico de
tab_emailenviadosem idempotência real
Evidência desta rodada
curl -I https://rionoteatro.com.br/re_env.phpretornava200antes do hotfixcurl -I https://rionoteatro.com.br/z_dispara.phpez_dispara_diario.phpjá retornavam403mailq/postqueuemostrou426mensagens enfileiradas do remetentewww@rionoteatro.com.br- a fila foi purgada de forma emergencial para interromper o envio contínuo
z_dispara.phpatual não era a origem imediata do disparo, porque está falhando cedo comUnauthorizedao tentar parsear XML do PagSeguro
Mitigação emergencial aplicada
re_env.phpagora exigeCLI- o vhost Nginx passou a bloquear via web:
/re_env.php/z_dispara.php/z_dispara_diario.php/z_dispara_pagamento.php- Canadá (
CA) entrou na lista Geo bloqueada do site
Leitura técnica atual
- há ataque real de varredura contra
/produtor/modulos/eventos/incluir.php - mas a evidência atual favorece problema operacional interno + helper legado exposto, não execução confirmada do hacker dentro do cron
Atualização complementar de 2026-04-11 15:15 -03
z_dispara.phpficou com automação de e-mail desativada por padrão- reativação futura só via
RNT_LISTA_EMAILS_ENABLED=1 z_dispara_diario.phpficou com e-mail diário desativado por padrão- o fluxo diário passa a operar em modo WhatsApp-only enquanto a investigação continua
- quando houver sucesso de WhatsApp, a sessão agora pode ser marcada como enviada mesmo sem e-mail
z_dispara.phptambém recebeu lock MySQL próprio para evitar sobreposição futura caso o canal seja reativado
Leitura operacional
- isso não prova comprometimento do hacker no cron
- isso reduz drasticamente o risco residual imediato do nosso lado
- a trilha de e-mail da lista fica suspensa até revisão completa de credenciais, fallback SMTP e reentrada
Atualização complementar de 2026-04-11 15:32 -03
z_dispara.phpficou com automação de e-mail desativada por padrão- reativação futura só via
RNT_LISTA_EMAILS_ENABLED=1 - a entrada de cron do wrapper
80db3a025a56a14fa7d6abb30c7e0444foi removida docrontabdo root z_dispara_diario.phpficou com e-mail diário desativado por padrão- o fluxo diário passa a operar em modo WhatsApp-only enquanto a investigação continua
- quando houver sucesso de WhatsApp, a sessão pode ser marcada como enviada mesmo sem e-mail
re_env.phpagora exigeCLIe--confirmed- a fila do MTA do remetente
www@rionoteatro.com.brfoi zerada
Leitura operacional refinada
- o vetor mais perigoso encontrado foi helper legado exposto + fila local de e-mail, não prova de execução remota bem-sucedida do cron
- o ataque ao produtor/eventos continua relevante, mas até aqui sem evidência de persistência do payload no nome das peças ativas
- risco residual mais importante: credenciais SMTP hardcoded ainda expostas no código legado