
GSilva849776 (Community Member) asked a question.
follow the code:
snprintf(cmd, sizeof(cmd), "/bin/cat %s | %s/bin/vqfds 2 >>%s, sent_tmp, gcbbase, debug_file);
system(cmd);

GSilva849776 (Community Member) asked a question.
follow the code:
snprintf(cmd, sizeof(cmd), "/bin/cat %s | %s/bin/vqfds 2 >>%s, sent_tmp, gcbbase, debug_file);
system(cmd);
Ask the Community
Get answers, share a use case, discuss your favorite features, or get input from the community.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
.png)
These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms. You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.
These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.
These cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites. They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.
Hi @GSilva849776 (Community Member),
The first recommendation to deal with OS Command Injection findings is always to make sure if it's absolutely required to execute OS Commands. Often, it is possible to avoid them by using existing APIs. It seems to me that e.g. the call to `/bin/cat` can be replaced by using the File API to open the corresponding file.
If it is absolutely required to execute OS commands, we would always recommend against using `system()` since it invokes a fully-grown shell. If possible, always use a function from the `exec` family instead, like `execl()` / `execve()`. The `exec` family of functions does not use a full shell interpreter but just executes the program passed to it. Also, e.g. `execl()` separates the command from its arguments (https://linux.die.net/man/3/execl).
Furthermore, please make sure to validate all dynamic arguments when invoking OS commands. This makes sure that the downstream applications (i.e., `/bin/cat` and `/bin/vqfds`) are protected as well.
It's also important to make sure that the program runs with the lowest privileges required to perform its job. This is of course always important but even more important for programs that execute OS commands based on data from outside the application.
Please note that Veracode Static Analysis would not be able to verify dynamic validations, such as regular expressions, and you would have to propose a mitigation by design once you have appropriate security controls in place. For more information on how to do that, please refer to our Help Center: https://docs.veracode.com/r/improve_mitigation .
Thank you,
Florian Walter