FortiMail sem correção, sete avisos no Next.js e o token que cresceu 13 vezes
A semana não teve um incidente que dominasse tudo. Teve uma forma repetida, e ela é sobre etiqueta que continua a mesma enquanto o conteúdo embaixo muda. Seis dos oito itens aqui são variação disso.
O caso mais bruto é o FortiMail. A Fortinet confirmou exploração ativa de uma falha
9,8 em 1º de outubro e não publicou versão corrigida: o que existe é contorno de
configuração. Quem tem rotina de "atualiza e segue" descobriu que a rotina não se
aplica. O Next.js publicou sete avisos no dia 30, e subir a versão é a parte fácil:
o que decide se você estava exposto é configuração, não número de versão. A Anthropic
e a OpenAI lançaram modelo em dois dias seguidos sem mexer no preço por token, porque
o que caiu foi o número de tokens por tarefa. O token de instalação de GitHub App foi
de 40 para 520 caracteres mantendo o prefixo ghs_. O Pix por aproximação não ganhou
limite novo: o Banco Central apagou o artigo que dava limite próprio a ele. E o
Python 3.15 não mudou de número, mudou de data.
É um conjunto chato de monitorar, porque nenhum desses aparece em diff de
package.json nem em alerta de versão nova. Oito itens. Três desenvolvidos.
Destaques
Zero-day no FortiMail, com exploração ativa e nenhuma versão para instalar
Em 1º de outubro a Fortinet publicou o aviso FG-IR-26-175, sobre a CVE-2026-104286, nota 9,8. São duas falhas somadas na interface web: travessia de caminho e tratamento indevido de byte nulo, no recurso de cifragem baseada em identidade (IBE). O efeito é escrita de arquivo arbitrário no sistema, sem autenticação nenhuma, por requisição HTTP ou HTTPS forjada. Atingidas: 8.0.0 a 8.0.1, 7.6.0 a 7.6.6, 7.4.0 a 7.4.8 e 7.2.0 a 7.2.9. A CISA pôs a falha no catálogo de exploração ativa no mesmo dia, com prazo de 4 de outubro para as agências federais americanas.
O detalhe que muda o procedimento é que não existe versão corrigida. O aviso lista a 8.0.2, a 7.6.7 e a 7.4.9 como versões futuras que conterão a correção, e manda quem está no ramo 7.2 migrar para 7.4 ou acima. Enquanto isso o que existe é contorno: desabilitar o IBE, pela interface ou pela linha de comando, ou tirar a interface de webmail da internet e deixá-la só em rede confiável. Repare no que isso faz com a fila de trabalho. Não é uma janela de atualização, é uma decisão de configuração em produção, e decisão de configuração precisa de dono.
A outra metade disso é que o caso vem com indicadores de comprometimento, e
o relato da BleepingComputer
registra quais: arquivos de biblioteca modificados ou acrescentados, tarefa de cron
referenciando /migadmin, conta de arquivamento apontando para servidor remoto, e os
endereços 79.141.169.187 e 45.129.0.192. A falha foi achada dentro da própria
Fortinet, por Gwendal Guégniaud, do time de segurança de produto. Ou seja: o
fornecedor descobriu, mas descobriu depois de alguém já estar usando. Se você tinha
IBE exposto, a ordem certa é triagem antes de contorno, porque o contorno fecha a
porta e não diz se alguém já entrou.
No dia anterior tinha saído o par desse caso, e vale olhar junto. Em 30 de setembro a Cisco publicou o aviso da CVE-2026-76504, também 9,8, no Catalyst SD-WAN Manager: tratamento indevido de codificação de URI em requisição HTTP faz a regra de autenticação não casar, e o pedido chega no endpoint protegido sem credencial, com acesso de API como administrador. A Cisco diz ter tomado conhecimento de exploração ativa em setembro, e o aviso é explícito em que não há contorno. Corrigido na 20.9.10.1, 20.12.8.2, 20.15.6.1, 20.18.4.1, 26.1.2.1 e 26.2.1.
Os dois juntos formam uma simetria desconfortável. O FortiMail tem contorno e não tem correção; o Cisco tem correção e não tem contorno. E nos dois a falha está no mesmo lugar: em como o aparelho interpreta uma string antes de decidir quem você é. Byte nulo de um lado, codificação de URI do outro. Isso é a terceira semana seguida que o Radar abre com equipamento de borda, e a pergunta continua sendo a mesma: quem aplica firmware nos seus, e em quantas horas.
Sete avisos no Next.js, e por que a versão nova é a parte fácil
Em 30 de setembro a Vercel publicou a liberação de segurança de setembro, com a 16.3.8 (LTS ativa) e a 15.5.27 (LTS em manutenção). São sete falhas: uma alta, cinco médias e uma baixa. Era a data avisada com uma semana de antecedência, que o Radar da semana passada pediu para pôr na agenda.
A alta é
a CVE-2026-94483,
falsificação de requisição no lado do servidor na otimização de imagem: uma URL
remota que está na lista de permissão mas é controlada pelo atacante leva a
requisição para onde ele quiser, inclusive faixa de IP privado. As médias se dividem
em envenenamento de cache e vazamento de conteúdo. A CVE-2026-94543 troca a entrada
de cache de uma página por conteúdo de outra rota em aplicação auto-hospedada com
Pages Router e páginas SSG ou ISR. A CVE-2026-94484 faz o mesmo com uma requisição só,
sem autenticação, em quem tem página catch-all na raiz junto com rotas SSG ou ISR. A
CVE-2026-94485 faz rota de imagem de metadado, tipo opengraph-image e
twitter-image, ignorar o dynamicParams e servir segmento que foi deliberadamente
deixado fora do generateStaticParams(). A GHSA-h694-7cp9-m8p3 erra a chave de cache
quando uma função 'use cache' chama outra que lê parâmetro de raiz. E a
CVE-2026-94544 deixa requisição normal receber conteúdo de Draft Mode não publicado,
e persistir isso na página gerada.
Agora leia a lista de novo e repare que toda entrada tem um "se". Sem
images.remotePatterns configurado, a alta não te atinge. Em aplicação na Vercel, a
94543 não te atinge. Com build em Turbopack, a 94485 não te atinge. Sem Cache
Components, as duas últimas não te atingem. Isso faz do exercício útil não o
npm install, e sim um questionário de seis linhas contra o seu próprio app: tem
remotePatterns? tem Pages Router com SSG ou ISR auto-hospedado? tem catch-all na
raiz? build em webpack ou Turbopack? usa 'use cache'? serve Draft Mode? Eu rodei
isso neste site enquanto escrevia, e a resposta foi nenhuma das seis. Levou três
minutos e vale mais que o número da versão, porque na próxima liberação a lista de
falhas será outra e o questionário é o mesmo.
A baixa merece parágrafo próprio porque é a mais provável de acontecer com você. A
CVE-2026-94486
é no servidor de desenvolvimento: o endpoint de Model Context Protocol que o
next dev expõe não verifica de qual site veio a requisição. Um site malicioso que
você visite com o next dev rodando consegue ler onde o projeto está no disco,
trechos de código-fonte vindos de relatório de erro, o inventário de rotas e os logs
de desenvolvimento. Produção não serve esse endpoint. Mas caminho no disco, inventário
de rotas e log de desenvolvimento é bastante coisa para uma severidade baixa, e o
vetor é "você abriu uma aba".
Dois modelos em dois dias, e o preço por token que não mexeu
Em 28 de setembro a Anthropic anunciou o Claude Sonnet 5.5, com o mesmo preço do Sonnet 5: 2 dólares por milhão de tokens de entrada, 10 de saída e 0,20 de leitura de cache. A saída sai mais de 30% mais rápido. E o número que de fato interessa está no consumo, não na tabela: segundo a própria página, em tarefas de finanças o modelo usou em média 121 mil tokens por resposta, contra 497 mil do Sonnet 5.
No dia seguinte, no DevDay, a OpenAI lançou o GPT-6.1 Sol. Pela tabela de preços oficial, entrada e saída ficaram iguais às do GPT-6 Sol, em 2 e 10 dólares por milhão. O que mudou foi a entrada em cache, que caiu de 0,20 para 0,10. Continua valendo a regra de contexto longo da casa: acima de 272 mil tokens de entrada, o preço de entrada dobra e o de saída vai a 15.
Duas coisas para quem tem custo de inferência em planilha. A primeira é que preço por token deixou de ser o eixo de comparação. Os dois lançamentos da semana mantiveram a tabela e mexeram em quantos tokens uma tarefa consome, e esse número ninguém te entrega: ele sai do seu tráfego, com os seus prompts. Se a sua medição hoje é "custo do mês", ela não captura a melhora nem a piora. O que captura é token de entrada e de saída por tarefa concluída, quebrado por rota.
A segunda é sobre cache, e é a parte silenciosa. Com entrada em cache a 0,10 contra 2,00 de entrada cheia, a diferença virou vinte vezes. Isso significa que a ordem do seu prompt, o que você põe estável no começo e o que varia no fim, pesa mais na conta do que a escolha entre um modelo e outro da mesma faixa. Era verdade na semana passada com o GPT-6 Sol, quando a razão era dez. Esta semana dobrou.
Em nota
- Token de instalação de GitHub App foi de 40 para 520 caracteres. O
changelog de 2 de outubro
encerrou a migração para o formato sem estado
ghs_APPID_JWT. Permissão, escopo de repositório, validade de uma hora e a API REST de emissão continuam iguais, e token antigo funciona até expirar. O que quebra é previsível e é por isso que vale a nota: validação que exige 40 caracteres, coluna de banco curta, middleware que trunca cabeçalhoAuthorizationlongo e regra de ocultação de segredo que casa só com o padrão velho. O cabeçalho temporárioX-GitHub-Stateless-S2S-Tokenfica depreciado em 30 de novembro de 2026. A lição é a de sempre com credencial de terceiro: trate como string opaca, sem supor formato nem tamanho. - O Python 3.15 escorregou para 9 de outubro. Em 2 de outubro saiu o terceiro candidato, com cerca de 156 correções de 82 contribuidores desde o rc2, e o anúncio diz o motivo: apareceu impedimento de última hora em importação tardia, e faz sentido dar tempo de testar direito. A importação tardia explícita, da PEP 810, é justamente o recurso de capa do 3.15. Quem tinha a atualização marcada para a primeira semana de outubro muda a data, não o plano.
- Rust 1.99.0, e o fim do toolchain em Windows 32 bits. O
1.99.0 saiu em 1º de outubro
com funções variádicas de ABI C e o
VaListestabilizado, maisVec::into_partseVec::from_parts,Box::into_non_null,IntoIteratorparaBox<[T; N]>estd::fs::set_times. No dia seguinte veio o aviso de rebaixamento dos alvos i686 de Windows: a partir do 1.100.0, oi686-pc-windows-msvcfica em nível 1 sem ferramentas de host e oi686-pc-windows-gnuem nível 2 sem ferramentas de host. A biblioteca padrão continua sendo distribuída; o que deixa de existir é instalar toolchain em host Windows de 32 bits. Quem precisa do alvo compila cruzado a partir de 64 bits. - O Pix por aproximação perdeu a regra de limite própria. Entrou em vigor em 1º de outubro a Instrução Normativa BCB nº 746, de 16 de junho, que revoga o inciso VI do § 2º do art. 10, o art. 16-A e o art. 16-C da Instrução Normativa BCB nº 512. Era ali que morava o teto de 500 reais por transação por aproximação. Sem esses dispositivos, o limite passa a ser o que a instituição combinou com o cliente, como em chave e QR Code. A mesma revogação vale para iniciação por compartilhamento do serviço de iniciação sem redirecionamento, a jornada do Open Finance. Se tem 500 escrito à mão em validação ou em teste dessas duas trilhas no seu código, está errado desde quinta.
- Workers KV Instant, que não é bem um KV. Na semana de aniversário da Cloudflare saiu, em 1º de outubro, um modo novo do Workers KV apoiado no Quicksilver: leitura com P99 abaixo de dois milissegundos e propagação de escrita com P99 em 256 ms pela rede inteira. Os limites são o que dizem para que serve: até 10 mil pares por namespace, 1 MB no total, chave de até 300 bytes, uma escrita por namespace por segundo e armazenamento a 100 dólares por MB por mês. Isso não é cache nem banco de sessão, é store de configuração e de feature flag com API de KV, e com esse preço por MB o desenho tem que ser pequeno de propósito. Está em beta privado.
O que eu faria com isso esta semana
- Separar "tem contorno" de "tem correção" no inventário de borda. São duas filas diferentes e a semana entregou uma de cada. FortiMail: aplicar o contorno hoje e, se o IBE estava exposto, fazer triagem com os indicadores publicados antes disso, porque a correção não existe para esperar. Catalyst SD-WAN Manager: não há contorno, então é lista de atualização, e o prazo da CISA era 3 de outubro. Depois responda a versão geral da pergunta: para cada aparelho que termina TLS ou autentica a sua rede, quem aplica firmware e em quantas horas.
- Fazer o questionário de seis linhas do Next.js, não só o
npm install. TemremotePatterns? Pages Router com SSG ou ISR auto-hospedado? catch-all na raiz? webpack ou Turbopack?'use cache'? Draft Mode? Seis respostas dizem se você estava exposto, e ficam guardadas para a próxima liberação. E, se rodanext devno mesmo navegador em que navega, trate a falha baixa como a mais relevante das sete. - Trocar "custo por mês" por "tokens por tarefa" na sua medição de inferência. É o único número que mostra o ganho dos lançamentos desta semana, e ele não vem de benchmark de ninguém. Instrumente entrada, saída e leitura de cache por tarefa concluída, por rota. É também o primeiro gráfico que eu pediria num diagnóstico de IA em produção, porque ele diz onde está o desperdício antes de qualquer troca de modelo.
- Procurar o 40 e o 500 no seu código. Dois números fixos ficaram inválidos nesta
semana, em domínios que não têm nada a ver um com o outro: o tamanho do token de
GitHub App e o teto do Pix por aproximação.
grepé barato e a classe de bug é a mesma, que é constante de terceiro escrita à mão. Se achar um dos dois, vale olhar o que mais entrou no código como número mágico de fornecedor.
Radar é a newsletter semanal deste blog: o que aconteceu na semana em tecnologia, com comentário sobre o que muda para quem constrói e opera software.
- Fortinet
- Next.js
- GitHub
- segurança
- Pix