Отчет MetaMask Snap Audit для Polkadot

Резюме управления

Polkadot связалась с Sayfer Security с целью провести аудит безопасности приложения Polkadot Metamask Snap в августе 2023 года.

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

За двухнедельный период исследования мы обнаружили 2 уязвимостей в кодовой базе Snap.

В заключение следует отметить, что после отчета необходимо внести несколько исправлений, но уровень безопасности системы является компетентным.

Методология риска

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

Наша модель оценки рисков основана на двух ключевых факторах: ВЛИЯНИЕ и ВЕРОЯТНОСТЬ. Под воздействием понимается потенциальный вред, который может возникнуть в результате проблемы, например финансовые потери, репутационный ущерб или неработоспособность системы. Вероятность означает вероятность возникновения проблемы с учетом таких факторов, как сложность атаки и количество потенциальных злоумышленников.

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

Риск определяется следующим образом:

Уязвимости по рискам

High – Прямая угроза ключевым бизнес-процессам.
Medium – Косвенная угроза ключевым бизнес-процессам или частичная угроза бизнес-процессам.
Низкий – Прямых угроз нет. Уязвимость может быть использована с использованием других уязвимостей.
Информационный - Этот вывод не указывает на уязвимость, но содержит комментарий, который уведомляет о недостатках дизайна и неправильной реализации, которые могут вызвать проблему в долгосрочной перспективе.

Строгость
# выпусков
High
0
Medium
2
Низкий
2
Информационный
1

Подход

Введение

Chainsafe связалась с Sayfer для проведения тестирования на проникновение в приложении Polkadot Metamask Snap.

В этом отчете документально подтверждено исследование, проведенное Sayfer с использованием выбранных ресурсов, определенных в рамках исследования. В частности, в этом отчете представлен обзор состояния безопасности двух приложений MetaMask Snap и окружающей их инфраструктуры и реализаций процессов.

Жизненный цикл нашего проекта по тестированию на проникновение:

01

Обзор области применения

02

Технический обзор

03

Проверка области действия

04

Модель угрозы

05

Оценка безопасности

06

Оценка безопасности

Обзор области применения

Во время нашей первой встречи и после понимания потребностей компании мы определили область применения приложения, которая находится по следующим URL-адресам, как область действия проекта:

горошек оснастка
Аудит фиксации: 61787c6d2193e7ec6dee6cf3ecfae4b855717092
Исправления зафиксированы:

Наши испытания проводились в августе 2023 года.

Не позволяйте этому быть слишком поздно!

Начните свой аудит с Sayfer

Проверка области действия

Мы начали с того, что убедились, что объем, определенный нам клиентом, был технически логичным. Решение о том, какая область применения подходит для данной системы, является частью первоначального обсуждения. Правильное определение масштаба является ключом к получению максимальной бизнес-ценности от исследования.

Модель угрозы

Во время наших первых встреч с клиентом мы определили наиболее важные активы, которыми обладает приложение.

Мы определили, что наибольшая текущая угроза для системы — это украденные средства пользователей.

Не позволяйте этому быть слишком поздно!

Начните свой аудит с Sayfer

Методология оценки безопасности

Сайфер использует ОВАСП ВСТГ в качестве нашего технического стандарта при рассмотрении веб-приложений. Получив полное представление о системе, мы решили, какие тесты OWASP необходимы для ее оценки.

Оценка безопасности

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

Описание таблицы проблем

Название проблемы

