Nightshade добавляет анализ безопасности к Compact контрактам Midnight

Разработчик Dickson Wu протестировал инструмент с открытым исходным кодом на преднамеренно внедренных ошибках и на 300 общедоступных контрактах.

By SongMarketCap

Midnight News - Nightshade добавляет анализ безопасности к Compact контрактам Midnight

Nightshade это инструмент статического анализа, предназначенный для помощи разработчикам в проверке смарт контрактов, написанных на Compact, языке программирования, используемом для создания приложений на Midnight.

Представленный Wu на Midnight Forum 29 октября, этот инструмент проверяет исходный код по 96 правилам и отмечает шаблоны, которые могут требовать более тщательного изучения. Его результаты указывают соответствующую строку кода и включают сведения, призванные помочь разработчикам исследовать проблему.

Nightshade проверяет код Compact на шаблоны безопасности

Статический анализ изучает исходный код без необходимости запускать контракт. Nightshade использует этот подход, чтобы искать шаблоны, связанные с конфиденциальностью, авторизацией и другими частями логики контракта.

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

Другие проверки ищут отброшенные результаты проверки подписи и случаи, когда значения свидетеля трактуются как доказательство личности. Инструмент также помечает шаблоны, в которых используется предоставленное вызывающей стороной время без привязки к времени цепочки, а также Merkle доказательства, для которых не выполняется проверка принадлежности.

Для каждой находки Nightshade предоставляет соответствующую строку исходного кода, путь, по которому проходят данные, и предложенное исправление, по словам Wu. Это дает разработчику отправную точку для изучения того, как значение проходит через контракт и где возникает отмеченное поведение.

Предупреждение само по себе не устанавливает, что контракт был эксплуатирован или что информация была раскрыта. Аналогично, завершенный анализ не является гарантией того, что контракт безопасен.

Dickson Wu делится результатами тестирования Nightshade

Wu оценивал Nightshade на тестовых случаях, содержащих преднамеренно внедренные ошибки. Он сообщил, что инструмент обнаружил 263 из 266 положительных случаев, охваченных оценкой.

Разработчик также протестировал исправленные версии этих случаев. Nightshade не выдал предупреждений для 240 из 242 исправленных версий, а для двух других сообщил о находках. Эти результаты описывают тестовые случаи, использованные в той оценке, и не устанавливают показатель обнаружения для каждой возможной проблемы безопасности.

Затем Wu запустил инструмент на 300 публичных контрактах Compact из 144 репозиториев. Он сообщил об отсутствии сбоев в ходе этого эксперимента и определил 258 контрактов, которые получили полный анализ.

Это различие важно, поскольку завершение сканирования и отсутствие найденных проблем это разные результаты. По словам Wu, контракты, которые не получили полного анализа, отмечались как незавершенные, а не считались чистыми.

Разработчик опубликовал методику оценки и количество тестов вместе с инструментом, что позволяет другим изучить, как были получены указанные результаты.

[NEWSBREAK]

Автономный анализ и интеграция для разработчиков

По словам Wu, Nightshade запускается локально и не требует подключения к интернету или компилятора Compact для сканирования исходного кода. Инструмент поддерживает версии компилятора Compact с 0.28 по 0.35.

Разработчики могут просматривать находки в виде текста или экспортировать их в форматы JSON и SARIF. Также доступен GitHub Action для отображения результатов во время проверки предлагаемых изменений кода, помещая находки в рабочий процесс, который разработчики уже могут использовать для изучения обновлений.

Инструмент распространяется по лицензии Apache 2.0 с открытым исходным кодом. Wu представил версию 0.1.1 и пригласил разработчиков делиться отзывами, сообщать о ложных срабатываниях и предлагать дополнительные правила.