Não acho tão improvável assim. Já fizeram isso duas vezes (que se tem notícia) e o SQLInjection que ele demonstrou mostra que o sistema é bastante inseguro. Não tenho muito conhecimento sobre SQLInjection (embora tenha de SQL),
SQLInjection só acontece em programas mal feitos. É bem simples.
para simplificar, se você usa um statement em Java (e não um prepared statement), SQLDinãmico em banco de dados sem utilização de Bind, ou qualquer maneira de montar expressão SQL dinamicamente sem as devidas precauções, você está abrindo as portas para SQLInjection.
ex: (não estou preocupado com código nem qtd de apóstrofe nos caracteres de escape)
pense que sua aplicação tem um campo A em um formulario.
O A espera um nome para uma busca
O sujeito digita algo assim no campo X'' + ' or exists (select 1 from dual)'
Ai o código do mané ta assim
sql = 'select nome from cliente where nome = " + A --- veja que aqui A é o campo do formulario
a sql que o sistema vai interpretar vai ser select nome from cliente where nome = 'X' or exists (select 1 from dual)
Como a segunda expressão é verdadeira e tem um OR, o cara tem acesso a todos os clientes da tabela de clientes do cara.
Para resolver é só programar utilizando-se boas práticas
sql = "select * from cliente where nome = :1"
fazer um preparedStatement passando o conteudo de X para substituir o valor da bind
aí o sqlk vau ficar assim select * from cliente where nome = 'X'' + ' or exists (select 1 from dual)'
e não vai achar ninguém.
O mesmo problema pode acontecer em qualquer linguagem se não for bem feito, basta ter sqls gerado dinamicamente