Уязвимости вашего приложения

Автор: admin от 21-02-2018, 16:30, посмотрело: 116

Актуальны ли ещё угрозы XSS? Прошло около 20 лет с тех пор, как Cross Site Scripting (XSS) появился как вид атаки. С тех пор мы получили богатый опыт и знания, защита наших сайтов стала намного сложнее, а многочисленные фреймворки были призваны оберегать нас от ошибок. Но последние данные показывают совсем другую картину: в первых кварталах 2017 года количество сообщений об XSS-атаках и количество найденных уязвимостей выросло в несколько раз.



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



Прототипом статьи является доклад на конференции HolyJS 2017 Moscow. Алексей — фронтенд-тимлид/архитектор в компании EPAM Systems и один из лидеров сообщества FrontSpot в Минске. Основные области профессиональных интересов: архитектура и инфраструктура приложений, управление разработкой.



В этом тексте огромное количество картинок со слайдов. Осторожно, трафик!


holyjs-moscow.ru, сайт, на котором, в принципе, нет ни одного инпута, там нечему ломаться. Но вот есть несколько рекомендаций, что пропущены некоторые хедеры для старых браузеров. То есть если я как-то встроюсь между доменом и этим сайтом, я могу этим воспользоваться для майнинга, почему бы нет.



Уязвимости вашего приложения



Следующий тул — Arachni, работает он по схожему принципу. Из Jenkins мы должны сослаться и отдать URL нашей задеплоенной тестовой среды этому Arachni. У Arachni отличный CLI, и он занимается тем же самым, начинает играться с нашим приложением и формирует нам отчеты. Использовать удобнее, весит меньше и внедрять довольно просто. Дополнительно нам понадобятся: Text Finder Plugin для того, чтобы проанализировать результат отчета, пометить build как failed или success, и еще один плагин для анализа в долгосрочном периоде.



Но это всё динамическая проверка. Мы написали код, задеплоили, там проверили, но нам надо как-то понимать, что мы пишем уже что-то не то, то есть мы должны включить какой-то тул для статического анализа. Если мы начнем гуглить, в первых рядах появятся Checkmarx, Veracode, SonarQube в каком-то режиме — дорогие тулы, для энтерпрайза даже дорого, по-моему. Мы живем уже почти в 2018 году, на javascript уже мало кто пишет, мы пишем на ECMAScript, мы пишем на TypeScript, мы пишем на JSX, кто-то еще на чем-то пишет. Умеют ли это всё анализировать эти анализаторы? Нет. Стоят дорого, не умеют ничего. А есть ESLint – бесплатное решение для вашего кода. Подключаем Security плагин, добавляем ваш код, работаем. Он нисколько не стоит и в CI встраивается элементарно.



Хорошо, что еще можно проверить? Мы проверили динамически наши приложения, мы проверили статически наш код во время написания, а что с node-модулями? Один из популярных тулов — это Node Security Platform, устанавливается из npm очень просто (npm install nsp) с помощью команды npm check – запускается. Есть там уязвимости нет, пробегает по зависимостям, формирует вам отчёт. Работает классно, нисколько не стоит. Как вы понимаете, в CI это встроить очень просто. Работает он интересным образом — анализирует пакеты, которые есть в package.json, и проверяет по базе данных, есть ли уязвимость в этой версии и так далее, ведет зависимости, формирует вам отчет. Работает классно, опенсорс проект, тоже нисколько не стоит, но я бы вам еще посоветовал посмотреть на Snyk, работает абсолютно по такому же принципу. Устанавливаете с npm, запускаете, он пробегает по package.json, ищет уязвимости и на удивление находит их больше. Не знаю, может быть у них разные базы данных. Snyk появился позже, но маркетологи работают намного лучше. Сейчас он тестируется в Lighthouse, вы можете зайти в Canary, он там уже встроен. Вы можете посмотреть, какие уязвимости есть в ваших приложениях, прямо в dev tool, но мы используем очень часто код, который обфусцирован, разобраться, какие там есть зависимости, практически невозможно, только в старых приложениях, поэтому стоит относиться с долей иронии к этой ставке. В Snyk уже встроен GitHub, прямо сейчас вы можете зайти в Dependency graph любого приложения и увидеть зависимости, уязвимости и посмотреть, стоит ли вообще это использовать. Это работает уже прямо сейчас на всех репозиториях.



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



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



Смотрите за своими node_modules, вы сами приглашаете их в свое приложение, поэтому будьте разборчивы в этих гостях. Обязательно используйте Content-Security-Policy, а также тулы для динамического и статического анализа (ESLint).



Уязвимости вашего приложения



Минутка рекламы. Как вы, наверное, знаете, мы делаем конференции. Ближайшая конференция про javascript — HolyJS 2018 Piter, которая пройдет 17-18 мая 2018 года. Можно туда прийти, послушать доклады (какие доклады там бывают — вы уже увидели в этой статье), вживую пообщаться с практикующими экспертами-джаваскриптерами, практиками и изобретателями разных моднейших технологий. Короче, заходите, мы вас ждём. Билеты можно достать на официальном сайте.


Источник: Хабрахабр

Категория: Программирование » Game Development

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *