{"schemaVersion":3,"id":"CVE-2013-3221","aliases":["DEBIAN-CVE-2013-3221","GHSA-f57c-hx33-hvh8"],"status":"published","duplicateOf":null,"title":null,"description":"The Active Record component in Ruby on Rails 2.3.x, 3.0.x, 3.1.x, and 3.2.x does not ensure that the declared data type of a database column is used during comparisons of input values to stored values in that column, which makes it easier for remote attackers to conduct data-type injection attacks against Ruby on Rails applications via a crafted value, as demonstrated by unintended interaction between the \"typed XML\" feature and a MySQL database.","dates":{"published":"2013-04-22T01:00:00.000Z","modified":"2024-08-06T16:00:10.162Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.4,"severity":"medium","version":"2.0","versionLabel":"v2.0","source":"NVD","vector":"AV:N/AC:L/Au:N/C:P/I:P/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"2.0","versionLabel":"v2.0","source":"NVD","score":6.4,"severity":"medium","vector":"AV:N/AC:L/Au:N/C:P/I:P/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Rubygems","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":true}]},"epss":{"probability":0.01962,"percentile":0.80038,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":0,"baselineDate":"2026-09-19T00:00:00.000Z","baselineScore":0.01962},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01962,"percentile":0.80038}],"last30":[{"date":"2026-09-19T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.01962,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.01962,"percentile":0.80038}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"REF_814CC9AC514AD533","name":"Exploit Reference (phenoelit.org)","source":"reference","url":"http://www.phenoelit.org/blog/archives/2013/02/index.html","maturity":"unknown","reliabilityScore":0.2,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null}],"exploitCount":1,"weaknesses":[{"id":"CWE-20","name":"Improper Input Validation","description":"The product receives input or data, but it does\n        not validate or incorrectly validates that the input has the\n        properties that are required to process the data safely and\n        correctly.","type":"weakness","status":"Stable","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/20.html"}],"affected":[{"vendor":"debian","product":"rails","name":"rails","label":"rails","ecosystem":"Debian","cpePart":null,"purl":"pkg:deb/debian/rails","purlType":"deb","versions":[{"text":"< 2.3.14.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 2.3.14.1","eol":null,"hubHref":null},{"vendor":"RubyGems","product":"activerecord","name":"activerecord","label":"activerecord","ecosystem":"RubyGems","cpePart":null,"purl":"pkg:gem/activerecord","purlType":"gem","versions":[{"text":"< 4.2.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 4.2.0","eol":null,"hubHref":null},{"vendor":"rubyonrails","product":"rails","name":"rails","label":"rails","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"2.3.0","noFixRecorded":false,"fixedIn":null},{"text":"2.3.1","noFixRecorded":false,"fixedIn":null},{"text":"2.3.2","noFixRecorded":false,"fixedIn":null},{"text":"2.3.3","noFixRecorded":false,"fixedIn":null},{"text":"2.3.4","noFixRecorded":false,"fixedIn":null},{"text":"2.3.9","noFixRecorded":false,"fixedIn":null},{"text":"2.3.10","noFixRecorded":false,"fixedIn":null},{"text":"2.3.11","noFixRecorded":false,"fixedIn":null},{"text":"2.3.12","noFixRecorded":false,"fixedIn":null},{"text":"2.3.13","noFixRecorded":false,"fixedIn":null},{"text":"2.3.14","noFixRecorded":false,"fixedIn":null},{"text":"2.3.15","noFixRecorded":false,"fixedIn":null},{"text":"2.3.16","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:beta","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:beta2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:beta3","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:beta4","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:rc","noFixRecorded":false,"fixedIn":null},{"text":"3.0.0:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.1:pre","noFixRecorded":false,"fixedIn":null},{"text":"3.0.2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.2:pre","noFixRecorded":false,"fixedIn":null},{"text":"3.0.3","noFixRecorded":false,"fixedIn":null},{"text":"3.0.4:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.5","noFixRecorded":false,"fixedIn":null},{"text":"3.0.5:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.6","noFixRecorded":false,"fixedIn":null},{"text":"3.0.6:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.6:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.7","noFixRecorded":false,"fixedIn":null},{"text":"3.0.7:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.7:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.8","noFixRecorded":false,"fixedIn":null},{"text":"3.0.8:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.8:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.8:rc3","noFixRecorded":false,"fixedIn":null},{"text":"3.0.8:rc4","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9:rc3","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9:rc4","noFixRecorded":false,"fixedIn":null},{"text":"3.0.9:rc5","noFixRecorded":false,"fixedIn":null},{"text":"3.0.10","noFixRecorded":false,"fixedIn":null},{"text":"3.0.10:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.11","noFixRecorded":false,"fixedIn":null},{"text":"3.0.12","noFixRecorded":false,"fixedIn":null},{"text":"3.0.12:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.13","noFixRecorded":false,"fixedIn":null},{"text":"3.0.13:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.0.14","noFixRecorded":false,"fixedIn":null},{"text":"3.0.16","noFixRecorded":false,"fixedIn":null},{"text":"3.0.17","noFixRecorded":false,"fixedIn":null},{"text":"3.0.18","noFixRecorded":false,"fixedIn":null},{"text":"3.0.19","noFixRecorded":false,"fixedIn":null},{"text":"3.0.20","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:beta1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc3","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc4","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc5","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc6","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc7","noFixRecorded":false,"fixedIn":null},{"text":"3.1.0:rc8","noFixRecorded":false,"fixedIn":null},{"text":"3.1.1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.1:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.1:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.1.1:rc3","noFixRecorded":false,"fixedIn":null},{"text":"3.1.2","noFixRecorded":false,"fixedIn":null},{"text":"3.1.2:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.2:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.1.3","noFixRecorded":false,"fixedIn":null},{"text":"3.1.4","noFixRecorded":false,"fixedIn":null},{"text":"3.1.4:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.5","noFixRecorded":false,"fixedIn":null},{"text":"3.1.5:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.1.6","noFixRecorded":false,"fixedIn":null},{"text":"3.1.7","noFixRecorded":false,"fixedIn":null},{"text":"3.1.8","noFixRecorded":false,"fixedIn":null},{"text":"3.1.9","noFixRecorded":false,"fixedIn":null},{"text":"3.1.10","noFixRecorded":false,"fixedIn":null},{"text":"3.2.0","noFixRecorded":false,"fixedIn":null},{"text":"3.2.0:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.2.0:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.2.1","noFixRecorded":false,"fixedIn":null},{"text":"3.2.2","noFixRecorded":false,"fixedIn":null},{"text":"3.2.2:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.2.3","noFixRecorded":false,"fixedIn":null},{"text":"3.2.3:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.2.3:rc2","noFixRecorded":false,"fixedIn":null},{"text":"3.2.4","noFixRecorded":false,"fixedIn":null},{"text":"3.2.4:rc1","noFixRecorded":false,"fixedIn":null},{"text":"3.2.5","noFixRecorded":false,"fixedIn":null},{"text":"3.2.6","noFixRecorded":false,"fixedIn":null},{"text":"3.2.7","noFixRecorded":false,"fixedIn":null},{"text":"3.2.8","noFixRecorded":false,"fixedIn":null},{"text":"3.2.9","noFixRecorded":false,"fixedIn":null},{"text":"3.2.10","noFixRecorded":false,"fixedIn":null},{"text":"3.2.11","noFixRecorded":false,"fixedIn":null}],"versionsText":"2.3.0 | 2.3.1 | 2.3.2 | 2.3.3 | 2.3.4 | 2.3.9 | 2.3.10 | 2.3.11 | 2.3.12 | 2.3.13 | 2.3.14 | 2.3.15 | 2.3.16 | 3.0.0 | 3.0.0:beta | 3.0.0:beta2 | 3.0.0:beta3 | 3.0.0:beta4 | 3.0.0:rc | 3.0.0:rc2 | 3.0.1 | 3.0.1:pre | 3.0.2 | 3.0.2:pre | 3.0.3 | 3.0.4:rc1 | 3.0.5 | 3.0.5:rc1 | 3.0.6 | 3.0.6:rc1 | 3.0.6:rc2 | 3.0.7 | 3.0.7:rc1 | 3.0.7:rc2 | 3.0.8 | 3.0.8:rc1 | 3.0.8:rc2 | 3.0.8:rc3 | 3.0.8:rc4 | 3.0.9 | 3.0.9:rc1 | 3.0.9:rc2 | 3.0.9:rc3 | 3.0.9:rc4 | 3.0.9:rc5 | 3.0.10 | 3.0.10:rc1 | 3.0.11 | 3.0.12 | 3.0.12:rc1 | 3.0.13 | 3.0.13:rc1 | 3.0.14 | 3.0.16 | 3.0.17 | 3.0.18 | 3.0.19 | 3.0.20 | 3.1.0 | 3.1.0:beta1 | 3.1.0:rc1 | 3.1.0:rc2 | 3.1.0:rc3 | 3.1.0:rc4 | 3.1.0:rc5 | 3.1.0:rc6 | 3.1.0:rc7 | 3.1.0:rc8 | 3.1.1 | 3.1.1:rc1 | 3.1.1:rc2 | 3.1.1:rc3 | 3.1.2 | 3.1.2:rc1 | 3.1.2:rc2 | 3.1.3 | 3.1.4 | 3.1.4:rc1 | 3.1.5 | 3.1.5:rc1 | 3.1.6 | 3.1.7 | 3.1.8 | 3.1.9 | 3.1.10 | 3.2.0 | 3.2.0:rc1 | 3.2.0:rc2 | 3.2.1 | 3.2.2 | 3.2.2:rc1 | 3.2.3 | 3.2.3:rc1 | 3.2.3:rc2 | 3.2.4 | 3.2.4:rc1 | 3.2.5 | 3.2.6 | 3.2.7 | 3.2.8 | 3.2.9 | 3.2.10 | 3.2.11","eol":{"isEol":null,"eolDate":null,"matchMethod":"cpe","cycle":null,"product":{"name":"rails","label":"Ruby on Rails","category":"framework"}},"hubHref":"/vendor/rubyonrails/rails"},{"vendor":"rubyonrails","product":"ruby_on_rails","name":"ruby on rails","label":"ruby_on_rails","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"3.0.4","noFixRecorded":false,"fixedIn":null}],"versionsText":"3.0.4","eol":null,"hubHref":"/vendor/rubyonrails/ruby_on_rails"}],"affectedCount":4,"eol":{"hasEol":false,"count":0},"references":[{"url":"http://pl.reddit.com/r/netsec/comments/17yajp/mysql_madness_and_rails/","label":"pl.reddit.com/r/netsec/comments/17yajp/mysql_madness_and_rails/","hostname":"pl.reddit.com","tags":["X Refsource MISC"]},{"url":"https://groups.google.com/group/rubyonrails-security/msg/1f3bc0b88a60c1ce?dmode=source&output=gplain","label":"groups.google.com/group/rubyonrails-security/msg/1f3bc0b88a60c1ce?dmode=source&output=gplain","hostname":"groups.google.com","tags":["Mailing List","X Refsource MLIST","WEB"]},{"url":"http://www.phenoelit.org/blog/archives/2013/02/index.html","label":"www.phenoelit.org/blog/archives/2013/02/index.html","hostname":"www.phenoelit.org","tags":["X Refsource MISC","Exploit"]},{"url":"http://openwall.com/lists/oss-security/2013/04/24/7","label":"openwall.com/lists/oss-security/2013/04/24/7","hostname":"openwall.com","tags":["Mailing List","X Refsource MLIST","WEB"]},{"url":"https://gist.github.com/dakull/5442275","label":"gist.github.com/dakull/5442275","hostname":"gist.github.com","tags":["X Refsource CONFIRM"]},{"url":"http://openwall.com/lists/oss-security/2013/02/06/7","label":"openwall.com/lists/oss-security/2013/02/06/7","hostname":"openwall.com","tags":["Mailing List","X Refsource MLIST","WEB"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2013-3221","label":"security-tracker.debian.org/tracker/CVE-2013-3221","hostname":"security-tracker.debian.org","tags":["Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2013-3221","label":"nvd.nist.gov/vuln/detail/CVE-2013-3221","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/rails/rails","label":"github.com/rails/rails","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/activerecord/CVE-2013-3221.yml","label":"github.com/rubysec/ruby-advisory-db/blob/master/gems/activerecord/CVE-2013-3221.yml","hostname":"github.com","tags":["WEB"]},{"url":"https://web.archive.org/web/20130825191249/http://www.phenoelit.org/blog/archives/2013/02/index.html","label":"web.archive.org/web/20130825191249/http://www.phenoelit.org/blog/archives/2013/02/index.html","hostname":"web.archive.org","tags":["WEB"]},{"url":"http://pl.reddit.com/r/netsec/comments/17yajp/mysql_madness_and_rails","label":"pl.reddit.com/r/netsec/comments/17yajp/mysql_madness_and_rails","hostname":"pl.reddit.com","tags":["WEB"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2013-04-22T01:00:00.000Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2024-08-06T16:00:10.162Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":36,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-19T14:42:54.428Z","stale":false,"partial":false}}