Threatspec – это open source инструмент, который реализует моделирование угроз путем добавления специальных аннотаций в исходный код. Кроме основного назначения, идея инструмента заключается в устранении стены между командами разработки и специалистами ИБ за счет совместной работы по интеграции процесса моделирования угроз на самом начальном этапе.



Работу с утилитой можно сгруппировать на 3 основных блока:

🍡Установка. Выполняется через pip. После установки утилита инициализируется в конкретном репозитории, в рамках этого процесса генерируется конфиг-файл, который можно скорректировать, например, указать другие репозитории для сканирования

🍡Настройка. Выполняется добавление аннотаций в исходный код (пример приведен далее)

🍡Запуск и генерация отчета. Запускается threatspec, на выходе получается графический отчет с блоками кода и потенциальными проблемами



Аннотации

Внутри threatspec находится парсер, который разбирает файлы с исходным кодом и выполняет поиск аннотаций. Парсер реализован на питоне и поддерживает работу с несколькими MIME типами для понимания какие комментарии необходимо разобрать (например, C, C++/C#, XML…).



Пример использования аннотации может выглядить следующим образом:

// @accepts arbitrary file writes to WebApp:FileSystem with filename restrictions

// @mitigates WebApp:FileSystem against unauthorised access with strict file permissions

func (p *Page) save() error {

filename := p.Title + ".txt"

return ioutil.WriteFile(filename, p.Body, 0600)

}

Где accepts означает «принятие» конкретной угрозы, а mitigates – устранение угрозы с использованием определенной меры.

После запуска threatspec можно получить отчет (для примера картинка прилагается далее).



Более детальную информацию об инструменте и полном перечне аннотаций можно получить здесь: https://github.com/threatspec/threatspec