Ответ на первый вопрос — да, вы правильно поняли. Здесь ситуация аналогична SQL-инъекциям, когда разработчик использует конкатенацию вместо prepareStatement. По опыту аудита безопасности Java-приложений могу сказать, что разработчики совершают подобные ошибки.
Ответ на второй вопрос — в большом проекте я находил две HQL-инъекции, подобные описанной в статье. Одна была неэксплуатируема. Вторая была эксплуатируема без аутентификации удаленно и позволяла получить всю БД приложения. Класс, который содержал уязвимый код, успешно прошел ревью.
Ответ на второй вопрос — в большом проекте я находил две HQL-инъекции, подобные описанной в статье. Одна была неэксплуатируема. Вторая была эксплуатируема без аутентификации удаленно и позволяла получить всю БД приложения. Класс, который содержал уязвимый код, успешно прошел ревью.