FindBugs не обнаруживает внедрение SQL - PullRequest
0 голосов
/ 20 сентября 2018

Я обнаружил случай, когда FindBugs не обнаружил SQL-инъекцию в моем проекте.Проект построен с использованием Gradle и плагина FindBugs.Я использую Hibernate для подключения к БД.Ниже приведен раздел, содержащий SQL-инъекцию,

public List<String> fetchApplicationRequests(String applicationId,
        String fromDate, String toDate) throws ParseException {
    String sb = "SELECT * FROM table where applicationid = " + applicationId;
    Query query = getCurrentSession().createQuery(sb);
    query.setParameter("appId", applicationId);
    return (List<String>) query.list();
}

. Очевидно, что в приведенном выше разделе показано SQL-внедрениеКогда я запустил тот же проект с помощью Veracode, он показал SQL-инъекцию для упомянутого мной раздела.Ниже приведен раздел плагина FindBugs под моим build.gradle.

apply plugin: "findbugs"

findbugs {
  toolVersion = '3.0.1'
  effort = "max"
  ignoreFailures = true
  findbugsTest.enabled = false
}
tasks.withType(FindBugs) {
  reports {
      xml.enabled = false
      html.enabled = true
 }
}

Когда я запускал команду:

> ./gradlew clean build

В нем отображался список ошибок, обнаруженных в моем проекте под build/reports/findbugs/main.html

Ниже приведен список ошибок, обнаруженных FindBugs,

  • Предупреждения о недопустимой практике - 6
  • Предупреждения о корректности - 17
  • Предупреждения об интернационализации - 31
  • Предупреждения об уязвимости вредоносного кода - 52
  • Предупреждения о производительности - 15
  • Предупреждения об изворотливом коде - 46

Я ожидаю, что SQL-инъекция произойдет под Категория безопасности , которая не обнаружена,

Описание ошибки: FindBugs

Как это можно исправить или есть какой-то другой способ обнаружения инъекции SQLв моем проекте?

1 Ответ

0 голосов
/ 20 сентября 2018

Обновление до SpotBugs 3.1.7 и findsecbugs-plugin-1.8.0.jar.Затем вы получаете

This use of org/hibernate/Session.createQuery(Ljava/lang/String;)Lorg/hibernate/Query; can be vulnerable to SQL/HQL injection

для строки

Query query = ...

(а затем, конечно, переписываете свой код :))

...