gem rackの脆弱性CVE-2022-30122, CVE-2022-30123について
CVE-2022-30122
アナウンス
概要
以下の処理を使用している場合にrackでMIMEのパースを行う際に使用している正規表現でReDoSが可能。
Rack::Multipart.parse_multipart
request.POST
request.params
修正コミット
CVE-2022-30123
アナウンス
概要
以下のrack middlewareの処理の中でリクエストのパース処理に脆弱性がありOSコマンドインジェクションが可能
Rack::Lint
Rack::CommonLogger
修正コミット
Rack::Lint
call
メソッドで指定されたOOPS?\b!
がエスケープされて/OOPS\?\\/
になっている
lambda {
Rack::Lint.new(nil).call(env("REQUEST_METHOD" => "OOPS?\b!"))
}.must_raise(Rack::Lint::LintError).
message.must_match(/OOPS\?\\/)
Rack::CommonLogger
request
メソッドの引数で指定されるGET\
が エスケープされて/GET\\x8
になっている
it "escapes non printable characters except newline" do
logdev = StringIO.new
log = Logger.new(logdev)
Rack::MockRequest.new(Rack::CommonLogger.new(app_without_lint, log)).request("GET\b", "/hello")
logdev.string.must_match(/GET\\x8 \/hello HTTP\/1\.1/)
end