Comments 5
Извиняюсь за тупой вопрос, но вот в декомпилированном коде непосредственно перед вызовом SetEnvironmentVariableA есть цикл, в котором в строке ищется "=", чтобы разбить строку на имя переменной окружения и значение. А если этого "=" не будет, то он так и будет сканировать память, пока не повезёт?
В тему статьи: в протоколе удалённой отладки GDB есть фича выполнения изнутри отлаживаемой программы некоторых (по белому списку) системных вызовов на хосте. Я вот не уверен, что мешает, например, недоверенному gdbserver'у внутри контейнера через спецфайлы Линукса вроде /proc/self/mem и /proc/self/maps получить доступ к процессу gdb разработчика, которым он приаттачился для отладки.
GDB также имеет возможность вызывать ptrace с ключами PTRACE_POKETEXT, что также эффективно дает перезаписывать исполняемую память процесса отлаживаемой программы (как результат, выполнение любого кода в ее контексте). Таким образом, в данном случае, мы не получаем большого преимущества, имея возможность выполнить отдельные сисколлы.
Неполадки в отладке: как уязвимость в WinDbg позволяет атаковать разработчиков