In OpenStack Swift before 2.38.2, the tempurl middleware does not reject the X-Copy-From header on PUT requests. A TempURL signature only covers the method, expiry, and path, and thus the list of disallowed headers is the only defense against a signed PUT request changing what the request does. An attacker holding a PUT TempURL for a single object can add an X-Copy-From header naming any object in the same account; the copy middleware copies that object to the destination, and the attacker then reads the victim's data back with a GET TempURL for the destination object. Copies across account boundaries are rejected. Only deployments using the shipped default proxy pipeline (tempurl and copy middleware) with account-level TempURL keys are affected.
{
"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.1"
},
{
"binary_name": "swift",
"binary_version": "2.37.1-0ubuntu2.1"
},
{
"binary_name": "swift-account",
"binary_version": "2.37.1-0ubuntu2.1"
},
{
"binary_name": "swift-container",
"binary_version": "2.37.1-0ubuntu2.1"
},
{
"binary_name": "swift-object",
"binary_version": "2.37.1-0ubuntu2.1"
},
{
"binary_name": "swift-object-expirer",
"binary_version": "2.37.1-0ubuntu2.1"
},
{
"binary_name": "swift-proxy",
"binary_version": "2.37.1-0ubuntu2.1"
}
]
}