Java Guidance: ExecTainted.ql (experimental version)#10665
Java Guidance: ExecTainted.ql (experimental version)#10665smowton merged 4 commits intogithub:mainfrom
Conversation
…va/guidance-exectainted
…dilanbhalla/codeql into dilan-java/guidance-exectainted
|
QHelp previews: java/ql/src/experimental/Security/CWE/CWE-078/ExecTainted.qhelpUncontrolled command line (experimental sinks)Code that passes user input directly to RecommendationIf possible, use hard-coded string literals to specify the command to run or library to load. Instead of passing the user input directly to the process or library function, examine the user input and then choose among hard-coded string literals. If the applicable libraries or commands cannot be determined at compile time, then add code to verify that the user input string is safe before using it. ExampleThe following example shows code that takes a shell script that can be changed maliciously by a user, and passes it straight to class Test {
public static void main(String[] args) {
String script = System.getenv("SCRIPTNAME");
if (script != null) {
// BAD: The script to be executed is controlled by the user.
Runtime.getRuntime().exec(script);
}
}
}References
|
Porting over guidance for ExecTainted.ql so that it is also included alongside experimental version.