Skip to content

Files

Latest commit

 

History

History
37 lines (29 loc) · 913 Bytes

command_injection.rdoc

File metadata and controls

37 lines (29 loc) · 913 Bytes

Command Injection

Some Ruby core methods accept string data that includes text to be executed as a system command.

They should not be called with unknown or unsanitized commands.

These methods include:

  • Kernel.exec

  • Kernel.spawn

  • Kernel.system

  • `command` (backtick method) (also called by the expression %x[command]).

  • IO.popen (when called with other than "-").

Some methods execute a system command only if the given path name starts with a |:

  • Kernel.open(command).

  • IO.read(command).

  • IO.write(command).

  • IO.binread(command).

  • IO.binwrite(command).

  • IO.readlines(command).

  • IO.foreach(command).

  • URI.open(command).

Note that some of these methods do not execute commands when called from subclass File:

  • File.read(path).

  • File.write(path).

  • File.binread(path).

  • File.binwrite(path).

  • File.readlines(path).

  • File.foreach(path).