In OpenStack Swift through 2.38.0, S3API middleware does not enforce that semantic x-amz-* headers are covered by the SigV4 signature on presigned URL requests. An attacker who obtains a presigned PUT URL can inject an unsigned X-Amz-Copy-Source header, causing Swift to perform a server-side copy from an arbitrary source object using the signer's authorization context. The attacker can read any object the signer has access to, provided the target project_id, container name, and object name are known. This affects all deployments using the default s3_acl=false configuration.
{
"binaries": [
{
"binary_name": "python-swift",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift-account",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift-container",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift-object",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.7.1-0ubuntu2"
}
]
}{
"binaries": [
{
"binary_name": "python-swift",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-account",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-container",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-object",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.17.1-0ubuntu1"
}
]
}{
"binaries": [
{
"binary_name": "python3-swift",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift-account",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift-container",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift-object",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.25.2-0ubuntu1.1"
}
]
}{
"binaries": [
{
"binary_name": "python3-swift",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift-account",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift-container",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift-object",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.29.2-0ubuntu1.1"
}
]
}{
"binaries": [
{
"binary_name": "python3-swift",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift-account",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift-container",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift-object",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.33.0-0ubuntu1.1"
}
]
}{
"binaries": [
{
"binary_name": "python3-swift",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-account",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-container",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-object",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.37.1-0ubuntu2"
}
]
}