Skip to content

Commit bd8ad1f

Browse files
authored
Merge pull request #3392 from beefproject/red/dev
Remediate sinatra vulnerability
2 parents d05ff08 + cdb9ced commit bd8ad1f

5 files changed

Lines changed: 36 additions & 21 deletions

File tree

Gemfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ gem 'json'
99

1010
gem 'eventmachine', '~> 1.2', '>= 1.2.7'
1111
gem 'thin', '~> 2.0'
12-
gem 'sinatra', '~> 3.2'
13-
gem 'rack', '~> 2.2'
14-
gem 'rack-protection', '~> 3.2.0'
12+
gem 'sinatra', '~> 4.1'
13+
gem 'rack', '~> 3.2'
14+
gem 'rack-protection', '~> 4.1.1'
1515
gem 'em-websocket', '~> 0.5.3' # WebSocket support
1616
gem 'uglifier', '~> 4.2'
1717
gem 'mime-types', '~> 3.7'

Gemfile.lock

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ GEM
3434
io-endpoint
3535
base64 (0.3.0)
3636
benchmark (0.4.1)
37-
bigdecimal (3.2.2)
37+
bigdecimal (3.2.3)
3838
browserstack-local (1.4.3)
3939
byebug (12.0.0)
4040
capybara (3.40.0)
@@ -48,8 +48,8 @@ GEM
4848
xpath (~> 3.2)
4949
coderay (1.1.3)
5050
concurrent-ruby (1.3.5)
51-
connection_pool (2.5.3)
52-
console (1.33.0)
51+
connection_pool (2.5.4)
52+
console (1.34.0)
5353
fiber-annotation
5454
fiber-local (~> 1.1)
5555
json
@@ -97,7 +97,7 @@ GEM
9797
mime-types (3.7.0)
9898
logger
9999
mime-types-data (~> 3.2025, >= 3.2025.0507)
100-
mime-types-data (3.2025.0819)
100+
mime-types-data (3.2025.0902)
101101
mini_mime (1.1.5)
102102
minitest (5.25.5)
103103
mojo_magick (0.6.8)
@@ -154,10 +154,14 @@ GEM
154154
mojo_magick (~> 0.6.5)
155155
rqrcode_core (~> 1.0)
156156
racc (1.8.1)
157-
rack (2.2.17)
158-
rack-protection (3.2.0)
157+
rack (3.2.1)
158+
rack-protection (4.1.1)
159159
base64 (>= 0.1.0)
160-
rack (~> 2.2, >= 2.2.4)
160+
logger (>= 1.6.0)
161+
rack (>= 3.0.0, < 4)
162+
rack-session (2.1.1)
163+
base64 (>= 0.1.0)
164+
rack (>= 3.0.0)
161165
rack-test (2.2.0)
162166
rack (>= 1.3)
163167
rainbow (3.1.1)
@@ -173,7 +177,7 @@ GEM
173177
http-cookie (>= 1.0.2, < 2.0)
174178
mime-types (>= 1.16, < 4.0)
175179
netrc (~> 0.8)
176-
rexml (3.4.1)
180+
rexml (3.4.3)
177181
rqrcode_core (1.2.0)
178182
rr (3.1.2)
179183
rspec (3.13.1)
@@ -216,10 +220,12 @@ GEM
216220
rexml (~> 3.2, >= 3.2.5)
217221
rubyzip (>= 1.2.2, < 4.0)
218222
websocket (~> 1.0)
219-
sinatra (3.2.0)
223+
sinatra (4.1.1)
224+
logger (>= 1.6.0)
220225
mustermann (~> 3.0)
221-
rack (~> 2.2, >= 2.2.4)
222-
rack-protection (= 3.2.0)
226+
rack (>= 3.0.0, < 4)
227+
rack-protection (= 4.1.1)
228+
rack-session (>= 2.0.0, < 3)
223229
tilt (~> 2.0)
224230
slack-notifier (2.4.0)
225231
sqlite3 (2.7.3-aarch64-linux-gnu)
@@ -259,7 +265,7 @@ GEM
259265
tilt (2.6.1)
260266
timeout (0.4.3)
261267
timers (4.4.0)
262-
tins (1.42.0)
268+
tins (1.43.0)
263269
bigdecimal
264270
sync
265271
tzinfo (2.0.6)
@@ -313,8 +319,8 @@ DEPENDENCIES
313319
parseconfig (~> 1.1, >= 1.1.2)
314320
pry-byebug (~> 3.11)
315321
qr4r (~> 0.6.1)
316-
rack (~> 2.2)
317-
rack-protection (~> 3.2.0)
322+
rack (~> 3.2)
323+
rack-protection (~> 4.1.1)
318324
rake (~> 13.3)
319325
rdoc (~> 6.14)
320326
rest-client (~> 2.1.0)
@@ -323,7 +329,7 @@ DEPENDENCIES
323329
rubyzip (~> 3.1)
324330
rushover (~> 0.3.0)
325331
selenium-webdriver (~> 4.35)
326-
sinatra (~> 3.2)
332+
sinatra (~> 4.1)
327333
slack-notifier (~> 2.4)
328334
sqlite3 (~> 2.7)
329335
term-ansicolor

core/main/handlers/hookedbrowsers.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ def confirm_browser_user_agent(user_agent)
7171

7272
# @note get zombie if already hooked the framework
7373
hook_session_name = config.get('beef.http.hook_session_name')
74-
hook_session_id = request[hook_session_name]
74+
hook_session_id =
75+
if request.respond_to?(:[])
76+
request[hook_session_name]
77+
else
78+
request.params[hook_session_name] || request.env[hook_session_name]
79+
end
7580
begin
7681
raise ActiveRecord::RecordNotFound if hook_session_id.nil?
7782

core/main/network_stack/handlers/dynamicreconstruction.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ def check_packets
7070
res = JSON.parse(b64).first
7171
res['beefhook'] = packet[:beefhook]
7272
res['request'] = request
73-
res['beefsession'] = request[BeEF::Core::Configuration.instance.get('beef.http.hook_session_name')]
73+
session_key = BeEF::Core::Configuration.instance.get('beef.http.hook_session_name')
74+
res['beefsession'] = request.cookies[session_key] ||
75+
request.params[session_key] ||
76+
request.env[session_key]
77+
7478
execute(res)
7579
rescue JSON::ParserError => e
7680
print_debug 'Network stack could not decode packet stream.'

extensions/admin_ui/api/handler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def self.mount_handler(beef_server)
149149

150150
# mount the media folder where we store static files (javascript, css, images, audio) for the admin ui
151151
media_dir = "#{File.dirname(__FILE__)}/../media/"
152-
beef_server.mount("#{bp}/media", Rack::File.new(media_dir))
152+
beef_server.mount("#{bp}/media", Rack::Files.new(media_dir))
153153

154154
# If we're not imitating a web server, mount the favicon to /favicon.ico
155155
# NOTE: this appears to be broken

0 commit comments

Comments
 (0)