The OpenNET Project / Index page

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

17.02.2017 22:11  Новая техника обхода защиты ASLR, реализуемая на JavaScript

Группа исследователей из Амстердамского свободного университета разработала (pdf 1, pdf 2) новую технику обхода механизма защиты ASLR (Address space layout randomization), позволяющую определить раскладку памяти процесса. Особенностью предложенного метода является то, что он может быть реализован на языке JavaScript, что значительно упрощает обход дополнительных уровней защиты при эксплуатации уязвимостей в web-браузерах.

По заявлению исследователей предложенный метод универсален и надёжно работает в Chrome и Firefox как минимум на 22 микроархитектурах, включая процессоры Intel Xeon, Atom, Core, Celeron (CVE-2017-5925), AMD (CVE-2017-5926), Allwinner, Samsung Exynos, NVIDIA Tegra (CVE-2017-5927 для ARM) и др. Если в обычных условиях для успешной эксплуатации новой уязвимости в Firefox требуется наличие ещё одной уязвимости, которая позволит получить сведения о ASLR-смещениях в адресном пространстве процесса, то предложенная техника позволяет выявить эти смещения путём выполнения скрипта на языке JavaScript.

Метод является разновидностью атак по сторонним каналам (side-channel attacks) и основан на косвенном определении адресов к которым ранее были обращения при обходе таблиц страниц памяти процессорным блоком MMU (Memory Management Unit) в ходе трансляции адресов виртуальной памяти в адреса физической памяти. Так как кэш CPU общий и в нём отражается как активность приложения, так и активность блока MMU, то путём оценки различий во времени доступа к данным до и после сброса кэша (разновидность атаки "EVICT+TIME") можно с высокой вероятностью подобрать адрес, по которому было обращение.

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

На GitHub размещена эталонная реализация метода на языке Си. Вариант на JavaScript не опубликован с целью предотвращения появления вредоносной активности до обеспечения защиты в браузерах. Обходным путём защиты в браузерах может стать урезание доступа к высокоточному таймеру. В качестве противодействия некоторым видам атак производители браузеров ранее уже ограничили точность вызова performance.now(), но авторы исследования обошли данное ограничение через использование двух таймеров в разных потоках, совокупной точности которых оказалось достаточно.

Для полноценной защиты производителям браузеров рекомендовано переработать метод хранения JavaScript-объектов в памяти, исключив их последовательное размещение в виртуальной памяти при генерации кода JIT-компилятором. В качестве временной меры рекомендовано внести незначительные случайные смещения в работу каждого экземпляра высокоточного таймера и прекратить совместное использование значений таймера в разных потоках JavaScript. Разработчикам ОС для повышения стойкости ASLR к атаке рекомендовано увеличить уровень энтропии ASLR с 24-28 бит до 35 бит.



  1. Главная ссылка к новости (https://arstechnica.com/securi...)
  2. OpenNews: Проект grsecurity опубликовал реализацию механизма защиты RAP для ядра Linux
  3. OpenNews: Выявлен метод обхода защиты ASLR на процессорах Intel
  4. OpenNews: Атака через JavaScript по определению содержимого L3-кэша CPU
  5. OpenNews: Разработан метод атаки на уязвимость в DRAM-памяти с использованием JavaScript
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: aslr, security, javascript
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, LinuxID (ok), 22:36, 17/02/2017 [ответить] [показать ветку] [···]    [к модератору]
  • –2 +/
    И чем это грозит?
     
     
  • 2.2, Аноним (-), 22:40, 17/02/2017 [^] [ответить]    [к модератору]
  • +2 +/
    https://ru.wikipedia.org/wiki/ASLR
     
  • 2.3, Аноним (-), 23:13, 17/02/2017 [^] [ответить]    [к модератору]
  • +/
    Грозит большими проблемами с безопасностью из-за качества кода. Если рандомизации адресов не будет, открывается отлдскульный полигон для не менее олдскульных эксплоитов.
     
  • 2.10, Crazy Alex (ok), 00:09, 18/02/2017 [^] [ответить]    [к модератору]
  • +/
    Если нет дыр - ничем
     
     
  • 3.19, Аноним (-), 07:41, 18/02/2017 [^] [ответить]    [к модератору]
  • +1 +/
    >нет дыр
    >делает вид, что программист

    Ясно.

     
     
  • 4.42, Crazy Alex (ok), 15:09, 19/02/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    Вот как раз программисту понятно, что если в системе создавать дыры вроде браузе... весь текст скрыт [показать]
     
  • 2.44, Аноним (-), 07:01, 20/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Дает возможность использовать другие дыры
     
  • 1.4, An (??), 23:32, 17/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ну дела
     
  • 1.5, Аноним (-), 23:35, 17/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –13 +/
    я же говорил яваскрипт не нужен вспомнити npm left pad. А еще вспомнити 0.1 + 0.2 = .300000000000004 а еще вспомнити Nan =! Nan
     
     
  • 2.16, анон (?), 03:28, 18/02/2017 [^] [ответить]    [к модератору]  
  • +8 +/
    > А еще вспомнити 0.1 + 0.2 = .300000000000004

    Так и запишем, что анон не в курсе про IEEE 754

     
     
  • 3.28, saasd (?), 15:04, 18/02/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > Nan =! Nan

    Еще про этот пункт забыли упомянуть в тот-же стандарт.

     
  • 2.23, Аноним (-), 13:12, 18/02/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Тебе ещё не надоело в каждую тему про JS отписываться? Слишком толсто
     
  • 2.24, Аноним (-), 14:19, 18/02/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Ну ещё про грамматику нужно вспонить.
     
     
  • 3.47, Аноним (-), 10:20, 20/02/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Вспонить от слова пони?
     
  • 2.35, Аноним (-), 20:16, 18/02/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > вспомнит[b]и[/b]

    Ты должен мне новые глаза.

     
  • 1.7, Аноним (-), 00:00, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    JS добрался и до кэша процессора? Мир перевернулся.
     
  • 1.9, Не удивительно (?), 00:04, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    > увеличить уровень энтропии ASLR с 24-28 бит до 35 бит

    Чем это поможет? Только время увеличить и задержки.

     
  • 1.11, Crazy Alex (ok), 00:10, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Вот интерсно - на кой JS вообще доступ к высокоточному таймру?
     
     
  • 2.12, Аноним (-), 00:19, 18/02/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    > Вот интерсно - на кой JS вообще доступ к высокоточному таймру?

    time.ru?

     
  • 2.27, qqq (??), 14:59, 18/02/2017 [^] [ответить]    [к модератору]  
  • +/
    для игорей. Ну и node.js хочет сто пудов
     
     
  • 3.29, Crazy Alex (??), 16:58, 18/02/2017 [^] [ответить]    [к модератору]  
  • +/
    хм, судя по стековерфлоу в js (во всяком случае, в браузерах) таймер миллисекундный, и то точность не ахти. удивительно, что его хватает.
     
  • 3.36, НяшМяш (ok), 23:30, 18/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Для игорей просто просится requestAnimationFrame
     
  • 1.18, linuxquestions.ru (?), 06:46, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Получается, что любой браузер (и не только) потенциально уязвим и проблема лежит в самом принципе работы процессора и ОЗУ.
    Выходит даже пресловутый Servo не сможет помочь в сложившейся ситуации.
     
     
  • 2.21, Аноним (-), 11:13, 18/02/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    У пресловутого серво, внезапно, тот же жаваскрипт движок что в лисе.
     
  • 2.25, Анонимный Алкоголик (??), 14:22, 18/02/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Нет Получается в данном случае только то, что дырявый браузер остаётся дырой не... весь текст скрыт [показать]
     
     
  • 3.33, linuxquestions.ru (ok), 19:15, 18/02/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Мне кажется это логичным Если в коде самого браузера есть дыры, то тут ничего н... весь текст скрыт [показать]
     
     
  • 4.40, Crazy Alex (ok), 14:57, 19/02/2017 [^] [ответить]     [к модератору]  
  • +/
    Еадо минимизировать выполнение стороннего кода без запроса Гонять данные, а про... весь текст скрыт [показать]
     
  • 1.20, Черный Властелин (?), 10:26, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Продолжая мысль rust ненужен, js - среда исполнения эксплойтов
     
     
  • 2.38, Аноним (-), 00:05, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Новость не читай, сразу комментируй!

    >> На GitHub размещена эталонная реализация метода на языке Си.

     
     
  • 3.39, Аноним (-), 11:41, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Вот только Сишный код надо как-то предварительно доставить на компьютер пользователя, а JS загружается фоном автоматически при просмотре картинок с котятками в интернетах.
     
     
  • 4.48, Аноним (-), 23:17, 20/02/2017 [^] [ответить]    [к модератору]  
  • +/
    А толку? Без актуальной уязвимости, находясь в песочнице браузера, данные из памяти не прочтешь. Читай текст новости внимательней - на JS только техника обхода ASLR и все.
     
  • 2.41, Crazy Alex (ok), 15:02, 19/02/2017 [^] [ответить]    [к модератору]  
  • +/
    Ну это, в общем, и так не первый год понятно - достаточно только посмотреть на то количество дыр, которое обнаруживалось в браузерах, и сравнить с количеством дыр в любом другом сравнимом по масштабам сетевом софте.
     
  • 1.22, Аноним (-), 12:50, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Когда-то Крис Касперски смог хакнуть интеловский процессор кодом на жабоскрипте. История повторяется.
     
     
  • 2.30, Crazy Alex (??), 17:00, 18/02/2017 [^] [ответить]    [к модератору]  
  • +/
    там, вроде, тёмная история - то ли смог, то ли сбрехал...
     
  • 1.34, Не удивительно (?), 19:59, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    SELinux,
    ASLR,

    Скрытые АНБ разработки радует глаз.

     
  • 1.37, НяшМяш (ok), 23:32, 18/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    "Взлом через кэш процессора на JavaScript через браузер! Скоро форт Нокс ломанут пластмассовым совочком и игрушечным экскаватором из песочницы в Москве." (с) хабра.
     
  • 1.43, Аноним (-), 18:53, 19/02/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Коммент к видео It is sad that every so many so-called researchers need to po... весь текст скрыт [показать]
     
     
  • 2.51, антоний (?), 23:41, 21/02/2017 [^] [ответить]    [к модератору]  
  • +/
    топ кек, никому и не нужны full administrative права доступа. Всего то украдут ваши пароли.
     
  • 1.46, vitektm (?), 09:41, 20/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Все более актуальным становится отключение js по дефолту.
    (с включением на доверенных сайтах)
     
     
  • 2.49, Аноним (-), 23:19, 20/02/2017 [^] [ответить]    [к модератору]  
  • +/
    А толку? Я смотрю, никто в текст новости не вчитывается...
     
  • 1.50, Аноним (-), 10:18, 21/02/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Ребята суть не в JS, и даже не в C, суть в голимости ASLR
     
     
  • 2.52, Led (ok), 00:35, 22/02/2017 [^] [ответить]    [к модератору]  
  • +/
    > Ребята суть не в JS, и даже не в C, суть в
    > голимости ASLR

    Не, ребята в памперсы суть.

     

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


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