Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 24 авг 2019, 01:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: адреса имён ядра (ASLR)
Непрочитанное сообщениеДобавлено: 08 авг 2019, 17:22 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
Смотрим адреса имён ядра:
Код:
olej@ACER:~$ cat /boot/System.map-`uname -r` | grep ' T ' | grep kmalloc
ffffffff811c3510 T mempool_kmalloc
ffffffff811eefe0 T kmalloc_order
ffffffff811ef010 T kmalloc_order_trace
ffffffff811f0ac0 T kmalloc_slab
ffffffff812362d0 T __kmalloc
ffffffff81236500 T __kmalloc_node
ffffffff81239510 T __kmalloc_track_caller
ffffffff81239720 T __kmalloc_node_track_caller
ffffffff8152c9b0 T devm_kmalloc
ffffffff815bd6e0 T sock_kmalloc
ffffffff82488933 T create_kmalloc_cache
ffffffff82488a18 T setup_kmalloc_cache_index_table
ffffffff82488a1e T create_kmalloc_caches
ffffffff82578e40 T kmalloc_info

Код:
olej@ACER:~$ sudo cat /proc/kallsyms | grep ' T ' | grep kmalloc
[sudo] пароль для olej:
ffffffff87fc3510 T mempool_kmalloc
ffffffff87feefe0 T kmalloc_order
ffffffff87fef010 T kmalloc_order_trace
ffffffff87ff0ac0 T kmalloc_slab
ffffffff880362d0 T __kmalloc
ffffffff88036500 T __kmalloc_node
ffffffff88039510 T __kmalloc_track_caller
ffffffff88039720 T __kmalloc_node_track_caller
ffffffff8832c9b0 T devm_kmalloc
ffffffff883bd6e0 T sock_kmalloc
ffffffff89288933 T create_kmalloc_cache
ffffffff89288a18 T setup_kmalloc_cache_index_table
ffffffff89288a1e T create_kmalloc_caches
ffffffff89378e40 T kmalloc_info

1-е - это при инсталляции системы.
2-е - это при текущей загрузке.
Раньше такого различия я не видел (32-бит x86 и сильно предыдущие версии ядра)


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: адреса имён ядра
Непрочитанное сообщениеДобавлено: 08 авг 2019, 17:26 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
Утверждается, что это ASLR (рандомизация размещения адресного пространства).
Если при сборке ядра установлен параметр:
Код:
olej@ACER:~$ cat /boot/config-`uname -r` | grep CONFIG_RANDOMIZE_BASE
CONFIG_RANDOMIZE_BASE=y

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


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: адреса имён ядра
Непрочитанное сообщениеДобавлено: 08 авг 2019, 17:30 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
ASLR
Цитата:
ASLR (англ. address space layout randomization — «рандомизация размещения адресного пространства») — технология, применяемая в операционных системах, при использовании которой случайным образом изменяется расположение в адресном пространстве процесса важных структур данных, а именно образов исполняемого файла, подгружаемых библиотек, кучи и стека.

Технология ASLR создана для усложнения эксплуатации нескольких типов уязвимостей. Например, если при помощи переполнения буфера или другим методом атакующий получит возможность передать управление по произвольному адресу, ему нужно будет угадать, по какому именно адресу расположен стек, куча или другие структуры данных, в которые можно поместить шелл-код. Сходные проблемы возникнут и при атаке типа «возврат в библиотеку» (return-to-libc): атакующему не будет известен адрес, по которому загружена библиотека. В приведённых примерах от атакующего скрыты конкретные адреса, и, если не удастся угадать правильный адрес, приложение скорее всего аварийно завершится, тем самым лишив атакующего возможности повторной атаки и привлекая внимание системного администратора.

Цитата:
Linux
В ядре Linux простой вариант ASLR имеется с 2005 года (с версии 2.6.12). Более сложные и полные варианты ASLR предлагаются в виде патчей (PaX, ExecShield и др.). В дистрибутивах, содержащих в названии слово «hardened», а также в современных версиях дистрибутива Ubuntu, сильные варианты включены по умолчанию.

Для работы ASLR (для размещения исполняемых файлов в памяти по случайным адресам) исполняемые файлы должны быть скомпилированы в режиме position-independent executable (разновидность позиционно-независимого кода для исполняемых файлов).


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: адреса имён ядра (ASLR)
Непрочитанное сообщениеДобавлено: 11 авг 2019, 14:01 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
Очень детальный разбор ALSR в Национальной библиотеке им. Н. Э. Баумана - ASLR (Address Space Layout Randomization)
Цитата:
Последнее изменение этой страницы: 22:22, 4 мая 2017.

Правда, это в основном на примерах Windows, но принципы понятны.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: адреса имён ядра (ASLR)
Непрочитанное сообщениеДобавлено: 11 авг 2019, 23:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
Olej писал(а):
Код:
ffffffff811c3510 T mempool_kmalloc

Код:
ffffffff87fc3510 T mempool_kmalloc


ffffffff87fc3510−ffffffff811c3510=6E00000
Olej писал(а):
Код:
ffffffff89378e40 T kmalloc_info

Код:
ffffffff82578e40 T kmalloc_info


ffffffff89378e40−ffffffff82578e40=6E00000


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: адреса имён ядра (ASLR)
Непрочитанное сообщениеДобавлено: 11 авг 2019, 23:53 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 12210
Откуда: Харьков
Тема эта возникла из-за одной "мелочи", которую я не могу пока понять...
- когда загружается модуль ядра Linux, то он связывается с именем ядра по абсолютному адресу имени...
- без ASLR это элементарно просто и понятно
- но с ASLR все адреса имён должны быть скорректированы на фиксированную величину (+6E00000 в примере выше)
- и это смещение меняется при каждой перезагрузке системы...
- каким механизмом и в какой момент это происходит?


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.160s | 17 Queries | GZIP : On ]