SECCOMP :Как эмулировать malloc, realloc и free?

Я хочу запускать произвольные (потенциально опасные )двоичные файлы на моем сервере. Поэтому я использовал objcopy, чтобы переименовать «основной» символ в «другой _основной», чтобы я мог связать свою маленькую основную функцию, которая устанавливает соответствующее значение для RLIMIT_CPUи переключаетSECCOMPперед вызовом другого _main. Я очень доволен этим решением до сих пор.

Теперь проблема в том, что код сторонней программы может содержать некоторые вызовы malloc, которые могут мгновенно убить программу (sbrk не разрешено ). Поэтому я хотел бы предварительно -выделить массив разумного размера (, например. 20 МБ )перед установкой SECCOMP, которые должны использоваться malloc / realloc / calloc / free. К сожалению, я не знаю, как заархивировать последний шаг. Должен ли я реализовать все эти 4 функции самостоятельно? Как я могу внедрить свои собственные функции в stdlib (, например, что происходит, когда printf вызывает malloc внутри? ).

6
задан Keith Thompson 13 July 2012 в 21:44
поделиться