Cabeçalho que vira expressão
Quando um framework avalia uma linguagem de expressão sobre dado do usuário, o dado roda como código.
Alguns frameworks têm uma linguagem de expressão para montar textos e telas, como a OGNL no Apache Struts. Ela é poderosa: pode ler objetos e até chamar métodos. Vira um buraco quando um texto do usuário chega a um ponto que a avalia.
Na CVE-2017-5638 (a falha da Equifax), o parser de upload do Struts, diante de um Content-Type inválido, montava uma mensagem de erro com o valor cru do cabeçalho e a passava a uma função que avaliava OGNL. Um %{...} colocado no Content-Type era então executado como código no servidor. O gatilho não era um campo de formulário, era um cabeçalho HTTP.
O conserto parou de reavaliar a mensagem de erro com o valor do usuário. A regra geral: dado de fora nunca deve chegar a um avaliador de expressões; a mensagem de erro deve tratar o valor como texto, nunca como expressão.