The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

23.11.2017 10:19  77% из 433 тысяч изученных сайтов используют уязвимые версии JavaScript-библиотек

Изучив 433 тысячи сайтов, информация о которых собрана в рамках проекта HTTP Archive и доступа для анализа при помощи интерфейса BigQuery, исследователи обнаружили, что 77% из изученных сайтов используют как минимум одну JavaScript-библиотеку, содержащую известные уязвимости. 51.8% из этих сайтов содержат более одной уязвимости в библиотеках, а 9.2% более трёх уязвимостей.

Наиболее часто встречаются уязвимые копии библиотеки jQuery, которая используется на 82.4% из всех проверенных сайтов. 92.5% из сайтов, использующих jQuery, содержат необновлённые уязвимые версии. На втором месте библиотека jQuery UI, которая применяется на 19.9% сайтов и 89.7% из используемых копий уязвимы. Далее следуют Moment.js - 73.0% уязвимых версий из всех установок данной библиотеки, AngularJS - 84.8%, Handlebars - 60.7%, Mustache - 51.0%, YUI 3 - 40.3%, Knockout - 19.6%, React - 10.2%.

Обновление информации о состоянии сайтов в HTTP Archive произведено 15 октября, т.е. использованы не архивные, а актуальные данные. Данные в целом совпадают с результатами похожей проверки 323 тысяч сайтов, проведённой в марте, которая показала, что уязвимые библиотеки используются на 77.3% сайтов. При этом уязвимости в JavaScript-библиотеках в основном связаны с межсайтовым скриптингом (XSS, Cross-site Scripting) и подстановкой контента, например, могут быть использованы для определения содержимого Cookie при открытии пользователем специально оформленной ссылки.

Также можно отметить публикацию проектом OWASP (Open Web Application Security Project) очередного отчёта, в котором предпринята попытка классифицировать связанные с безопасностью риски в web-приложениях и предложить рейтинг актуальных и наиболее распространённых проблем.

Как и в прошлом выпуске рейтинга, который был сформирован в 2013 году, первое место занимают уязвимости, при которых непроверенные данные оказываются в составе исполняемых команд или запросов (SQL, NoSQL, OS, LDAP Injection). Второе место как и прежде занимают уязвимости, связанные с некорректной работой механизмов аутентификации и проверки идентификаторов сеансов, что позволяет получить неавторизированный доступ. Занимавшие третье место в прошлом рейтинге проблемы межсайтового скриптинга (XSS) переместились на 7 место.

C шестого на третье место поднялись проблемы, приводящие к утечкам конфиденциальных данных, таких как сведения о финансовых операциях и персональные данные пользователей. Четвёртое место заняла новая категория уязвимостей, связанных с некорректной обработкой внешних ссылок в XML-документах (атака XXE). На пятом месте закрепились проблемы в обработчиках списков доступа, позволяющие выполнить операции не предусмотренные текущими полномочиями. На шестом месте проблемы, вызванные ошибками в конфигурации и выводом сведений о настройках в тексте сообщений об ошибках.

Восьмое место заняли уязвимости, вызванные ошибками в коде десериализации данных, которых в последние годы было особенно много в проектах на PHP и Java. Девятое место в рейтинге рисков безопасности для web-приложений занимают проблемы, связанные с использованием в проекте сторонних библиотек, фреймворков и прочих компонентов, в которых имеются неисправленные уязвимости (в качестве примеров упоминается продолжение использования уязвимой версии Apache Struts после выхода обновления, что привело к утечке персональных данных 44% населения США). На десятом месте находятся проблемы с ведением логов и организацией мониторинга, из-за которых факты или попытки компрометации системы могут длительное время оставаться незамеченными.