ID СКАЗАТЬ-??: Идентификатор для удобного информирования о каждой уязвимости.
Статус: Открытый/фиксированный/подтвержденный
Снижение Представляет фактор риска проблемы. Дальнейшее описание см. Уязвимости по рискам .
Влияние на бизнес Основной риск уязвимости на бизнес-уровне.
Адрес 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





    Этот сайт защищен reCAPTCHA и Google Персональные данные и Условия Предоставления Услуг подать заявление.

    Результаты оценки безопасности

    URL-адреса RPC определяются как всРпкурл при использовании HTTP

    ID САЙ-01
    Статус: Откройте
    Снижение Medium
    Влияние на бизнес Трудно определить влияние без работающей демонстрации. Если изменение ошибочно, это может привести к поломке привязки, в противном случае это простая проблема с именами документации/переменных.
    Адрес пакеты/привязка/src/конфигурация/predefine.ts:11,22,33

    Описание

    URL-адреса RPC отдельных протоколов были изменены в последней версии снапа. Вместо WebSocket (wss://) используется HTTP (http://).

    Это неожиданно, поскольку официальная документация Polkadot указывает только адреса веб-сокетов в своих ресурсах. Кроме того, во многих местах кода имена переменных по-прежнему содержат префикс ws, например wsRpcurl.

    предопределенный.ts:

    wsRpcUrl: 'https: /
    
    wsRpcUrl: 'https: /kusama-rpc.polkadot.io/'
    {...}
    wsRpcUrl: 'https: /westend-rpc.polkadot.io/'
    {...}
    wsRpcUrl: 'https: /rpc.polkadot.io/'
    

    риска

    Убедитесь, что предполагается использовать протокол HTTP. Если это так, измените официальную документацию, чтобы отразить это, и измените соответствующие имена переменных.

     

    Конформации ключевые функции не обрабатываются при отклонении

    ID САЙ-02
    Статус: Откройте
    Снижение Medium
    Влияние на бизнес Если пользователь отклоняет транзакцию, ничего не будет возвращено, что приведет к ошибке JavaScript, общей ошибке. не определено сообщение или вообще ничего. Это может привести к неопределенному или неожиданному поведению.
    Адрес — packages/snap/src/rpc/exportSeed.ts:14
    — packages/snap/src/rpc/substrate/sign.ts:33,53

    Описание

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

    ExportSeed(SnapsGlobalObject), обратите внимание, что здесь нет блока else

    if (confirmation) {
        const bip44Node = (await snap.request({
        method: "snap_getBip44Entropy",
        params: { coinType: kusamaCoinType },
    })) as JsonBIP44CoinTypeNode;
    

    SignPayloadJSON (SnapsGlobalObject, ApiPromise, SignerPayloadJSON)

    if (confirmation) {
        const extrinsic = api.registry.createType('ExtrinsicPayload', payload, { version: payload.version });
        return extrinsic.sign(keyPair);
    }
    

    SignPayloadRaw (SnapsGlobalObject, ApiPromise, SignerPayloadRaw)

    if (confirmation) {
        const signedBytes = keyPair.sign(hexToU8a(payload.data));
        return {
        signature: u8aToHex(signedBytes)
    };
    

    К сожалению, поскольку автоматизированные тесты не сработали, мы не смогли окончательно проверить и подтвердить этот сценарий.

    риска

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

     

    Нет диалогового окна подтверждения при отправке

    ID САЙ-03
    Статус: Откройте
    Снижение Низкий
    Влияние на бизнес Без диалога подтверждения существует риск того, что потенциальный пользователь ошибочно выполнит транзакцию, отправив средства не на тот счет.
    Адрес — пакеты/snap/src/rpc/send.ts:7-34

    Описание

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

    риска

    Реализуйте диалоговое окно, предлагающее пользователю подтвердить транзакцию.

     

    включитьPolkadotSnap Возвращает ошибку при использовании значения по умолчанию имя сети

    ID САЙ-04
    Статус: Откройте
    Снижение Низкий
    Влияние на бизнес Несоблюдение бизнес-предположений о том, что Westend является сетью по умолчанию.
    Адрес — пакеты/адаптер/src/index.ts:27-29

    Описание

    Было замечено, что несмотря на выбор Westend в качестве сети по умолчанию в snap/src/configuration/predefine.ts, если адаптер выполняет свою единственную доступную функцию, EnablePolkadotSnap(), без указания config.networkName, то будет возвращена ошибка.

    Это несовместимо с предположениями Snap, описанными, среди прочего, в README.md адаптера, которые указывают, что указание конфигурации переопределяет конфигурацию по умолчанию.

    пакеты/привязка/src/конфигурация/predefine.ts; строки 13-22, 35

    
    export const westendConfiguration: SnapConfig = {
        addressPrefix: 42,
        networkName: "westend",
        unit: {
            decimals: 12,
            image: "https: /svgshare.com/i/L2d.svg",
            symbol: "WND",
        },
        wsRpcUrl: "wss: /westend-rpc.polkadot.io/",
    };
    [ .]
    export const defaultConfiguration: SnapConfig = westendConfiguration;
    

    пакеты/привязка/src/конфигурация/predefine.ts; строки 27-29

    if (!config.networkName) {
    throw new Error("Configuration must at least define network type");
    }
    
    

    риска

    Судя по документации и коду в предопределенный.ts, эта ошибка не должна возвращаться и следует использовать Westend. И наоборот, Westend не следует устанавливать по умолчанию, и в документацию следует вносить соответствующие изменения.

     

    Нерабочая демо-версия

    ID САЙ-05
    Статус: Откройте
    Снижение Информационный
    Влияние на бизнес Наличие рабочей демо-версии может помочь пользователям протестировать функциональность Snap, а также помочь аудиторам значительно улучшить качество тестирования.
    Адрес

    Описание

    Согласно документации, команда yarn install & yarn run demo should run a working demo Snap, что позволяет вам установить его и использовать различные функции. К сожалению, во время установки консоль браузера выдала ошибку. Таким образом, проверка Snap как «живого организма» была невозможна}

    риска

    Мы предлагаем привести Snap в работоспособное состояние, а затем провести углубленные тесты на реальных транзакциях с сетью Polkadot.

    Вы можете найти больше информации об этом в нашем блоге

    Блог Сайфера посвящен web3, безопасности и исследованию уязвимостей. Мы считаем, что в индустрии кибербезопасности крайне важно быть в курсе последних тенденций и достижений. В настоящее время наша команда опытных исследователей занимается исследованием передовых технологий блокчейна и web3.
    Свяжитесь с нами

    Держите в курсе

    Телефон
    Адрес
    Тель-Авив, Израиль
    Вестники:
    Пожалуйста, не стесняйтесь обращаться к нам, мы будем рады ответить!





      Этот сайт защищен reCAPTCHA и Google Персональные данные и Условия Предоставления Услуг подать заявление.
      перейти к содержанию