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 projectid, container name, and object name are known. This affects all deployments using the default s3acl=false configuration.
{
"binaries": [
{
"binary_version": "2.7.1-0ubuntu2",
"binary_name": "python-swift"
},
{
"binary_version": "2.7.1-0ubuntu2",
"binary_name": "swift"
},
{
"binary_name": "swift-account",
"binary_version": "2.7.1-0ubuntu2"
},
{
"binary_version": "2.7.1-0ubuntu2",
"binary_name": "swift-container"
},
{
"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_version": "2.17.1-0ubuntu1",
"binary_name": "swift-container"
},
{
"binary_version": "2.17.1-0ubuntu1",
"binary_name": "swift-object"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.17.1-0ubuntu1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.17.1-0ubuntu1"
}
]
}{
"binaries": [
{
"binary_version": "2.25.2-0ubuntu1.1",
"binary_name": "python3-swift"
},
{
"binary_name": "swift",
"binary_version": "2.25.2-0ubuntu1.1"
},
{
"binary_version": "2.25.2-0ubuntu1.1",
"binary_name": "swift-account"
},
{
"binary_version": "2.25.2-0ubuntu1.1",
"binary_name": "swift-container"
},
{
"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_version": "2.29.2-0ubuntu1.1",
"binary_name": "python3-swift"
},
{
"binary_name": "swift",
"binary_version": "2.29.2-0ubuntu1.1"
},
{
"binary_version": "2.29.2-0ubuntu1.1",
"binary_name": "swift-account"
},
{
"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_version": "2.33.0-0ubuntu1.1",
"binary_name": "python3-swift"
},
{
"binary_name": "swift",
"binary_version": "2.33.0-0ubuntu1.1"
},
{
"binary_version": "2.33.0-0ubuntu1.1",
"binary_name": "swift-account"
},
{
"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_version": "2.37.1-0ubuntu2",
"binary_name": "python3-swift"
},
{
"binary_version": "2.37.1-0ubuntu2",
"binary_name": "swift"
},
{
"binary_version": "2.37.1-0ubuntu2",
"binary_name": "swift-account"
},
{
"binary_name": "swift-container",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_name": "swift-object",
"binary_version": "2.37.1-0ubuntu2"
},
{
"binary_version": "2.37.1-0ubuntu2",
"binary_name": "swift-object-expirer"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.37.1-0ubuntu2"
}
]
}