Solução

Sempre é bom reforçar que segurança tem muito a ver com entender como as coisas funcionam. Pois quanto mais você entende como as coisas funcionam, maiores são as chances de você identificar uma vulnerabilidade que não seria possível de identificar sem esse ou aquele conhecimento específico.

Bem, a ideia da proteção na execução do código da solução é basicamente substituir a libc padrão por uma libc “sandbox” que tem unicamente funções seguras que, de maneira alguma, poderiam ser usadas para comprometer a segurança do servidor. Correto?

Bem, mas isso é apenas tentar tapar o sol com uma peneira. É plenamente possível, a partir de um código C, invocar system calls (ou syscalls) do sistema operacional usando inline assembly. Com isso, não adianta de nada limitar as funções da libc porque o programa ainda pode invocar qualquer syscall do kernel.

Se você não sabe o que é syscall e/ou inline assembly… Já sabe, né? Pesquise no Google… Ou leia esse outro livro que eu escrevi: https://mentebinaria.gitbook.io/assembly