🔎 Проверять код можно (и нужно!) по-разному, в том числе анализируя его при помощи разных алгоритмов и технологий.
Один из таких методов называется SAST (static application security testing), он включает разные способы проверки, в том числе абстрактную интерпретацию, или символьное исполнение кода.
🤔 Что это такое?
Интерпретация кода без его конкретного выполнения для сбора семантической информации о коде (потоков передачи данных, передач управления и т. д.).
Суть метода в том, что все входные данные, такие как аргументы точек входа или обращения к файловой системе, считаются неизвестными и помечаются символьными значениями. Например, привычными x и y. При этом неизвестные могут принимать любые доступные значения, пока не наложены ограничительные условия.
🤓 Проблема и решение
Вроде бы все просто, но практика показывает, что чем выше количество вариантов выражений с нашими условными x и y, тем больше ресурсов (времени и памяти системы) мы тратим на такой анализ. Причем вариативность растет по экспоненте, и в какой-то момент это становится проблемой.
‼ Решить ее можно, бесконечно добавляя новые слоты оперативной памяти (так себе вариант) или уменьшая покрытие кода (а вот это уже интереснее).
Как это сделать? Узнаете, прочитав в Positive Research статью нашего коллеги Георгия Александрии, ведущего программиста группы разработки средств статического анализа: https://vk.cc/cBUUXo
#PositiveResearch #PositiveЭксперты
#PositiveTechnologies