Всякий раз, когда процесс разветвляется, он наследует адресное пространство своего родительского процесса, т. Е. Весь код и данные в памяти, включая канареи, помещенные в кадры стека, и TLS. Если бы канарейка стека отличалась для вновь разветвленных процессов Атаки, которые грубо форсируют байтовый байт байтового значения, были бы недопустимыми. Однако это частичное обновление приведет к прерыванию, если выполнение достигнет фреймов, унаследованных от родительского процесса, так как канареечные куки в этих фреймах все еще сохраняют свои старые значения Рассмотрим пример, показанный в Рис. 1: Обновление канарейки только в TLS приведет к прерыванию, как только выполнение достигнет унаследованного кадра стека
из родительского процесса.
Мой вопрос заключается в том, возможно ли, что выполнение процесса chlid достигает фреймов, унаследованных от родительского процесса.
Ссылка: Хокинс, Уильям Х., Джейсон Д. Хизер и Джек У. Дэвидсон. «Динамическая канарская рандомизация для повышения безопасности программного обеспечения». Материалы 11-й ежегодной конференции по исследованиям в области кибер и информационной безопасности. ACM, 2016.
Задача ещё не решена.
Других решений пока нет …