{"id":"CVE-2009-2422","aliases":["DEBIAN-CVE-2009-2422","EUVD-2017-0307","GHSA-rxq3-gm4p-5fj4"],"status":"published","title":"rails vulnerable to improper authentication","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.03377,"percentile":0.88851,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-287"],"published":"2009-07-10T15:00:00Z","modified":"2026-10-23T18:00:51Z","fixes":[{"ecosystem":"RubyGems","package":"rails","fixed_in":["2.3.3"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"rails","fixed_in":["2.3.5-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"rails","fixed_in":["2.3.5-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"rails","fixed_in":["2.3.5-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"rails","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.3"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"rails","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.5-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"rails","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.5-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"rails","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.5-1"}]}]},{"source":"osv","ecosystem":"RubyGems","package":"rails","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.3.3"}]}],"versions":["0.10.0","0.10.1","0.11.0","0.11.1","0.12.0","0.12.1","0.13.0","0.13.1","0.14.1","0.14.2","0.14.3","0.14.4","0.8.0","0.8.5","0.9.0","0.9.1","0.9.2","0.9.3","0.9.4","0.9.4.1","0.9.5","1.0.0","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","2.0.0","2.0.1","2.0.2","2.0.4","2.0.5","2.1.0","2.1.1","2.1.2","2.2.2","2.2.3","2.3.2"]}],"products":[{"vendor":"apple","product":"mac_os_x"},{"vendor":"apple","product":"mac_os_x_server"},{"vendor":"rubyonrails","product":"ruby_on_rails"}],"references":[{"url":"http://secunia.com/advisories/35702","tags":["third-party-advisory","x_refsource_SECUNIA","x_transferred","Broken Link","Vendor Advisory","advisory"]},{"url":"http://www.securityfocus.com/bid/35579","tags":["vdb-entry","x_refsource_BID","x_transferred","Broken Link","Patch","Third Party Advisory","VDB Entry","advisory","fix","web"]},{"url":"http://lists.apple.com/archives/security-announce/2010//Mar/msg00001.html","tags":["vendor-advisory","x_refsource_APPLE","x_transferred","Mailing List","article","web"]},{"url":"http://weblog.rubyonrails.org/2009/6/3/security-problem-with-authenticate_with_http_digest","tags":["x_refsource_CONFIRM","x_transferred","Patch","fix","web"]},{"url":"http://www.vupen.com/english/advisories/2009/1802","tags":["vdb-entry","x_refsource_VUPEN","x_transferred","Broken Link","Patch","Vendor Advisory","advisory","fix"]},{"url":"http://support.apple.com/kb/HT4077","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"http://n8.tumblr.com/post/117477059/security-hole-found-in-rails-2-3s","tags":["x_refsource_MISC","x_transferred","Exploit","Patch","evidence","fix","web"]},{"url":"https://exchange.xforce.ibmcloud.com/vulnerabilities/51528","tags":["vdb-entry","x_refsource_XF","x_transferred","Third Party Advisory","VDB Entry","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2009-2422","tags":["advisory"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rails/CVE-2009-2422.yml","tags":["web"]},{"url":"https://web.archive.org/web/20090711160153/http://secunia.com/advisories/35702","tags":["web"]},{"url":"https://web.archive.org/web/20200229192617/http://www.securityfocus.com/bid/35579","tags":["web"]},{"url":"https://github.com/advisories/GHSA-rxq3-gm4p-5fj4"},{"url":"https://security-tracker.debian.org/tracker/CVE-2009-2422","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2009-2422","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2009-07-10T15:00:00Z","modified":"2024-08-07T05:52:14.795Z","updated_at":"2026-11-02T14:33:23.041383Z"}],"euvd":[{"id":"EUVD-2017-0307","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2009-07-10T15:00:00Z","modified":"2024-08-07T05:52:14Z","updated_at":"2026-11-03T01:39:17.005545Z"}],"ghsa":[{"id":"GHSA-rxq3-gm4p-5fj4","title":"rails vulnerable to improper authentication","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2017-10-24T18:33:38Z","modified":"2024-02-13T19:37:19Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:37:38.20753Z"}],"nvd":[{"id":"CVE-2009-2422","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2009-07-10T15:30:00.25Z","modified":"2026-06-16T23:09:25.1Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:01:36.200173Z"}],"osv":[{"id":"CVE-2009-2422","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2009-07-10T15:30:00Z","modified":"2026-04-10T03:40:50.867616Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:43:57.714116Z"},{"id":"DEBIAN-CVE-2009-2422","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2009-07-10T15:30:00.25Z","modified":"2026-10-23T18:00:51.783320649Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:24.013654Z"},{"id":"GHSA-rxq3-gm4p-5fj4","title":"rails vulnerable to improper authentication","description":"The example code for the digest authentication functionality (http_authentication.rb) in Ruby on Rails before 2.3.3 defines an authenticate_or_request_with_http_digest block that returns nil instead of false when the user does not exist, which allows context-dependent attackers to bypass authentication for applications that are derived from this example by sending an invalid username without a password.","status":"published","published":"2017-10-24T18:33:38Z","modified":"2024-02-16T08:14:01.612807Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T15:46:56.639206Z"}]}}
