OGNL (Object-Graph Navigation Language)

sigla

programaçãosegurançaredes

Uma linguagem de expressão para ler e escrever propriedades de objetos Java, usada como recurso de configuração por alguns produtos e como vetor de ataque contra outros.

As duas metades dessa frase são o mesmo fato. OGNL é poderosa porque uma expressão alcança os objetos de uma aplicação em execução e chama métodos neles, que é precisamente o que a torna útil para mapear um atributo num produto de identidade e catastrófica quando uma aplicação avalia algo enviado por um desconhecido. O Apache Struts passou anos corrigindo uma família de falhas com um mesmo formato: alcançar o objeto que impõe as restrições da própria OGNL, desligá-lo e então chamar qualquer coisa. O PingFederate trata o mesmo poder pelo caminho oposto, restringindo a autoria de expressões a um papel administrativo separado daquele que configura o restante, pelo raciocínio de que quem escreve expressões executa código no servidor, e isso é uma permissão diferente de configurar uma conexão.

Também conhecido como: object-graph navigation language, ognl expression

Fontes

  • Apache Struts security bulletins S2-045, S2-046 and S2-057
  • Ping Identity: PingFederate expression support and the Expression Administrator role

Todos os verbetes do glossário