Skip to content

fix(evolution): detect view-once/ephemeral media in inbound guard (MAR-414) - #3

Closed
raffareis wants to merge 2 commits into
mar-322-chatbot-contentlessfrom
mar-414-view-once-media-guard
Closed

raffareis wants to merge 2 commits into
mar-322-chatbot-contentlessfrom
mar-414-view-once-media-guard

Conversation

@raffareis

Copy link
Copy Markdown
Member

O que muda

Endurece o guard de mídia recebida (isMedia/isVideo) para admitir os envelopes
viewOnceMessage / viewOnceMessageV2 / viewOnceMessageV2Extension / ephemeralMessage,
que o Baileys entrega embrulhados e hoje ficam fora do bloco de upload S3 (e do base64
para webhook). Sem isso, um vídeo "ver uma vez" de lead não gera mediaUrl nem linha Media.

  • inboundMediaUpload.ts: novo helper unwrapInboundMediaContent (desembrulha recursivamente
    os wrappers, sem mutar a mensagem persistida).
  • whatsapp.baileys.service.ts: os dois guards (entrada ~1742 e envio ~2990) passam a calcular
    isMedia/isVideo sobre o conteúdo desembrulhado.
  • wa.types.ts: viewOnceMessageV2Extension incluído em MessageSubtype (o desembrulho de
    ownKeyMediaMessage/download cobre a variante estendida).
  • test/xmacna-inbound-media-guard.test.ts: regressão com protobuf viewOnceMessageV2 +
    videoMessage (e demais envelopes).

Por quê

Avaliação MAR-398: o guard só olhava tipos no topo; o envelope view-once/ephemeral pulava o
bloco S3 inteiro. Impacto observado hoje nulo (0 viewOnceMessage* em ~430k mensagens),
mas risco latente.

Validação

  • npm run test:xmacna-inbox → 69/69.
  • npx tsc --noEmit → OK.
  • npx eslint nos arquivos tocados → OK.

Rollback

Reverter o merge deste PR (a imagem viva sha256:75bb77f8cbde… / a6253e79 permanece intacta;
nenhum cutover foi feito).

MAR: MAR-414 · Contexto: MAR-398 · Registro: xmacna/elysium#671

…e gate

The inbox release gate (validate-inbound-inbox-source) runs
npm audit --omit=dev --audit-level=low with no allowlist, and 4 advisories
published after the live commit a6253e7 now fail it:

- proxy-addr 2.0.7 -> 2.0.8 (CRITICAL, GHSA-jqcg-44mw-7w3h)
- compression 1.8.1 -> 1.8.2 (HIGH, GHSA-vc2v-76pw-4v95)
- sharp 0.35.4 -> 0.35.5 (HIGH, GHSA-wq5f-xc86-pv6w)
- music-metadata 11.14.0 -> 11.16.1 (MODERATE, 3 GHSAs)

music-metadata stays on the 11.x line (baileys range ^11.12.3) instead of the
12.x major: 11.16.1 is already outside the vulnerable <=11.15.0 range.

The compat suite asserts the audited runtime versions; align the assertions.

Copy link
Copy Markdown
Member Author

Substituído pela composição reconciliada #4, integrada na main em 4e026193b39629a66a0a5093cd74ad66e1762bcc após autorização do Rafael e revisão da chefia na MAR-531.

O head reconciliado 0ea3972a tem a mesma árvore do release becacc17 deste PR, já vivo; quatro checks hospedados verdes antes do merge. Os workflows da main executam apenas qualidade/segurança, e o build produtivo permanece desarmado. Nenhuma imagem publicada, runtime alterado ou branch removida.

Rollback administrativo: reabrir este PR; rollback da integração: revert do merge 4e026193, mediante autorização. Registro central: elysium#957.

@raffareis raffareis closed this Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant