File tree Expand file tree Collapse file tree 2 files changed +50
-0
lines changed
ql/src/queries/security/cwe-078 Expand file tree Collapse file tree 2 files changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ <!DOCTYPE qhelp PUBLIC
2
+ "-//Semmle//qhelp//EN"
3
+ "qhelp.dtd">
4
+ <qhelp >
5
+ <overview >
6
+ <p >Code that passes user input directly to
7
+ <code >Kernel#system</code >, <code >Kernel#exec</code >, or some other library
8
+ routine that executes a command, allows the user to execute malicious
9
+ code.</p >
10
+
11
+ </overview >
12
+ <recommendation >
13
+
14
+ <p >If possible, use hard-coded string literals to specify the command to run
15
+ or library to load. Instead of passing the user input directly to the
16
+ process or library function, examine the user input and then choose
17
+ among hard-coded string literals.</p >
18
+
19
+ <p >If the applicable libraries or commands cannot be determined at
20
+ compile time, then add code to verify that the user input string is
21
+ safe before using it.</p >
22
+
23
+ </recommendation >
24
+ <example >
25
+
26
+ <p >The following example shows code that takes a shell script that can be changed
27
+ maliciously by a user, and passes it straight to <code >Kernel#system</code >
28
+ without examining it first.</p >
29
+
30
+ <sample src =" examples/command_injection.rb" />
31
+
32
+ </example >
33
+ <references >
34
+
35
+ <li >
36
+ OWASP:
37
+ <a href =" https://www.owasp.org/index.php/Command_Injection" >Command Injection</a >.
38
+ </li >
39
+
40
+ <!-- LocalWords: CWE untrusted unsanitized Runtime
41
+ -->
42
+
43
+ </references >
44
+ </qhelp >
Original file line number Diff line number Diff line change
1
+ class UsersController < ActionController ::Base
2
+ def create
3
+ command = params [ :command ]
4
+ system ( command ) # BAD
5
+ end
6
+ end
You can’t perform that action at this time.
0 commit comments