Может ли моя система заразиться чем-то, посетив веб-сайт с помощью phantomJS? Я не знаю/доверяю веб-сайту, который я посещаю. И если да, то как предотвратить это/избежать ущерба?Может ли моя система заразиться, посетив неизвестный/ненадежный веб-сайт через PhantomJS?
ответ
Это не технически невозможно.
PhantomJS использует WebKit в качестве своего браузера (как и Safari и многие другие браузеры, включая более ранние версии Chrome), и его можно скомпилировать с любой версией WebKit. Это означает, что WebKit используется для синтаксического анализа и внутренней рендеринга веб-страницы.
Если версия WebKit, используемая вашей версией PhantomJS, уязвима, так будет PhantomJS. Если в WebKit есть что-то вроде переполнения буфера или аналогичного удаленного выполнения кода, возможно, он также может быть использован в PhantomJS, что может привести к тому, что вредоносный веб-сайт сможет запускать код на вашем компьютере. Эти типы недостатков (с серьезностью, сходными с эксплуатационным удаленным выполнением кода) не очень часты, но иногда случаются. Обратите внимание, что все другие уязвимости с низким уровнем риска WebKit также влияют на любую версию PhantomJS, которая скомпилирована с уязвимой версией WebKit. Что делает это более актуальным, так это то, что WebKit используется многими проектами, поэтому поиск и использование уязвимостей WebKit может оказаться полезным для злоумышленника.
Сам PhantomJS также может быть уязвим, но реальная опасная вещь заключается в анализе кода, написанного кем-то другим при посещении веб-сайта, и это делается с помощью WebKit. Использование ошибок в другом поддерживающем коде в PhantomJS через посещаемый веб-сайт, я думаю, будет более сложным. Не сказать, что это невозможно, но вероятность, я думаю, будет низкой.
Что касается того, как предотвратить это ... Самое главное - использовать версию PhantomJS, которая скомпилирована против очень новой версии WebKit. Если неизвестная уязвимость ни для версии WebKit, ни для версии PhantomJS, вам хорошо идти (но всегда может быть нулевой день, конечно).
Если вы действительно обеспокоены, вы можете запустить PhantomJS в изоляции. Вы можете настроить что-то похожее на chrooted среду или целую выделенную виртуальную машину. В последнем случае злоумышленник должен был бы скомпрометировать гипервизор в совершенно отдельной атаке, что, вероятно, не невозможно, но может быть трудным и сильно отличается от любого изъяна, используемого в PhantomJS.
Конечно, это также зависит от того, что вы хотите защитить от. Если вас беспокоит компрометация клиента, работающего с PhantomJS, запуск его по отдельности может быть адекватным для вашего сценария. Если PhantomJS является частью более крупного приложения, и вы обеспокоены тем, что злоумышленник может получить доступ к данным в этом конкретном приложении, вы, очевидно, не можете запускать PhantomJS отдельно от реального приложения с данными, поэтому VM тогда не поможет.
Таким образом, нижняя строка, да, это может произойти, но это маловероятно, и какие контрмеры вам нужны, зависит от нескольких вещей, включая риск (что вы можете потерять) и вашу модель угрозы (что вы хотите для защиты).
- 1. phantomjs: неизвестная модульная система
- 2. Как моя система может быть более интерактивной?
- 3. DFS: путать, посещая, посетив и не посетив
- 4. Определите, завершен ли вебсайт send()
- 5. Моя система управления контентом
- 6. Может ли phantomjs читать файлы cookie через javascript?
- 7. Работает ли моя система входа в систему?
- 8. Поддерживает ли моя система монотонные часы?
- 9. /proc файловая система зависает моя система
- 10. Как мне заразиться «TDD»?
- 11. Могу ли я получить вирус, посетив неизвестный веб-сайт, используя пакет запросов python?
- 12. Может ли PhantomJS работать с WebWorkers?
- 13. Общие указатели объектов, построенные Фабрикой, которая может заразиться
- 14. Как моя программа может определить, был ли запущен через mpirun
- 15. Моя система аутентификации возвращает неопределенное
- 16. Может ли phantomjs работать с node.js?
- 17. RubyGems - моя система не может найти удаленных камней для установки
- 18. Почему моя система не может найти мой файл свойств?
- 19. Моя система входа не работает
- 20. Может ли ветвь предсказания разбиться моя программа?
- 21. не может открыть файлы javascript с помощью phantomjs через bash
- 22. Получение уведомления, когда моя система зависает
- 23. Карма не может захватить PhantomJS
- 24. Может ли эта система сборки ускориться?
- 25. Может ли система сборки контролировать версию?
- 26. Может ли локальная система коммутатора UFT/QTP?
- 27. Может ли Git использоваться как система утверждения?
- 28. Почему моя плагиновая система PHP не работает?
- 29. Как узнать, была ли скомпрометирована моя почтовая система?
- 30. Является ли моя система «Запомнить меня» безопасной или практичной?
Спасибо! Мне нужно сканировать 100 тыс. Случайных (= ненадежных и, вероятно, вредоносных) веб-сайтов и сохранять информацию о них в базе данных. Машина, на которой он будет работать, будет содержать учетные данные для других материалов, а база данных также будет иметь важные вещи. Поэтому я не хотел, чтобы у кого-то был доступ к этой базе данных/файловой системе. – userqwerty1
Я не уверен, как защитить эту настройку, я попытаюсь использовать что-то вроде доспехов приложений и т. Д., И записать данные на диск, а затем получить с другим скриптом в базу данных. – userqwerty1
AppArmor - это хорошо, это именно то, что я подразумевал под чем-то похожим на chroot. Со строгими правилами, которые определенно помогают.Обязательно назначьте наименьшие привилегии для каждого компонента в вашей настройке, например, PhantomJS должен иметь возможность писать несколько файлов или одну таблицу базы данных, и, возможно, только нужно прочитать несколько библиотек. Тогда любой компонент, который дополнительно анализирует данные, может проверить его ввод (который является выходом PhantomJS). Я считаю, что использование AppArmor со строгими правилами для компонента PhantomJS значительно снижает риск. –