Active Storage allows users to attach cloud and local files in Rails applications. Prior to versions 8.1.2.1, 8.0.4.1, and 7.2.3.1, DirectUploadsController accepts arbitrary metadata from the client and persists it on the blob. Because internal flags like identified and analyzed are stored in the same metadata hash, a direct-upload client can set these flags to skip MIME detection and analysis. This allows an attacker to upload arbitrary content while claiming a safe content_type, bypassing any validations that rely on Active Storage's automatic content type identification. Versions 8.1.2.1, 8.0.4.1, and 7.2.3.1 contain a patch.
{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actioncable",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actionmailbox",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actiontext",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-activestorage",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:6.1.7.3+dfsg-3"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:6.1.7.3+dfsg-3"
}
]
}{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actioncable",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actionmailbox",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actiontext",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-activestorage",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:7.2.2.1+dfsg-7"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:7.2.2.1+dfsg-7"
}
]
}{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:4.2.6-1ubuntu0.1~esm2"
}
]
}{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:4.2.10-0ubuntu4+esm2"
}
]
}{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-actioncable",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-activestorage",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:5.2.3+dfsg-3ubuntu0.1~esm1"
}
]
}{
"binaries": [
{
"binary_name": "rails",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actioncable",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actionmailbox",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actionmailer",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actionpack",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actiontext",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-actionview",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-activejob",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-activemodel",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-activerecord",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-activestorage",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-activesupport",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-rails",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
},
{
"binary_name": "ruby-railties",
"binary_version": "2:6.1.4.1+dfsg-8ubuntu2+esm1"
}
]
}