RDot

RDot (https://rdot.org/forum/index.php)
-   Статьи/Articles (https://rdot.org/forum/forumdisplay.php?f=10)
-   -   Заметка про task_struct в ядре Linux. (https://rdot.org/forum/showthread.php?t=1451)

SynQ 21.02.2015 12:51

В 3.20 убирают restart_block из struct thread_info, которая находится сразу под стеком ядра в памяти (см. первый пост) и может быть перезаписана при переполнении самого стека. Такая перезапись использовалось пару раз в публичных эксплойтах.

commit: all arches, signal: move restart_block to struct task_struct

Цитата:

If an attacker can cause a controlled kernel stack overflow, overwriting the restart block is a very juicy exploit target. This is because the restart_block is held in the same memory allocation as the kernel stack. Moving the restart block to struct task_struct prevents this exploit by making the restart_block harder to locate. Note that there are other fields in thread_info that are also easy targets, at least on some architectures.
Код:

struct thread_info {
    struct task_struct  *task;
    struct exec_domain  *exec_domain;
    __u32                flags;
    __u32                status;
    __u32                cpu;
    int                  preempt_count;
    mm_segment_t        addr_limit;
    struct restart_block restart_block;
    void __user        *sysenter_return;
#ifdef CONFIG_X86_32
    unsigned long        previous_esp;
    __u8                supervisor_stack[0];
#endif
    int                  uaccess_err;
};


SynQ 18.03.2015 11:21

По следам rowhammer в ядре 4.1 закроют доступ к физическим адресам в /proc/PID/pagemap.
commit

Код:

static int pagemap_open(struct inode *inode, struct file *file)
{
+ /* do not disclose physical addresses: attack vector */
+ if (!capable(CAP_SYS_ADMIN))
+ return -EPERM;


SynQ 05.06.2015 11:13

Не про ядро.
В Ubuntu теперь не будет работать баг в суидниках, когда делают system/popen("some-file") и подкладывание some-file в текущую диру.
https://bugs.launchpad.net/ubuntu/+s...660/comments/6

SynQ 17.11.2015 12:37

CSAW CTF 2015 Kernel Exploitation Challenge
http://poppopret.org/2015/11/16/csaw...ion-challenge/
http://itszn.com/blog/?p=21

SynQ 07.03.2016 12:38

Недавно был интересный пост про обход kASLR через наблюдение за временем выполнения процессорной инструкции prefetch.
Теперь же подоспел PoC для линукса:
http://dreamsofastone.blogspot.ru/20...hitecture.html
https://github.com/xairy/kaslr-bypass-via-prefetch

SynQ 14.05.2016 13:10

Цитата:

Artem Shishkin @honorary_bot
CR4.UMIP (User-Mode Instruction Prevention) for KASLR, nice
https://pbs.twimg.com/media/Chos1wPUYAEWNeU.jpg
Красивый UaF в ядре 4.4-4.5 структуры fd (открываем writable fd, освобождаем его, открываем read-only fd до /etc/crontab и можем писать в него):
https://bugs.chromium.org/p/project-.../detail?id=808

Коммит SLAB freelist randomization:
http://git.kernel.org/cgit/linux/ker...f9996e9675e25f

Цитата:

Сообщение от Kees Cook
As for security features I've been tracking in 4.6:
- KASLR on arm64 (though requires the bootloader to provide entropy)
- Kernel memory protection by default on ARMv7+
- Kernel memory protection by default on arm64
- Kernel memory protection mandatory on x86
- __ro_after_init markings for write-once data

For 4.7, I think it's likely we'll see:
- split of physical/virtual text base address randomization for x86 KASLR
- KASLR on MIPS
- LoadPin LSM to control kernel module and firmware origins

For 4.8, I'm hoping we'll see:
- randomization of base addresses for page tables, vmalloc, and other memory regions for x86 KASLR
- gcc plugin infrastructure
- per-build structure layout randomization


SynQ 07.08.2016 15:45

mm: SLAB freelist randomization в апстриме:
https://git.kernel.org/cgit/linux/ke...da21cee801ec2b

Также в планах перелопатить thread_info (и кое-где вообще ее убрать), самое главное - хотят переместить addr_limit в task_struct. А значит, прощай легкий способ обхода SMEP. Раньше было достаточно любого infoleak с адресом стека ядра и сразу знали адрес, по которому нужно перезаписать addr_limit.
Если закоммитят, нужен будет infoleak по выбранному адресу, т.к. лимит будет в thread_info.task->thread.addr_limit.

[PATCH v4 18/29] x86: Move addr_limit to thread_struct:
https://lkml.org/lkml/2016/6/26/299

PS update - приземлили в 4.9, также в 4.10 для arm64.

SynQ 18.12.2016 12:13

Спасибо rebel за эксплойт для СVE-2016-8655 Linux af_packet.c race condition, теперь хотят закрыть удобный и лежавший на поверхности способ обхода smap.

[RFC 0/4] make call_usermodehelper a bit more "safe"
[RFC 4/4] Introduce CONFIG_READONLY_USERMODEHELPER

SynQ 31.01.2017 10:28

Большая подборка:
https://github.com/idl3r/linux-kernel-exploitation

SynQ 05.01.2018 10:14

Побочный эффект meltdown и specter - во всех ядрах с активированной KPTI (Kernel Page Table Isolation CONFIG_PAGE_TABLE_ISOLATION) теперь будет SMEP, даже если процессор не поддерживает ее.
https://outflux.net/blog/archives/20...lation-in-pti/

И похоже скоро вообще перестанут мапить userspace, когда работает ядро.


Часовой пояс GMT +3, время: 05:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot