Subject: Re: system(3) caveat
To: None <tech-userlevel@NetBSD.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: tech-userlevel
Date: 05/11/2006 10:01:11
> in system(3) it says
> CAVEATS
> Never supply the system() function with a command containing any part of
> an unsanitized user-supplied string. Shell meta-characters present will
> be honored by the sh(1) command interpreter.
> and I'm wondering if 'Never' means 'NEVER!', or if its ok to do that
> in my case, which is that I'm providing a user program that will act
> on an event by running a command that the user provides..
Provided all you pass to system() is the user-provided string, you
should be OK. The warning is against things like
sprintf(cmd,"telnet %s",user_provided_hostname);
system(cmd);
without first verifying that user_provided_hostname is free of shell
metacharacters.
> The command is not a suid program, is there a particular security
> issue I should be aware of?
The only one that comes to mind is that this allows the user to run
arbitrary shell commands. This is not normally a risk, but if this
gets used in an environment where some users have restricted shells
that allow them to execute only certain commands, it could open up a
way for them to bypass that restriction.
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse@rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B