Является ли загрязнение прототипа hoek уязвимым для противопожарной упаковки? - PullRequest
0 голосов
/ 28 мая 2018

Это относится к уязвимости безопасности прототипа загрязнения в пакетах npm 'hoek', которая является зависимой от firebase@3.xx

Version dependency of firebase on hoek

Hackone Url: https://hackerone.com/reports/310439

Snyk Url: https://snyk.io/test/npm/firebase/3.9.0?severity=high&severity=medium&severity=low

Хотя команда Firebase исправила это в этом pr: https://github.com/firebase/firebase-js-sdk/issues/515 в пакете firebase@4.xx

Я хочу понять, действительно ли это угроза безопасности для firebase, , потому что люди, зависящие от firebase@3.xx, не могут напрямую просто перейти на @ 4.xx, поскольку это серьезное изменение, особенно еслиони используют angularfire@2.xx, который не поддерживает firebase @ 4.Открытый вопрос: https://github.com/firebase/angularfire/issues/934

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

Это показывает, что злоумышленник может добавить атрибуты ко всем существующим объектам на сервере.,Дополнительный атрибут можно использовать для изменения потока кода выполнения или возникновения ошибки при каждом последующем запросе, заменив «toString» или «valueOf».

Эта уязвимость гарантированно по крайней мере получит отказ в обслуживании, поскольку все библиотеки позволяютсвойства "toString" и "valueOf" должны быть заменены на "String".Это нарушает работу экспресс-модуля и вынуждает сервер либо аварийно завершать работу, либо возвращать 500 для каждого последующего запроса.

Для создания удаленного выполнения кода можно создать более сложные полезные данные (см. PoC в # 309391).

Прочитав это, я понимаю, что приложение, напрямую или косвенно потребляющее пакет hoek, уязвимо, только если оно запущено на сервере.

Так как приложение, использующее angularfire@2.xx, использует firebase @ 3.хх обслуживается только клиенту и не запускается на сервере.

Это все еще уязвимо?

1 Ответ

0 голосов
/ 01 мая 2019

Обновление !!

Я только что опубликовал пакет npm, чтобы исправить проблему загрязнения прототипа для людей, которые не могут выполнить обновление до исправленной версии уязвимого пакета.Вы можете установить следующий пакет :

yarn add no-pollution

и просто require в точке входа вашего проекта javascript.

require('no-pollution');

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

Старый ответ

Это правда, что уязвимость, связанная с загрязнением прототипаимеет более серьезный риск на стороне сервера, чем на стороне клиента.Поскольку его можно легко использовать для атаки типа «отказ в обслуживании» (DoS) или атаки на удаленное выполнение кода (RCE).

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

Это приводит к серьезной уязвимости в вашем приложении, которая также позволяет злоумышленнику выполнять как DoS, так и RCE, но это ограничено уровнем сложности и уровнем ресурсов, к которым клиент может получить доступ.Но это не меняет того факта, что ваше приложение имеет уязвимость, которую можно использовать для нанесения серьезного ущерба.Подробнее об этом читайте на Snyk

Переписывание всей базы кода для firebase 4 может быть трудным и длительным процессом, но это то, что вам придется сделать в конце концов, если только не решите, что такое angular fireпредложить поддержку Firebase 4 ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...