В отчёте также отмечены новые риски, возникающие в связи с изменениями в архитектуре web-приложений. Например, распространением Node.js и серверного кода на JavaScript повышает риск появления проблем, связанных с десериализацией данных. Организация работы приложений в форме микросервисов часто приводит к появлению скрытых проблем из-за создания API и RESTful-обработчиков на основе переноса старого кода, не рассчитанного на прямую обработку внешних запросов (например, могут быть пропущены проверки корректности поступающих данных). Источником новых векторов атак также могут стать одностраничные приложения, создаваемые при помощи фреймворков Angular и React, в которых функциональность по формированию интерфейса вынесена на сторону клиента.



  1. Главная ссылка к новости (https://snyk.io/blog/77-percen...)
  2. OpenNews: 63% web-сайтов содержат опасные уязвимости
  3. OpenNews: Статистика уязвимостей web-приложений
  4. OpenNews: Анализ уязвимостей за 6 месяцев. Firefox обогнал конкурентов по числу уязвимостей
  5. OpenNews: Сравнения языков программирования с позиции безопасности написанного на них кода
  6. OpenNews: Рейтинг 25 самых опасных ошибок, приводящих к возникновению серьезных уязвимостей
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: web, security
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аномномномнимус (?), 13:09, 23/11/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +37 +/
    Потому что в вебе всё работает на "хоть бы прокатило" и если там хоть что-то обновить - всё развалится, ведь все эти хипстерские фреймворки забили на обратную совместимость.
    И это пошло ещё дальше, во всякие руби на рельсах с их виртуальным окружением "работаем только с этой версией", в питон с его virtualenv с единственным правильным набором либ и версией питона.
    И пока люди будут считать что virtualenv это фича, а не косяк от безвыходности, всё так и будет оставаться дырявым и устаревшим с момента создания (т.к. либы копируются с другого проекта, где всё-кое как работало)
     
     
  • 2.3, нах (?), 13:11, 23/11/2017 [^] [ответить]    [к модератору]
  • +2 +/
    > Потому что в вебе всё работает на "хоть бы прокатило"

    почему это именно "в вебе"?

     
     
  • 3.5, Аномномномнимус (?), 13:32, 23/11/2017 [^] [ответить]     [к модератору]
  • +3 +/
    Потому что в вебе если что-то сломалось, народ узнаёт об этом в последнюю очеред... весь текст скрыт [показать]
     
     
  • 4.12, Аноним (-), 14:13, 23/11/2017 [^] [ответить]     [к модератору]  
  • –8 +/
    Нет совместимости, переходите на новую версию, это и есть прогресс Если бы в жи... весь текст скрыт [показать]
     
     
  • 5.17, Аномномномнимус (?), 15:52, 23/11/2017 [^] [ответить]     [к модератору]  
  • +5 +/
    Ок, давай перенесём твой посыл в любимую тобой терминологию колёс Были колёса 2... весь текст скрыт [показать]
     
  • 5.20, Аноним84701 (ok), 16:11, 23/11/2017 [^] [ответить]    [к модератору]  
  • +6 +/
    > Нет совместимости, переходите на новую версию, это и есть прогресс. Если бы
    > в жизни все было иначе, то и колеса бы наверное не было.

    Если бы в жизни было все как в вебе, то каждый месяц очередная версия колеса объявлялась бы устаревшей и немолодежной  и всем настоятельно советывали бы переходить на новую, квадратную/овальную/шести-восьми-угольную/(нужное подчеркнуть-придумать).
    Потому что верх прочности, надежности (жесткий угол и постепенно увеличиваемое минимальное для транспортного средства количество колес!), а чтобы не трясло, нужно всего-то сделать специальный выемки-ямочки на дорогах и покрыть их (дороги) резиной!
    При этом, после каждого обновления дорог, оказывалось бы, что ездить на колесах предыдущих версий почти невозможно, за исключением разве что классического "круглого" -- но этих пользователей высмеивали бы все кому не лень, обзывая луддитами и отказываясь воспринимать всерьез.

     
     
  • 6.21, Аноним (-), 16:52, 23/11/2017 [^] [ответить]    [к модератору]  
  • –5 +/
    а что в linux kernel не так?
     
     
  • 7.31, angra (ok), 22:17, 23/11/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Нет. Если продолжить аналогию с колесами, то в колесе могут произойти внутренние изменения, например другой рисунок или состав резины, но новое колесо по прежнему можно поставить на старое авто.
     
  • 7.33, gaga (ok), 22:35, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Так, но темп не тот и есть более-менее "железная рука" (Линус, редхат, интересы Ынтерпрайза и т.д.) которые поддерживают относительный порядок в генеральной линии.
     
  • 7.34, gaga (ok), 22:35, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Так, но темп не тот и есть более-менее "железная рука" (Линус, редхат, интересы Ынтерпрайза и т.д.) которые поддерживают относительный порядок в генеральной линии.
     
  • 7.39, Аноним (-), 07:00, 24/11/2017 [^] [ответить]     [к модератору]  
  • +/
    Ну, блин, поменять ядро 3 15 на 4 14 я могу И даже ничего не сломается А если ... весь текст скрыт [показать]
     
     
  • 8.56, Аноним (-), 12:55, 25/11/2017 [^] [ответить]     [к модератору]  
  • +/
    это потому, что на самом деле оно не 4 14 , а 2 7 4 14 ну, ок, может 2 8 А пр... весь текст скрыт [показать]
     
  • 4.16, ввв (?), 15:45, 23/11/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Ты за обновление и поддрержку всех этих тыщ сайтов готов заплатить? Нет?
    Опычно платят 10 тыщ за "сайт", а дальше отвалите.
     
     
  • 5.18, Аномномномнимус (?), 15:53, 23/11/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Видимо поэтому вебдевелоперам меньше платят, т.к. поддерживать всё равно не смогут, проще новых потом нанять
     
     
  • 6.40, Аноним (-), 07:03, 24/11/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Да просто на одеске и проч уже полно индусов, готовых делать все и вся за 10 бак... весь текст скрыт [показать]
     
     
  • 7.53, user455 (?), 21:03, 24/11/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    во-первых одеска давно нет во-вторых индусы, которые делают за_бись и просят за... весь текст скрыт [показать]
     
  • 5.19, Аноним (-), 15:55, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    > Опычно платят 10 тыщ за "сайт"

    Розовые мечты вэбмакаки.

     
  • 2.4, Аноним (-), 13:26, 23/11/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    > И это пошло ещё дальше, во всякие руби на рельсах

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

     
  • 2.29, dep (?), 21:31, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Причем тут виртуаленв? Просто на поддержке сайта должны работать инженеры, которые должны работать над обновлениями версий. Не стоить кого-то винить, если заказчик жлоб и всех уволил после релиза.
     
  • 2.47, Аноним (-), 11:59, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Если бы строители строили дома также как программисты пишут
    программы, то первый залетевший дятел разрушил бы цивилизацию!!!
     
  • 1.2, бивис (?), 13:11, 23/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    хмг, узнал что существует каталог методов атаки на уязвимости, который называется КАПЕЦ (CAPEC)
     
  • 1.6, mickvav (?), 13:33, 23/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +6 +/
    Гхм, большинство уязвимостей в jQuery - это когда пользователю дают возможность запихать от имени сервера какую-нибудь бяку в вызовы самого jQuery (происходящие от имени другого пользователя). То есть уязвим не сам jQuery как таковой, а приложение, которое его криво использует. А версии в которых такие "уязвимости" устранены - это когда авторы jQuery подложили соломки таким горе-разработчикам в конкретном месте.

    Но тут есть два момента -

    1) Если люди не следят за содержимым переменных в jQuery, они и во всех остальных местах не следят, значит после обновления jQuery уязвимости скорее всего еще останутся.
    2) Написать универсальный эксплоит под это дело крайне сложно - нужно в каждом сайте искать XSS, заточенный под эту дырку. И его может не найтись.

    Так что ценность результатов этого исследования, мягко говоря, сомнительная - из попадания сайта в список не следует наличия уязвимости в сайте.

     
     
  • 2.13, нах (?), 14:37, 23/11/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    если ты уже нашел xss, тебе не должно быть очень важно, уязвима ли та версия jqu... весь текст скрыт [показать]
     
  • 1.7, тоже Аноним (ok), 13:40, 23/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Признаться, был уверен, что во фронтенде может быть только одна уязвимость.
    А именно - доверие к нему со стороны бэкенда.
    Но вроде бы любой грамотный разработчик в курсе, что на бэк извне могут прийти какие угодно данные, а данные, полученные по запросу, может прочесть кто угодно...
     
     
  • 2.15, Аноним84701 (ok), 15:41, 23/11/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Тем не менее, частенько все получается как с коммунальными службами и ежегодным,... весь текст скрыт [показать]
     
  • 2.22, Stop (?), 16:59, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    А слить твои данные на сторону заходя на сервер это не уже не уязвимость? It's school time...
     
     
  • 3.24, тоже Аноним (ok), 18:24, 23/11/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Понимаю, растопыренными пальчиками писать неудобно.
    Но я предпочел бы увидеть описание конкретного примера, а не напоминание о вашей занятости.
     
     
  • 4.32, angra (ok), 22:31, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Ну ты же большой мальчик, возьми и загугли XSS и CSRF или просто пройди по ссылкам на википедию в новости.
     
     
  • 5.42, тоже Аноним (ok), 08:11, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Я, видимо, недостаточно большой мальчик, чтобы нагуглить, как можно защититься от того и другого обновлением jQuery. Просветите, отцы и старцы!..
     
  • 2.37, Аноним (-), 05:48, 24/11/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Аналогично.
    Всегда можно поправить так, чтобы конкретно у тебя загрузилась модифицированная версия джиКуери.
    Так такое можно назвать уязвимостью? Непонятно.
     
  • 1.9, Аноним (-), 13:52, 23/11/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • +3 +/
    Странно, что только 77 , если учитывать, как делается большинство сайтов - орган... весь текст скрыт [показать]
     
     
  • 2.11, 0x0 (?), 14:11, 23/11/2017 [^] [ответить]    [к модератору]  
  • –4 +/
    А в нашу эпоху главное, что? Чтобы все участвующие чего-нибудь поимели (не исключая друг-друга))

    Так вот и получается вечный куй джалізо ‒ пока горячо! :)

     
  • 2.26, Ордоним (?), 21:11, 23/11/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Сколько заплатили, столько и получили. Пилить крутой и правильный продакшон оно, конечно, круто, но кто ж за него заплатит?
     
     
  • 3.27, ДевопсЛокалхостаКубернетыОпенстеки (?), 21:18, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Кто ж вас научит делать правильный прод? опять все построите на костылях и синей изоленте, неудачники.
     
     
  • 4.28, Аноним (-), 21:26, 23/11/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Да разрабы есть, но вот аналитиков нанимать не принято, между бизнесом и технарями плохая согласованность. Поэтому из гна и веток
     
  • 1.10, Аноним (-), 14:06, 23/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    уязвимые версии еще ладно ,вы лучше вспомнити как отвалилась полинтернета после npm leftpad
     
     
  • 2.30, animonous (?), 22:16, 23/11/2017 [^] [ответить]    [к модератору]  
  • +/
    Бесконтрольный апдейт с хипстерских реп - вообще зло и ц.
     
  • 2.38, Аноним (-), 05:49, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    > уязвимые версии еще ладно ,вы лучше вспомнити как отвалилась полинтернета после npm
    > leftpad

    С вами забудеш

     
  • 1.35, Аноним (-), 22:41, 23/11/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • +3 +/
    Потому что, как написано в статье http www opennet ru opennews art shtml num 4... весь текст скрыт [показать]
     
  • 1.36, Аноним (-), 02:28, 24/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Вот чёт реально не понял.. в js можно наклеить уязвимостей?? Где можно почитать подробней?
     
  • 1.41, EuPhobos (ok), 07:37, 24/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Что значит "уязвимые JS-библиотеки"??
    Если смогли что-то написать на JS, что ставит под сомнение безопасность, то значит сам JS уязвим, а не библиотеки, которые написанные на том же JS.
    Бред какой-то получается.
    Это как если преступник возьмёт 6-ти патронный револьвер, выстрелит из него в человека 6 раз, и попадёт только 1, а криминалисты приехав на место скажут "Хмм, тут револьвер, но он не важен, самое интересное, что в нём всё таки была одна летальная пуля, именно если бы не конкретно эта самая пуля, именно она виновата" и начнут искать кто изготовил именно эту пулю ...
     
  • 1.43, Аноним (-), 10:14, 24/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Объясните чем страшна уязвимость в клинтской библиотеке? Она же все одно на клиенте выполняется и на сервер никак не влияет?
     
     
  • 2.44, Аноним (-), 10:38, 24/11/2017 [^] [ответить]     [к модератору]  
  • +/
    Например, можно выполнить от имени пользователя действия, которые он не собиралс... весь текст скрыт [показать]
     
     
  • 3.46, тоже Аноним (ok), 11:28, 24/11/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Джентльмены, давайте не витать в теориях.
    Предположим, что здесь, на Опеннете, используется древняя библиотека - тот же jQuery.
    Каким образом это поможет абстрактному хакеру, например, отправить здесь пост от имени конкретного меня?
    Не небрежный бэкенд, не левые рекламные сети с неизвестно какими скриптами, а именно древний jQuery?
     
     
  • 4.50, ойой (?), 16:13, 24/11/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    >Предположим, что здесь, на Опеннете, используется древняя библиотека - тот же jQuery.
    >Каким образом это поможет абстрактному хакеру, например, отправить здесь пост от имени конкретного меня?
    >

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

     
     
  • 5.51, ойой (?), 16:14, 24/11/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Прошу прощения, кнопка выглядит как "[показать]", а не "развернуть"
     
  • 5.52, тоже Аноним (ok), 17:08, 24/11/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Какой же дурак делает экранирование - на клиенте?
    То есть первый же бот, посылающий ответ без всякого браузера, сделает то же самое, как бы вы ни обновляли библиотеки?!
    Ровно про это я выше и говорил - это не уязвимость фронтенда, это глупость программиста, который доверяет данным, пришедшим с фронтенда.
     
     
  • 6.54, angra (ok), 00:33, 25/11/2017 [^] [ответить]    [к модератору]  
  • +/
    > Какой же дурак делает экранирование - на клиенте?

    API, REST? Нет, не слышал.

    > То есть первый же бот, посылающий ответ без всякого браузера, сделает то же самое, как бы вы ни обновляли библиотеки?!

    Задаю наводящий вопрос: "И от чьего же имени сможет написать бот?".

    > это глупость программиста, который доверяет данным, пришедшим с фронтенда.

    Мысль о том, что и бекенду тоже не надо доверять, в голову никогда не заглядывала?

     
     
  • 7.55, тоже Аноним (ok), 12:14, 25/11/2017 [^] [ответить]    [к модератору]  
  • +/
    И какое сколь угодно RESTFUL API требует от вас, приняв произвольный комментарий от пользователя, сохранять его в неприкосновенности, надеясь на то, что при выводе его что-то на клиенте проэкранирует? А если, не дай бог, админка наваяна на коленке и в ней забудут проэкранировать тот же комментарий и аккуратно выведут его администратору - этот дятел таки порушит всю вашу цивилизацию?
     
     
  • 8.60, Аноним (-), 09:02, 26/11/2017 [^] [ответить]     [к модератору]  
  • +/
    Если у апологетов уязвимостей в на фронтенде закончились аргументы, то даже не с... весь текст скрыт [показать]
     
  • 3.48, anonymous (??), 13:50, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    но ведь для этого нужно как то войти в клиента? как это сделать если в код на сервере ничего нового добавить не получиться?
     
  • 2.45, Аноним (-), 10:46, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    А на клиенте что, воровать нечего? Явки/пароли, например. С которыми уже идти на сервер.
     
     
  • 3.49, anonymous (??), 13:56, 24/11/2017 [^] [ответить]    [к модератору]  
  • +/
    как зайти на клиента если ничего нового в том что лежит на сервере не добавить?
     
  • 1.57, Аноним (-), 15:46, 25/11/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Меня одного шокирует сложившая сегодня ситуация, что недостаточно образованные в... весь текст скрыт [показать]
     
  • 1.59, Аноним (-), 08:47, 26/11/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Я, как и многие тут, не понимаю про опасность уязвимостей фронтенд библиотеках ... весь текст скрыт [показать]
     
     
  • 2.62, Аноним (-), 20:22, 26/11/2017 [^] [ответить]     [к модератору]  
  • +/
    Атака на фронтэнд, это не атака на сервер инфраструктуру проекта, а атака на пол... весь текст скрыт [показать]
     
     
  • 3.63, Аноним (-), 21:03, 26/11/2017 [^] [ответить]     [к модератору]  
  • +/
    Но ведь XSS всегда экранируется на сервере Не придет ничего клиенту Хорошо, до... весь текст скрыт [показать]
     
  • 1.61, qwerty_qwerty1 (?), 13:32, 26/11/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Дело не вот что программисты не хотят переходить на новые версии.
    А дело в том что для перехода на новую версию надо переписать сайт целиком.
      
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor