LINUX.ORG.RU

Продемонстрировано использование уязвимости в DRAM-памяти для повышения привилегий в системе

 , , ,


7

6

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

Исследователи безопасности из группы Zero продемонстрировали реальность создания рабочих эксплоитов, использующих уязвимость RowHammer

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Klymedy (всего исправлений: 5)

Ответ на: комментарий от dib2

Это хорошо. Значит PNaCl тоже не должен быть уязвим.

shahid ★★★★★
()
Ответ на: комментарий от A-234

Но стабильность работы системы может быть нарушена, это и вызывает самые большие опасения.

Да. Если допустим есть сервак с дебианом вместо ОС, у него RAM ECC, и там проведена сабжевая атака, то логи будут засраны очень быстро и капитально сообщениями о чексуммах, пока в /var место не кончится. А потом всё встанет колом. Благо, на смену syslog пришел journald, с которым можно более лучше ротировать логи.

shahid ★★★★★
()
Ответ на: комментарий от shahid

Благо, на смену syslog пришел journald, с которым можно более лучше ротировать логи.

Чем лучше? Что в этом случае дает systemd?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Чем лучше?

Сам следит за своими логами и их размером без чужой помощи по крону.

Что в этом случае дает systemd?

Позволяет серверу продолжать обслуживать клиентов до последнего. В случае традиционных логов на традиционной разметке диска, заполнение /var из-за наполнения /var/log привело к постепенному скорому падению всех СУБД, стопору виртуалок на /var (если динамические виртуальные диски) и нарушения сервиса в целом. Если syslog и /var/log на отдельном разделе, то конечно эффект от флуда в логах заметно снижается, но все же не исчезает.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 2)
Ответ на: комментарий от andreyu

Да даже если и нужен: systemd — может работать как супервизор служб, перезапуская их при падении. Ну дальше понятно.

shahid ★★★★★
()

Запустил первый эксплойт. Прошло 150 циклов, ничего не произошло. Надоело ждать, закрыл. За сколько оно должно сработать?

KivApple ★★★★★
()
Ответ на: комментарий от mystery

Слышал, но я же сказал обычно, а не всегда. И это уязвимость другого плана.

Klymedy ★★★★★
()
Ответ на: комментарий от shahid

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

A-234 ★★★★★
()
Ответ на: комментарий от A-234

Это хорошо. Но админам надо помнить, что вышеописанная DoS-атака через ECC и логи может начаться сама по себе при износе оперативки сервака. Многие недальновидные «админы» предпочитают не осознавать этого простого сценария, крича по всему интернету про абсолютную ненужность systemd и в частности journald, который во многом наследует принципы эрланговского логгера sasl+log_mf.

shahid ★★★★★
()
Ответ на: комментарий от anonymous

У меня не сработало за 180 секунд. Мне радоваться?

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

У меня третий делает вот что:

#27 ........................................ OK
#28 ........................................ OK

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400795 in mycrc32 (buffer=0x0, length=78905344) at dram.c:19
19                  crc32 += (unsigned)((unsigned char) buffer[i]);

Материнка и первые 4 гига 2010 года, а вот вторые, я уже не помню, какого.

alt-x ★★★★★
()
Ответ на: комментарий от shahid

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

A-234 ★★★★★
()
Ответ на: комментарий от A-234

он скорее повиснет вследствие разрушения памяти а не исчерпания места под логи.

Неа, не повиснет. Обычно продолжает работать. Отказ оперативки ECC идёт не везде сразу, а лишь точечно в некоторых ячейках. Но сообщений в логах даже от этого овер 9000, и уже из-за этого сервак тупить начинает.

При износе оперативки сервер полюбому выключать придется

Придется, но при этом будет возможность перевести весь неотреплицированный продакшен на соседний сервер. Админам деньги платят, чтобы всё работало 24/7/365 всё-таки.

shahid ★★★★★
()
Последнее исправление: shahid (всего исправлений: 1)
Ответ на: комментарий от FreeLiver

Вся уязвимость построена на сбросе кэша процессора. Странно что процесс выполняющийся не в 0 кольце имеет такие привилегии.

Меня это же поразило.

Но тот факт, что можно спроектировать DRAM, где refresh будет происходить недостаточно часто для того чтобы она работала, и что этому будут подвержены ВСЕ производители, меня просто поверг в шок. Куда делись инженеры?1?!один

alt-x ★★★★★
()
Ответ на: комментарий от shahid

А система на это никак не реагирует, например выключает битые страницы, если это не единичный сбой из за космической радиации?
Сервисы которые нужны 24/7 круглый год полюбому в failover кластере крутиться должны, там репликация процесс постоянный.

A-234 ★★★★★
()
Ответ на: комментарий от alt-x

Но тот факт, что можно спроектировать DRAM, где refresh будет происходить недостаточно часто для того чтобы она работала, и что этому будут подвержены ВСЕ производители, меня просто поверг в шок. Куда делись инженеры?1?!один

Почему только DRAM? Это довольно общая проблема. У современной флеш памяти все время уменьшается количество циклов стирания. С винтами современными все тоже не очень. ИМХО шанс практически столкнуться конкретно с сабжевой проблемой очень мал.

FreeLiver ★★★
()
Ответ на: комментарий от A-234

А система на это никак не реагирует, например выключает битые страницы, если это не единичный сбой из за космической радиации?

Често скажу: не узнавал. Но ошибки ECC валятся нон-стоп, пока планку памяти не заменят.

Сервисы которые нужны 24/7 круглый год полюбому в failover кластере крутиться должны, там репликация процесс постоянный.

Деньги, предъявите ваши деньги)

shahid ★★★★★
()
Ответ на: комментарий от KorWIN

Скачал первый эксполит. Более 1500 итераций ошибки пока нет. Это значит что ошибки нет или что эксполиту нужны права root?

Зачем для записи-чтения памяти root? Просто память работает стабильно, вот и все.

AVL2 ★★★★★
()
Ответ на: комментарий от FreeLiver

Вся уязвимость построена на сбросе кэша процессора. Странно что процесс выполняющийся не в 0 кольце имеет такие привилегии.

Во первых, а что такого плохого в сбросе кеша процессора? Уязвимость вовсе не в этом.

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

AVL2 ★★★★★
()
Ответ на: комментарий от alt-x

Но тот факт, что можно спроектировать DRAM, где refresh будет происходить недостаточно часто для того чтобы она работала, и что этому будут подвержены ВСЕ производители, меня просто поверг в шок. Куда делись инженеры?1?!один

Их заменили эффективными менеджерами. Неэффективно разрабатытывать одну и ту же память двумя и более дорогостоящими инженерами на разных предприятиях. Эффективнее купить готовый техпроцесс, дизайн коробочки и конкурировать с другими продавцами того же самого посредством повышения эффективности предприятия по запихиванию продукта в коробочки. Сейчас ведь даже с автомобилями так: не всегда понятно что видишь - опель, митсубиши или шевролёт какой-нибудь. Да что там с автомобилями, с едой наверняка точно так же: органическая масса с миндальным, мятным или мясным ароматизатором - одна ошибка в техпроцессе и хана куче людей по всему свету.

anonymous
()
Ответ на: комментарий от anonymous

Это зависит от сценария использования, а не от правильного или неправильного софта.

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

До 9 или 5 вольт?

Если материнка расчитана под разные камни, то почему нет? Важны не значения, 3,3 вместо 1,8 или 9 вместо 5, а сам факт возможности выставить неправильные значения, существенно уменьшающие время жизни девайса.

AVL2 ★★★★★
()

Результат третьего теста. Все довольно неоднозначно. На моем T530 первый раз тест свалился на третьем проходе с сообщение CRC error (извините, вывод «затерся» в буфере терминала).

Второй раз свалился на 24м проходе

gleb@raccoon:~/src/hlam$ ./rowhammer 
#0 ........................................ OK
#1 ........................................ OK
#2 ........................................ OK
#3 ........................................ OK
#4 ........................................ OK
#5 ........................................ OK
#6 ........................................ OK
#7 ........................................ OK
#8 ........................................ OK
#9 ........................................ OK
#10 ........................................ OK
#11 ........................................ OK
#12 ........................................ OK
#13 ........................................ OK
#14 ........................................ OK
#15 ........................................ OK
#16 ........................................ OK
#17 ........................................ OK
#18 ........................................ OK
#19 ........................................ OK
#20 ........................................ OK
#21 ........................................ OK
#22 ........................................ OK
#23 ........................................ DRAM CRC FAIL! ;-)

Память вот такая:

*-memory
          описание: Системная память
          физический ID: 7
          слот: Системная плата или материнская плата
          размер: 8GiB
        *-bank:0
             описание: SO-DIMM DDR3 Синхронная 1600 MHz (0,6 ns)
             продукт: HMT351S6CFR8C-PB
             производитель: Hynix/Hyundai
             физический ID: 0
             серийный №: 006597F4
             слот: ChannelA-DIMM0
             размер: 4GiB
             разрядность: 64 bits
             частота: 1600MHz (0.6ns)
        *-bank:1
             описание: SO-DIMM DDR3 Синхронная 1600 MHz (0,6 ns)
             продукт: CT51264BF160BJ.C8F
             производитель: 859B
             физический ID: 1
             серийный №: 17410000
             слот: ChannelB-DIMM0
             размер: 4GiB
             разрядность: 64 bits
             частота: 1600MHz (0.6ns)

Вывод — надо менять память.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 2)
Ответ на: комментарий от AVL2

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

Я вот честно не представляю как это сделать многократно не отключая кэширование.

Я понимаю что по существу проблема в чипе. Просто я считаю что она надуманная. Для взлома или отказа есть более гарантированные способы.

FreeLiver ★★★
()
Ответ на: комментарий от FreeLiver

Код делающий множество переходов туда-сюда и вылезающий за границы кэша.

A-234 ★★★★★
()
Ответ на: комментарий от AVL2

Любые мои попытки использовать флеху как обычный диск приводили к быстрой кончине флешки.

Просто включи кэширование на запись для флешки. Конечно, в этом случае если выдернуть ее не размонтировав высока вероятность потерять данные.

praseodim ★★★★★
()
Ответ на: комментарий от FreeLiver

ИМХО шанс практически столкнуться конкретно с сабжевой проблемой очень мал.

В смысле мал? Любой браузерный вирус может поиметь любую ОС. По-моему, это дыра размером с амбар.

alt-x ★★★★★
()
Ответ на: комментарий от Legioner

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

строка 512 байт у интела(чередуют миксуя биты адреса, физически 2кб) кэш 16-way с шагом ЕМНИП 2кб. линейка 64 байта.

строка = 512/64 = 8 линеек. между ними надо читать какое-нибудь постороннее гавно чтоб херачило со смещением 2кб. если низя флашить кэш вручную, можно его затрахать

ckotinko ☆☆☆
()
Ответ на: комментарий от FreeLiver

Я вот честно не представляю как это сделать многократно не отключая кэширование.

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

Я понимаю что по существу проблема в чипе. Просто я считаю что она надуманная. Для взлома или отказа есть более гарантированные способы.

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

AVL2 ★★★★★
()
Ответ на: комментарий от praseodim

Просто включи кэширование на запись для флешки. Конечно, в этом случае если выдернуть ее не размонтировав высока вероятность потерять данные.

Там, где флешка вместо диска, ОЗУ обычно и так мало.

AVL2 ★★★★★
()
Ответ на: комментарий от shahid

дело в том, что реально такая атака может выносить страницы, которые процессу не принадлежат. ну там в ядро насрать например. так что всё может и оопснуться и даже запаниковать.

ckotinko ☆☆☆
()
Ответ на: комментарий от alt-x
#0 ........................................ OK
#1 ........................................ OK
...
#31 ........................................ OK
#32 ........................................ OK
#33 .DRAM seems works fine...
KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)

#33 .DRAM seems works fine...

