Taint Tracking, перевод статьи про Pysa и экспериментальный функционал Semgrep.
Только сейчас нашел перевод на Habr статьи про Pysa, которую я публиковал недавно. Напомню, что Pysa - статический анализатор от Facebook для Python проектов. Pysa представляет из себя модуль для open source проекта Pyre, который также, как и в CodeQL, позволяет описывать свой data flow с помощью taint tracking.
Taint tracking - это механизм отслеживания taint data - так называемых "испорченных" данных. Это данные, которые поступили на вход (как правило от клиента), прошли через написанный разработчиками код и попали в небезопасную функцию, что в свою очередь породило уязвимость. Описывается taint tracking везде через Source
и Sink
. Пример того, как это работает в CodeQL, можно увидеть на скриншоте. Здесь ищется код, в котором данные, передаваемые пользователем, через proces.argv
попадают в fs.readFile().
Конструкция Taint Tracking является одной из самых популярных в CodeQL. На этом же механизме построен анализ данных в Pysa.
В документации Semgrep также недавно появилась страница с описанием taint tracking в качестве экспериментальной фичи в Python. Это должно значительно сократить объем необходимых правил для поиска багов и увеличить процент покрытия.
#sast #dev
>>Click here to continue<<