Skip to content

Commit b48b12f

Browse files
committed
fix(security): prevent command injection in Mechanize::File#save!
Related to GHSA-qrqm-fpv6-6r8g
1 parent f43a395 commit b48b12f

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/mechanize/file.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def save! filename = nil
8282
dirname = File.dirname filename
8383
FileUtils.mkdir_p dirname
8484

85-
open filename, 'wb' do |f|
85+
::File.open(filename, 'wb')do |f|
8686
f.write body
8787
end
8888

test/test_mechanize_file.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,14 @@ def test_save_overwrite
103103
end
104104
end
105105

106+
def test_save_bang_does_not_allow_command_injection
107+
uri = URI 'http://example/test.html'
108+
page = Mechanize::File.new uri, nil, ''
109+
110+
in_tmpdir do
111+
page.save!('| ruby -rfileutils -e \'FileUtils.touch("vul.txt")\'')
112+
refute_operator(File, :exist?, "vul.txt")
113+
end
114+
end
106115
end
107116

0 commit comments

Comments
 (0)