[OSSA 2016-004] Swift proxy memory leak on unfinished read (CVE-2016-0738)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Critical
|
Unassigned | ||
OpenStack Security Advisory |
Fix Released
|
Undecided
|
Unassigned | ||
Ubuntu Cloud Archive |
Invalid
|
High
|
Unassigned | ||
Icehouse |
Won't Fix
|
Undecided
|
Unassigned | ||
Kilo |
Won't Fix
|
Undecided
|
Unassigned | ||
Liberty |
Won't Fix
|
Undecided
|
Unassigned | ||
Mitaka |
Fix Released
|
Undecided
|
Unassigned | ||
swift (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Wily |
Won't Fix
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Yakkety |
Fix Released
|
High
|
Unassigned |
Bug Description
It looks like the Swift proxy will leak memory if the connection is closed and the full response is not read. This opens for a potential DoS attacks.
Reproduce:
$ swift -A http://
$ curl -H'X-Auth-Token: AUTH_...' "http://
Repeat the curl command a couple of times and you will have more information in netstat and sockstat. The important part is the -m which sets the max time curl spends at downloading. After that point, it'll close the connection.
$ sudo netstat -ant -p | grep :6000
$ cat /proc/net/sockstat
tcp 0 0 127.0.0.1:6000 0.0.0.0:* LISTEN 1358/python
tcp 0 43221 127.0.0.1:6000 127.0.0.1:48350 FIN_WAIT1 -
tcp 0 43221 127.0.0.1:6000 127.0.0.1:48882 FIN_WAIT1 -
tcp 939820 0 127.0.0.1:48350 127.0.0.1:6000 ESTABLISHED 17897/python
tcp 939820 0 127.0.0.1:48882 127.0.0.1:6000 ESTABLISHED 17890/python
tcp 983041 0 127.0.0.1:48191 127.0.0.1:6000 CLOSE_WAIT 17897/python
tcp 983041 0 127.0.0.1:48948 127.0.0.1:6000 CLOSE_WAIT 17892/python
Restarting the proxy frees up the lingering memory.
This problem did not exist in 2.2.0.
ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: swift 2.2.2-0ubuntu1~
ProcVersionSign
Uname: Linux 3.16.0-48-generic x86_64
ApportVersion: 2.14.1-0ubuntu3.12
Architecture: amd64
CrashDB:
{
}
Date: Tue Sep 8 09:55:05 2015
InstallationDate: Installed on 2015-06-22 (77 days ago)
InstallationMedia: Ubuntu-Server 14.04.2 LTS "Trusty Tahr" - Release amd64 (20150218.1)
PackageArchitec
SourcePackage: swift
UpgradeStatus: No upgrade log present (probably fresh install)
Changed in cloud-archive: | |
importance: | Undecided → Critical |
importance: | Critical → High |
Changed in swift (Ubuntu): | |
importance: | Undecided → High |
Changed in swift: | |
status: | New → Confirmed |
Changed in ossa: | |
status: | Incomplete → Confirmed |
Changed in swift: | |
importance: | Undecided → Critical |
summary: |
- Swift proxy memory leak on unfinished read + Swift proxy memory leak on unfinished read (CVE-2016-0738) |
Changed in ossa: | |
status: | In Progress → Fix Committed |
description: | updated |
information type: | Private Security → Public Security |
summary: |
- Swift proxy memory leak on unfinished read (CVE-2016-0738) + [OSSA 2016-004] Swift proxy memory leak on unfinished read + (CVE-2016-0738) |
Changed in ossa: | |
status: | Fix Committed → Fix Released |
Changed in swift (Ubuntu): | |
status: | Confirmed → Fix Released |
Changed in swift (Ubuntu): | |
status: | Fix Released → Confirmed |
Changed in swift (Ubuntu Yakkety): | |
status: | Confirmed → Fix Released |
Changed in swift (Ubuntu Xenial): | |
status: | New → Fix Released |
Changed in swift (Ubuntu Wily): | |
status: | New → Triaged |
Changed in swift (Ubuntu Vivid): | |
status: | New → Won't Fix |
Changed in swift (Ubuntu Trusty): | |
status: | New → Triaged |
no longer affects: | swift (Ubuntu Vivid) |
Changed in cloud-archive: | |
status: | New → Invalid |
Changed in swift (Ubuntu Wily): | |
status: | Triaged → Won't Fix |
Changed in swift (Ubuntu Trusty): | |
status: | Triaged → Won't Fix |
status: | Won't Fix → New |
importance: | Undecided → High |
Since this report concerns a possible security risk, an incomplete security advisory task has been added while the core security reviewers for the affected project or projects confirm the bug and discuss the scope of any vulnerability along with potential solutions.