Укрепить сборку SCA на исполняемом файле или на файлах .o

Я пытаюсь сделать статический анализ для кода C ++, написанного для создания двоичного файла. Тем не менее, эта сборка занимает часы — иногда больше, чем день — для завершения.

Чтобы обойти это, я попытался собрать только все файлы .o, создав поддельный архив для использования в качестве цели. Преимущество, которое я вижу в этом подходе, состоит в том, что код, не принадлежащий нашей команде, не нуждается в сборке, а также экономится время компоновки. Когда я это делаю, мы видим огромный выигрыш с точки зрения времени сборки.

Тем не менее, один из парней из моей команды считает, что это может привести к ложным срабатываниям и ложным отрицаниям, поскольку он упускает возможность взаимодействия с кодом за пределами нашей собственности. Пример, который он привел, был об общих объектах между вызовами API в библиотеку за пределами нашей собственности. Другими словами, мы не сможем узнать о манипуляциях с объектом за пределами вашего домена. Но разве это не будет обработано, когда все владельцы файлов делают то же самое для своего кода?

Пожалуйста, сообщите, если мой подход правильный или нет.

0

Решение

Ваш подход может привести к ложным срабатываниям, но, скорее всего, к ложным отрицаниям, что хуже, и / или слишком низким рейтингам риска.

Анализатор потока данных использует глобальный межпроцедурный анализ распространения заражения для обнаружения потока данных между источник (ввод пользователя) и раковина (вызов опасной функции).

Если анализатор потока данных не может найти приемник, то анализатор перестанет следовать за этим распространением заражения и перейдет к другому, пропустив уязвимость (ложноотрицательный).

Следующий псевдокод является примером обоих PII воздействия а также SQL-инъекция:

public static void main(String args[]) throws Exception {
ResultSet results = SQLInj(args);
System.out.println(results.Password);
}

public static ResultSet SQLInj(String args[]) {
String query = "SELECT * FROM user_data WHERE last_name = '" + args[1] + "'";
Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery(query);
}

Источник Main-> арг [] и раковина SQLInj-> ExecuteQuery ().

Если функция SQLInj находится в коде, который не сканируется (а не в коде вашей команды), проблема SQL-инъекции не будет обнаружена, поскольку анализатор потока данных никогда не найдет приемник. Обнаружение PII может быть обнаружено с помощью семантического анализатора путем поиска слова «пароль», но с гораздо более низким рейтингом достоверности.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]