Silicon Power Computer & Communications

DCLT4GN128S, 2013-14 годов.

anonymous
()
Ответ на: комментарий от alt-x

В смысле мал? Любой браузерный вирус может поиметь любую ОС. По-моему, это дыра размером с амбар.

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

FreeLiver ★★★
()
Последнее исправление: FreeLiver (всего исправлений: 2)
Ответ на: комментарий от FreeLiver

«Это все равно что бояться киллера, вместо того чтобы внимательно преходить улицу.»

Переходя улицу, ты осматриваешь все ближайшие дома, крыши и машины на предмет снайпера/киллера? У тебя паранойя.

anonymous
()
Ответ на: комментарий от KivApple

https://groups.google.com/forum/#!topic/rowhammer-discuss/i1zya99LC1U

Preferably you should have tested your RAM for an extended period (30 minutes or more) and it must not have produced an error during that time.

срабатывает довольно рандомно,если смотреть репорты-у кого за 30 циклов,у другого 200 у третьего несколько часов и десятки тысяч циклов

я дошел до 200 циклов и бросил,експлоит которые будет инициализироваться часами и жрать 100% ЦП сложно не заметить

anonymous
()
Ответ на: комментарий от anonymous

и да ставлю под сомнение сей тест,прочитать один байт из RAM абсолютно недостаточно для повышения привелегий,тоесть да я допускаю что на КОНКРЕТНОМ железе после суток анализа в какие участки памяти через сколько часов/дней получается доступ(более того вероятнее всего есть возможность влиять на процесс перебоями напряжения(понимжением/повышением тока в сети)

таки можно сделать рабочий експлоит работающий фактически на любой ОС так как он работает за счет особенности «железа»...

тоесть эксплуатация такого експлоита довольно сомнительна

и кто был владельцем любой приставки(игровой) и делал СОФТ-мод(иили разрабатывал софтмод,или работал с памятью чипа через программатор/юсбхаки...)
знает сложность разработки и чтобы этот процесс заработал на других приставках нужно проделать колоссальную работу по сбору информации и написанию алгоритма(ибо первые хаки делаются в ручную и никакой автоматизации по выявлению бракованных/пустых секторов сделать невозможно)...
и также знают тот факт,что достаточно малейшего изменения в чипе чтоб хак перестал работать,тоесть эксплуатация хака заключается в модели ципа одной серии,для другого чипа опять все с нуля делать(даже в одной модели приставок делаются сотни изменений за год и каждая партия с завода фактически отлична от предыдущей)

тоесть тут продемонстрирована возможность"софтмода" ЦП/ОЗУ за счет ошибок в железе/алгоритмах работы чипа

этим занимаются с 80-х годов с появлением первых хардварных DRM защит,но на игровых приставках хотяб чипы на партию совпадают что облегчает разработку хака,в случае с ПК-это фактически невозможно,чтото на уровне уязвимости всех ключей безопасности потому что ТЕОРЕТИЧЕСКИ комбинация байт из пары киллобайт ключа конечно,и простым перебором всех бит можно найти все ключи для всех сертефикатов...гугл что наняли хакеров консолей чтоб они запилили хак для ПК?....может и найдут чтото в 1% оборудования...

anonymous
()
Ответ на: комментарий от AVL2

Ну так вот вирус и запускает такой сценарий использования.

Ничем не отличается от пользовательского штатного сценария использования флешки в авторегистраторе например, с зацикленной записью.

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

Flash write-protection, BIOS Write Protect, BIOS ROM Protect. Более менее приличные материнки имеют два чипа FlashROM, при неправильной прошивке первого, он восстанавливается из второго.

Если материнка расчитана под разные камни, то почему нет? Важны не значения, 3,3 вместо 1,8 или 9 вместо 5, а сам факт возможности выставить неправильные значения, существенно уменьшающие время жизни девайса.

Под разные это как? В матплату под AMD воткнуть камень Intel? Или проц поколения Core воткнуть в плату 486DX? Даже если разъём совпадает, материнка просто не стартанёт с неизвестным ей процессором.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.