Fix Use of Kernel.open or IO.read or similar sinks with a non-constant value
#36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
rackup/test/spec_server.rb
Line 528 in c6cdd47
If Kernel.open is given a file name that starts with a | character, it will execute the remaining string as a shell command. If a malicious user can control the file name, they can execute arbitrary code. The same vulnerability applies to IO.read, IO.write, IO.binread, IO.binwrite, IO.foreach, IO.readlines and URI.open. |
fix the problem, replace the use of
open(pidfile.path)withFile.open(pidfile.path). This ensures that the file is opened directly, and there is no risk of shell command execution if the path starts with a pipe character. The change should be made on line 528 oftest/spec_server.rb. No additional imports or method definitions are required, asFileis a core Ruby class.References
Command Injection. Ruby on Rails Cheat Sheet: Command Injection
Command Injection in RDoc