Se podrían ajustar los permisos de los directorios y ficheros, para que no puedan ser accedidos por el usuario que ejecuta el programa (normalmente, el usuario que ejecuta el servidor web).
Otra opción es la usar SuExec, en Apache, que movería la propiedad de la ejecución del programa, desde el usuario que ejecuta el servidor web, hasta el usuario que es dueño del programa, por lo que se reducen bastante los problemas de seguridad.
Otra opción: modificar el $PATH que el servidor web es capaz de ver, reduciendo los directorios de ejecutables que no queremos que use, pero puede afectar el uso de otros programas que sí necesitan esos ejecutables.
Hay posibilidades de "enjaular" el servidor web, pero a veces,
eso da problemas.
En Apache2 puedes instalar el módulo
mod_security, que trae muchas cosas relacionadas con la seguridad. El problema es que si lo enjaulas con la opción SecChrootDir, el usuario legítimo no podrá acceder a todos los módulos y librerías, ya que estarán residiendo fuera de la jaula. La solución sería tener una copia de la distribución Perl dentro de la jaula.
La solución más moderna pasa por instalar a los usuarios en máquinas virtuales. Así, si tocan algo, solo será en su propio servidor, y no afectará al resto de usuarios/máquinas.
Seguro que hay más opciones...