Резюме управления
Tezos связался с Sayfer Security с просьбой провести аудит безопасности Tezos MetaMask Snap в июне 2023 года.
Прежде чем оценить вышеуказанные услуги, мы провели стартовую встречу с технической командой Tezos и получили обзор системы и целей этого исследования.
За двухнедельный период исследования мы обнаружили в системе 2 вывода.
В заключение следует отметить, что после отчета необходимо внести несколько исправлений, но уровень безопасности системы является компетентным.
Уязвимости по рискам
High – Прямая угроза ключевым бизнес-процессам.
Medium – Косвенная угроза ключевым бизнес-процессам или частичная угроза бизнес-процессам.
Низкий – Прямых угроз нет. Уязвимость может быть использована с использованием других уязвимостей.
Информационный - Этот вывод не указывает на уязвимость, но содержит комментарий, который уведомляет о недостатках дизайна и неправильной реализации, которые могут вызвать проблему в долгосрочной перспективе.
Подход
Методология оценки безопасности
Сайфер использует ОВАСП ВСТГ в качестве нашего технического стандарта при рассмотрении веб-приложений. Получив полное представление о системе, мы решили, какие тесты OWASP необходимы для ее оценки.
Оценка безопасности
После понимания и определения области применения, выполнения моделирования угроз и оценки правильных тестов, необходимых для полной проверки приложения на наличие недостатков безопасности, мы провели оценку безопасности.
Описание таблицы проблем
Название проблемы
ID | OWASP ID проблемы. Дополнительные тесты, которые мы проводим и не включены в таблицу OWASP, будут иметь идентификатор Sayfer. Пример идентификатора: ВСТГ-ИНФО-002 ВСТГ – Руководство по тестированию веб-безопасности. ИНФОРМАЦИЯ – Сокращение темы, к которой относится проблема. 002 - Номер выпуска. |
Снижение | Представляет фактор риска проблемы. Дальнейшее описание см. Уязвимости по рискам . |
Требуемый навык | Описывает уровень навыков, необходимый для проведения успешной эксплуатации. Чем ниже уровень квалификации, тем проще процесс эксплуатации. |
OWASP Справка |
Ссылка на соответствующую страницу OWASP для получения дополнительной информации. |
Адрес | URL-адрес, в котором была обнаружена эта проблема. Проблемы без местоположения не имеют конкретного местоположения и относятся к продукту в целом. |
Инструменты | Инструменты, используемые для обнаружения проблемы. |
Описание
Здесь мы даем краткое описание проблемы и того, как она возникла, шаги, которые мы предприняли для ее обнаружения или использования, а также доказательство концепции (если таковое имеется), а также то, как эта проблема может повлиять на продукт или его пользователей. .
риска
Предлагаемые варианты решения этой проблемы и ссылки на рекомендованные сайты для дальнейшего устранения.
Оценка безопасности
В ходе аудита системы были проведены следующие тесты
Сбор информации
Сбор информации | Название теста |
ВСТГ-ИНФО-01 | Проведение поисковой разведки на предмет утечки информации |
ВСТГ-ИНФО-02 | Веб-сервер отпечатков пальцев |
ВСТГ-ИНФО-03 | Проверка метафайлов веб-сервера на предмет утечки информации |
ВСТГ-ИНФО-04 | Перечислить приложения на веб-сервере |
ВСТГ-ИНФО-05 | Проверка содержимого веб-страницы на предмет утечки информации |
ВСТГ-ИНФО-06 | Определите точки входа приложения |
ВСТГ-ИНФО-07 | Сопоставление путей выполнения через приложение |
ВСТГ-ИНФО-08 | Платформа веб-приложений отпечатков пальцев |
ВСТГ-ИНФО-09 | Веб-приложение для отпечатков пальцев |
ВСТГ-ИНФО-10 | Архитектура картографического приложения |
Тестирование управления конфигурацией и развертыванием
Тестирование управления конфигурацией и развертыванием | Название теста |
WSTG-CONF-01 | Конфигурация тестовой сетевой инфраструктуры |
WSTG-CONF-02 | Конфигурация тестовой платформы приложений |
WSTG-CONF-03 | Проверка обработки расширений файлов для конфиденциальной информации |
WSTG-CONF-04 | Просмотрите старые резервные копии и файлы без ссылок на конфиденциальную информацию |
WSTG-CONF-05 | Перечисление интерфейсов администрирования инфраструктуры и приложений |
WSTG-CONF-06 | Тестовые HTTP-методы |
WSTG-CONF-07 | Тестирование строгой транспортной безопасности HTTP |
WSTG-CONF-08 | Проверка междоменной политики RIA |
WSTG-CONF-09 | Разрешение тестового файла |
WSTG-CONF-10 | Тест на захват поддомена |
WSTG-CONF-11 | Протестировать облачное хранилище |
Тестирование управления идентификацией
Тестирование управления идентификацией | Название теста |
ВСТГ-ИДНТ-01 | Определения тестовых ролей |
ВСТГ-ИДНТ-02 | Процесс регистрации тестового пользователя |
ВСТГ-ИДНТ-03 | Процесс создания тестового аккаунта |
ВСТГ-ИДНТ-04 | Тестирование перечисления учетных записей и угадываемой учетной записи пользователя |
ВСТГ-ИДНТ-05 | Тестирование на слабую или несоблюдение политики имени пользователя |
Проверка подлинности
Проверка подлинности | Название теста |
ВСТГ-АТН-01 | Проверка учетных данных, передаваемых по зашифрованному каналу |
ВСТГ-АТН-02 | Проверка учетных данных по умолчанию |
ВСТГ-АТН-03 | Проверка механизма слабой блокировки |
ВСТГ-АТН-04 | Тестирование обхода схемы аутентификации |
ВСТГ-АТН-05 | Тестирование на наличие уязвимого пароля |
ВСТГ-АТН-06 | Тестирование уязвимостей кэша браузера |
ВСТГ-АТН-07 | Проверка политики ненадежных паролей |
ВСТГ-АТН-08 | Тестирование на слабый ответ на контрольный вопрос |
ВСТГ-АТН-09 | Тестирование функций смены или сброса слабого пароля |
ВСТГ-АТН-10 | Тестирование на более слабую аутентификацию в альтернативном канале |
Авторизация Тестирование
Авторизация Тестирование | Название теста |
ВСТГ-АТХЗ-01 | Тестирование файла обхода каталога Include |
ВСТГ-АТХЗ-02 | Тестирование обхода схемы авторизации |
ВСТГ-АТХЗ-03 | Проверка на повышение привилегий |
ВСТГ-АТХЗ-04 | Тестирование небезопасных прямых ссылок на объекты |
Тестирование управления сессиями
Тестирование управления сессиями | Название теста |
ВСТГ-СЭСС-01 | Тестирование схемы управления сеансом |
ВСТГ-СЭСС-02 | Проверка атрибутов файлов cookie |
ВСТГ-СЭСС-03 | Тестирование фиксации сеанса |
ВСТГ-СЭСС-04 | Тестирование открытых переменных сеанса |
ВСТГ-СЭСС-05 | Тестирование на подделку межсайтовых запросов |
ВСТГ-СЭСС-06 | Тестирование функциональности выхода из системы |
ВСТГ-СЭСС-07 | Время ожидания сеанса тестирования |
ВСТГ-СЭСС-08 | Тестирование на загадку сеанса |
ВСТГ-СЭСС-09 | Тестирование на перехват сеанса |
Проверка данных
Проверка данных | Название теста |
ВСТГ-ИНПВ-01 | Тестирование отраженного межсайтового скриптинга |
ВСТГ-ИНПВ-02 | Тестирование сохраненных межсайтовых сценариев |
ВСТГ-ИНПВ-03 | Тестирование на подделку глагола HTTP |
ВСТГ-ИНПВ-04 | Тестирование на загрязнение параметров HTTP |
ВСТГ-ИНПВ-05 | Тестирование на SQL-инъекцию |
ВСТГ-ИНПВ-06 | Проверка внедрения LDAP |
ВСТГ-ИНПВ-07 | Тестирование XML-инъекций |
ВСТГ-ИНПВ-08 | Тестирование на инъекцию SSI |
ВСТГ-ИНПВ-09 | Тестирование XPath Injection |
ВСТГ-ИНПВ-10 | Тестирование IMAP SMTP Injection |
ВСТГ-ИНПВ-11 | Тестирование на внедрение кода |
ВСТГ-ИНПВ-12 | Тестирование на внедрение команд |
ВСТГ-ИНПВ-13 | Тестирование на внедрение строки формата |
ВСТГ-ИНПВ-14 | Тестирование инкубационной уязвимости |
ВСТГ-ИНПВ-15 | Тестирование контрабанды разделения HTTP |
ВСТГ-ИНПВ-16 | Тестирование входящих HTTP-запросов |
ВСТГ-ИНПВ-17 | Тестирование внедрения заголовка хоста |
ВСТГ-ИНПВ-18 | Тестирование внедрения шаблонов на стороне сервера |
ВСТГ-ИНПВ-19 | Тестирование подделки запросов на стороне сервера |
Обработка ошибок
Обработка ошибок | Название теста |
ВСТГ-ЭРРХ-01 | Тестирование на неправильную обработку ошибок |
ВСТГ-ЭРРХ-02 | Тестирование трассировки стека |
Криптография
Криптография | Название теста |
WSTG-CRYP-01 | Тестирование слабой безопасности транспортного уровня |
WSTG-CRYP-02 | Тестирование для заполнения Oracle |
WSTG-CRYP-03 | Тестирование конфиденциальной информации, отправляемой по незашифрованным каналам |
WSTG-CRYP-04 | Тестирование на слабое шифрование |
Тестирование бизнес-логики
Тестирование бизнес-логики | Название теста |
ВСТГ-БУСЛ-01 | Протестируйте проверку данных бизнес-логики |
ВСТГ-БУСЛ-02 | Проверить способность подделывать запросы |
ВСТГ-БУСЛ-03 | Тестовые проверки целостности |
ВСТГ-БУСЛ-04 | Тест на синхронизацию процесса |
ВСТГ-БУСЛ-05 | Проверка количества раз, когда функция может быть использована Ограничения |
ВСТГ-БУСЛ-06 | Тестирование обхода рабочих процессов |
ВСТГ-БУСЛ-07 | Проверка средств защиты от неправильного использования приложений |
ВСТГ-БУСЛ-08 | Тестовая загрузка файлов неожиданных типов |
ВСТГ-БУСЛ-09 | Тестовая загрузка вредоносных файлов |
Тестирование на стороне клиента
Тестирование на стороне клиента | Название теста |
ВСТГ-КЛНТ-01 | Тестирование межсайтового скриптинга на основе DOM |
ВСТГ-КЛНТ-02 | Тестирование выполнения JavaScript |
ВСТГ-КЛНТ-03 | Тестирование HTML-инъекций |
ВСТГ-КЛНТ-04 | Тестирование перенаправления URL на стороне клиента |
ВСТГ-КЛНТ-05 | Тестирование CSS-инъекций |
ВСТГ-КЛНТ-06 | Тестирование манипулирования ресурсами на стороне клиента |
ВСТГ-КЛНТ-07 | Протестируйте совместное использование ресурсов между источниками |
ВСТГ-КЛНТ-08 | Тестирование межсайтовой перепрошивки |
ВСТГ-КЛНТ-09 | Проверка на кликджекинг |
ВСТГ-КЛНТ-10 | Тестирование веб-сокетов |
ВСТГ-КЛНТ-11 | Тестирование веб-сообщений |
ВСТГ-КЛНТ-12 | Тестирование хранилища браузера |
ВСТГ-КЛНТ-13 | Тестирование включения межсайтового скрипта |
Тестирование API
Тестирование API | Название теста |
ВСТГ-АПИТ-01 | Тестирование GraphQL |
Заказать аудит у Sayfer
Результаты оценки безопасности
Зависимости с известными уязвимостями
ID | САЙ-01 |
Статус: | Исправлена |
Снижение | Низкий |
Адрес | – |
Влияние на бизнес | Использование уязвимых версий узловых модулей может подвергнуть службу различным атакам, некоторые из которых менее критичны, но другие серьезны. |
Описание
Аудит NPM возвращает несколько результатов для известных уязвимостей в установленных пакетах:
npm audit
# npm audit report
engine.io 5.1.0 - 6.4.1
Severity: moderate
engine.io Uncaught Exception vulnerability -
https://github.com/advisories/GHSA-q9mw-68c2-j6m5
fix available via `npm audit fix`
node_modules/engine.io
socket.io 4.1.0 - 4.6.0-alpha1
Depends on vulnerable versions of engine.io
node_modules/socket.io
gatsby 1.9.130 - 4.25.7 || 5.4.0-next.0 - 5.9.1
Depends on vulnerable versions of gatsby-cli
Depends on vulnerable versions of latest-version
Depends on vulnerable versions of socket.io
node_modules/gatsby
got <11.8.5
Severity: moderate
Got allows a redirect to a UNIX socket -
https://github.com/advisories/GHSA-pfrx-2q88-qq97
fix available via `npm audit fix`
node_modules/package-json/node_modules/got
package-json <=6.5.0
Depends on vulnerable versions of got
node_modules/package-json
latest-version 0.2.0 - 5.1.0
Depends on vulnerable versions of package-json
node_modules/latest-version
update-notifier 0.2.0 - 5.1.0
Depends on vulnerable versions of latest-version
node_modules/update-notifier
gatsby-cli 1.1.27 - 4.25.0
Depends on vulnerable versions of update-notifier
node_modules/gatsby-cli
13
request *
Severity: moderate
Server-Side Request Forgery in Request -
https://github.com/advisories/GHSA-p8p7-x288-28g6
fix available via `npm audit fix`
node_modules/request
node-gyp <=7.1.2
Depends on vulnerable versions of request
node_modules/@npmcli/run-script/node_modules/node-gyp
@npmcli/run-script 1.1.1 - 1.8.6
Depends on vulnerable versions of node-gyp
node_modules/@npmcli/run-script
@lavamoat/allow-scripts <=2.3.0
Depends on vulnerable versions of @npmcli/run-script
node_modules/@lavamoat/allow-scripts
socket.io-parser 4.0.4 - 4.2.2
Severity: high
Insufficient validation when decoding a Socket.IO packet -
https://github.com/advisories/GHSA-cqmj-92xf-r6r9
fix available via `npm audit fix`
node_modules/socket.io-parser
webpack 5.0.0 - 5.75.0
Severity: high
Cross-realm object access in Webpack 5 -
https://github.com/advisories/GHSA-hc6q-2mpp-qw7j
fix available via `npm audit fix`
node_modules/webpack
yaml 2.0.0-5 - 2.2.1
Severity: high
Uncaught Exception in yaml - https://github.com/advisories/GHSA-f9xv-q969-pqx4
fix available via `npm audit fix`
node_modules/yaml-loader/node_modules/yaml
Мы проверили каждую из них, чтобы убедиться, что она не влияет на производственную сборку, и обнаружили, что даже самые серьезные из них не оказывают прямого влияния на Tezos Snap. Хотя это означает, что на данный момент угрозы безопасности нет, в будущем могут появиться новые функции или новые уязвимости.
риска
Первым шагом будет обновление пакетов до версий, где это возможно. На более широком уровне существует необходимость в автоматизированной системе, которая будет предупреждать о новых уязвимостях, и должен быть внедрен процесс их смягчения при возникновении критических.
Волшебные числа
ID | САЙ-02 |
Статус: | Исправлена |
Снижение | Информационный |
Адрес | – |
Влияние на бизнес | Магические числа влияют на читаемость кода. Без внутреннего знания они кажутся довольно произвольными. |
Описание
В ходе нашей оценки мы заметили использование, казалось бы, произвольных констант без поясняющих комментариев:
В приведенном выше случае сложно догадаться, в чем причина деления на 1000 или умножения на 257, не зная, как работает протокол и сам блокчейн.
риска
Хорошей практикой считается давать таким жестко запрограммированным константам описательные имена и при необходимости добавлять пояснительные комментарии.
Тревожная подсказка метамаски
ID | САЙ-03 |
Статус: | Исправлена |
Снижение | Информационный |
Адрес | – |
Влияние на бизнес | Подобные запросы могут отговорить пользователей устанавливать Snap. |
Описание
При установке Snap появляется следующая непонятная подсказка метамаски:
риска
Возможно, Tezos не сможет изменить это довольно пугающее приглашение. Однако, поскольку это может представлять интерес, мы решили включить этот выпуск как информационный.
Тревожная подсказка метамаски
ID | САЙ-04 |
Статус: | Исправлена |
Снижение | Информационный |
Адрес | – |
Влияние на бизнес | Ничто |
Описание
В ходе нашей оценки мы заметили этот комментарий, подразумевающий определенную неопределенность, которая может указывать на более серьезную проблему.
Мы провели расследование и не смогли выяснить, в чем проблема, о которой идет речь в комментарии.
риска
Эти комментарии должны быть изменены или удалены в релизной версии, или, если здесь есть более глубокая проблема, разработчикам следует обновить логику, объясняющую, почему это так.
Приложение A. Исправления оценки безопасности
После проверки командой Sayfer мы можем подтвердить, что все уязвимости устранены командой Tezos.
Хэш первоначального коммита: 0e0d653b85cbd11365771ad9c2ee5726b10a7d26
Исправления хэша коммита: 0d0c9381a1107c54647d927d4fe99694f332e24d