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