История изменений
Исправление shdown, (текущая версия) :
Во-первых, ты предлагаешь сломать ABI. Хорошо, зафиксировали.
Нет.
Да. По твоему «Перекомпилировать основные библиотеки, что бы не ломать ABI можно ввести экспорт двух прототипов, с доп.значениями для проверки диапазонов и без» это очевидно.
Более того, там будет проблема с тем, что нужно вызвать функцию по указателю, но неизвестно, «старая» это функция или «новая». Т.е. либо указывать ABI в атрибутах указателя на функцию (кто это будет делать, лол?), либо просто новый код не сможет работать со старым и наоборот.
Это стек регионов, он не привязан к значению переменной.
А как это защитит от ((int*)rbp)[-3] = 0xBADC0DE;
, если ((int*)rbp)-3
это валидный адрес, т.е. это будет эквивалентно isAdmin = 0xBADC0DE
?
Где будет храниться этот стек регионов, кто мешает атакующему и туда накакать?
Ну и это будет как -fsanitize=address
, только почему-то только для стека и гораздо медленнее (в твоём описании).
Исходная версия shdown, :
Во-первых, ты предлагаешь сломать ABI. Хорошо, зафиксировали.
Нет.
Да. По твоему «Перекомпилировать основные библиотеки» это очевидно. Более того, там будет проблема с тем, что нужно вызвать функцию по указателю, но неизвестно, «старая» это функция или «новая».
Это стек регионов, он не привязан к значению переменной.
А как это защитит от ((int*)rbp)[-3] = 0xBADC0DE;
, если ((int*)rbp)-3
это валидный адрес, т.е. это будет эквивалентно isAdmin = 0xBADC0DE
?
Где будет храниться этот стек регионов, кто мешает атакующему и туда накакать?
Ну и это будет как -fsanitize=address
, только почему-то только для стека и гораздо медленнее (в твоём описании).