Your message dated Tue, 29 Jan 2013 16:48:53 +0000
with message-id <e1u0emf-00048m...@franck.debian.org>
and subject line Bug#699270: fixed in glance 2012.1.1-4
has caused the Debian Bug report #699270,
regarding CVE-2013-0212: Backend password leak in Glance error message
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
699270: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699270
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: glance
Version: 2012.1.1-3
Severity: grave
Tags: upstream

Here's the advisory as I received it. Upload is following soon.

Title: Backend password leak in Glance error message
Reporter: Dan Prince (Red Hat)
Products: Glance
Affects: All versions

Dan Prince of Red Hat discovered an issue in Glance error reporting. By
creating an image in Glance by URL that references a mis-configured
Swift endpoint, or if the Swift endpoint that a previously-ACTIVE image
references for any reason becomes unusable, an authenticated user may
access the Glance operator's Swift credentials for that endpoint. Only
setups that use the single-tenant Swift store are affected.

Proposed patches:
See attached patches for current development tree (Grizzly) and the
Folsom and Essex series. Unless a flaw is discovered in them, these
proposed patches will be merged to Glance master, stable/folsom and
stable/essex branches on the public disclosure date.

CVE:
No CVE was assigned yet to those issues, so please let us know what we
should use.

Proposed public disclosure date/time:
*Tuesday January 29th, 1500UTC*
Please do not make the issue public (or release public patches) before
the coordinated embargo date.

Regards,

-- Thierry Carrez OpenStack Vulnerability Management Team


grizzly.patch

diff --git a/glance/store/swift.py b/glance/store/swift.py
index 2899fce..dfe3696 100644
--- a/glance/store/swift.py
+++ b/glance/store/swift.py
@@ -136,7 +136,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                        ", you need to change it to use the "
                        "swift+http:// scheme, like so: "
                        "swift+http://user:p...@authurl.com/v1/container/obj";)
-            LOG.debug(_("Invalid store uri %(uri)s: %(reason)s") % locals())
+            LOG.debug(_("Invalid store URI: %(reason)s") % locals())
             raise exception.BadStoreUri(message=reason)
 
         pieces = urlparse.urlparse(uri)
@@ -162,8 +162,7 @@ class StoreLocation(glance.store.location.StoreLocation):
         if creds:
             cred_parts = creds.split(':')
             if len(cred_parts) != 2:
-                reason = (_("Badly formed credentials '%(creds)s' in Swift "
-                            "URI") % locals())
+                reason = (_("Badly formed credentials in Swift URI."))
                 LOG.debug(reason)
                 raise exception.BadStoreUri()
             user, key = cred_parts
@@ -181,7 +180,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                 path_parts.insert(0, netloc)
                 self.auth_or_store_url = '/'.join(path_parts)
         except IndexError:
-            reason = _("Badly formed Swift URI: %s") % uri
+            reason = _("Badly formed Swift URI.")
             LOG.debug(reason)
             raise exception.BadStoreUri()
 
@@ -241,8 +240,8 @@ class BaseStore(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                           "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 
@@ -375,8 +374,7 @@ class BaseStore(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.CONFLICT:
                 raise exception.Duplicate(_("Swift already has an image at "
-                                            "location %s") %
-                                          location.get_uri())
+                                            "this location"))
             msg = (_("Failed to add object to Swift.\n"
                      "Got error from Swift: %(e)s") % locals())
             LOG.error(msg)
@@ -419,8 +417,8 @@ class BaseStore(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                           "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 
@@ -578,8 +576,8 @@ class MultiTenantStore(BaseStore):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                           "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 


folsom.patch

diff --git a/glance/store/swift.py b/glance/store/swift.py
index 59f0f57..64ef21b 100644
--- a/glance/store/swift.py
+++ b/glance/store/swift.py
@@ -136,7 +136,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                     "like so: "
                     "swift+http://user:p...@authurl.com/v1/container/obj";
                     )
-            LOG.error(_("Invalid store uri %(uri)s: %(reason)s") % locals())
+            LOG.error(_("Invalid store URI: %(reason)s") % locals())
             raise exception.BadStoreUri(message=reason)
 
         pieces = urlparse.urlparse(uri)
@@ -162,8 +162,7 @@ class StoreLocation(glance.store.location.StoreLocation):
         if creds:
             cred_parts = creds.split(':')
             if len(cred_parts) != 2:
-                reason = (_("Badly formed credentials '%(creds)s' in Swift "
-                            "URI") % locals())
+                reason = (_("Badly formed credentials in Swift URI."))
                 LOG.error(reason)
                 raise exception.BadStoreUri()
             user, key = cred_parts
@@ -181,7 +180,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                 path_parts.insert(0, netloc)
                 self.auth_or_store_url = '/'.join(path_parts)
         except IndexError:
-            reason = _("Badly formed Swift URI: %s") % uri
+            reason = _("Badly formed Swift URI.")
             LOG.error(reason)
             raise exception.BadStoreUri()
 
@@ -293,8 +292,8 @@ class Store(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_store_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                         "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 
@@ -543,7 +542,7 @@ class Store(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.CONFLICT:
                 raise exception.Duplicate(_("Swift already has an image at "
-                                          "location %s") % location.get_uri())
+                                          "this location."))
             msg = (_("Failed to add object to Swift.\n"
                      "Got error from Swift: %(e)s") % locals())
             LOG.error(msg)
@@ -596,8 +595,8 @@ class Store(glance.store.base.Store):
         except swiftclient.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_store_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                         "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 
@@ -637,8 +636,8 @@ class Store(glance.store.base.Store):
             except swiftclient.ClientException, e:
                 if e.http_status == httplib.NOT_FOUND:
                     uri = location.get_store_uri()
-                    raise exception.NotFound(_("Swift could not find image at "
-                                             "uri %(uri)s") % locals())
+                    msg = _("Swift could not find image at URI.")
+                    raise exception.NotFound(msg)
                 else:
                     raise
 


essex.patch

diff --git a/glance/store/swift.py b/glance/store/swift.py
index ae3a626..7d94d45 100644
--- a/glance/store/swift.py
+++ b/glance/store/swift.py
@@ -109,7 +109,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                     "like so: "
                     "swift+http://user:p...@authurl.com/v1/container/obj";
                     )
-            logger.error(_("Invalid store uri %(uri)s: %(reason)s") % locals())
+            logger.error(_("Invalid store URI: %(reason)s") % locals())
             raise exception.BadStoreUri()
 
         pieces = urlparse.urlparse(uri)
@@ -139,8 +139,7 @@ class StoreLocation(glance.store.location.StoreLocation):
             # the account and user. Combine them into a single username of
             # account:user
             if len(cred_parts) == 1:
-                reason = (_("Badly formed credentials '%(creds)s' in Swift "
-                            "URI") % locals())
+                reason = (_("Badly formed credentials in Swift URI."))
                 logger.error(reason)
                 raise exception.BadStoreUri()
             elif len(cred_parts) == 3:
@@ -161,7 +160,7 @@ class StoreLocation(glance.store.location.StoreLocation):
                 path_parts.insert(0, netloc)
                 self.authurl = '/'.join(path_parts)
         except IndexError:
-            reason = _("Badly formed Swift URI: %s") % uri
+            reason = _("Badly formed Swift URI.")
             logger.error(reason)
             raise exception.BadStoreUri()
 
@@ -265,8 +264,8 @@ class Store(glance.store.base.Store):
         except swift_client.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_store_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                         "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 
@@ -464,7 +463,7 @@ class Store(glance.store.base.Store):
         except swift_client.ClientException, e:
             if e.http_status == httplib.CONFLICT:
                 raise exception.Duplicate(_("Swift already has an image at "
-                                          "location %s") % location.get_uri())
+                                          "this location."))
             msg = (_("Failed to add object to Swift.\n"
                    "Got error from Swift: %(e)s") % locals())
             logger.error(msg)
@@ -513,8 +512,8 @@ class Store(glance.store.base.Store):
         except swift_client.ClientException, e:
             if e.http_status == httplib.NOT_FOUND:
                 uri = location.get_store_uri()
-                raise exception.NotFound(_("Swift could not find image at "
-                                         "uri %(uri)s") % locals())
+                msg = _("Swift could not find image at URI.")
+                raise exception.NotFound(msg)
             else:
                 raise
 

--- End Message ---
--- Begin Message ---
Source: glance
Source-Version: 2012.1.1-4

We believe that the bug you reported is fixed in the latest version of
glance, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 699...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Thomas Goirand <z...@debian.org> (supplier of updated glance package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Tue, 29 Jan 2013 15:56:12 +0000
Source: glance
Binary: python-glance glance-common glance-api glance-registry glance 
python-glance-doc
Architecture: source all
Version: 2012.1.1-4
Distribution: unstable
Urgency: high
Maintainer: PKG OpenStack <openstack-de...@lists.alioth.debian.org>
Changed-By: Thomas Goirand <z...@debian.org>
Description: 
 glance     - OpenStack Image Service - metapackage
 glance-api - OpenStack Image Service - API server
 glance-common - OpenStack Image Service - common files
 glance-registry - OpenStack Image Service - registry server
 python-glance - OpenStack Image Service - Python client library
 python-glance-doc - OpenStack Image Service - Python library documentation
Closes: 699270
Changes: 
 glance (2012.1.1-4) unstable; urgency=high
 .
   * CVE-2013-0212: Backend password leak in Glance error message. Note that
     only setups that use the single-tenant Swift store are affected.
     (Closes: #699270).
Checksums-Sha1: 
 b2efeb4c2f5e38481b856b0022e6c68df8590416 1971 glance_2012.1.1-4.dsc
 a4446e779f779ee16a617b75035dec0cce6524e8 26236 glance_2012.1.1-4.debian.tar.gz
 f65c4eebb2f7d5961ba7a6b4d2fcf2b20d392363 235512 
python-glance_2012.1.1-4_all.deb
 fd79b47a01770485968a6e4e48ed7ae7c0637841 27552 glance-common_2012.1.1-4_all.deb
 1d219e3d62a3c0b01a825cfba6770670e62a0875 25544 glance-api_2012.1.1-4_all.deb
 e5c825aa9c332f0dcd242d9c0586644da25655cf 14826 
glance-registry_2012.1.1-4_all.deb
 78d01e12ea5a0abadb83139388e82aefa3f25e43 5230 glance_2012.1.1-4_all.deb
 3c06e08079c021f5203783e70bbb218ca3b8f70a 137882 
python-glance-doc_2012.1.1-4_all.deb
Checksums-Sha256: 
 05c74cd9773c1677d68388af594d25952e4c474d07b45d1c08f652214133f586 1971 
glance_2012.1.1-4.dsc
 2026c93afd47f0f3ed173510a154fc7bf8ad670324e37544e6c5d8bfb8c52eb9 26236 
glance_2012.1.1-4.debian.tar.gz
 9433994a111dbb5a90dbda52382565aaf350b1120a935b8657eb64e251739f4b 235512 
python-glance_2012.1.1-4_all.deb
 e45624be73d0edc3aadee2cf4593ce74a4ad714a03572b3eb6e22b0633a6a103 27552 
glance-common_2012.1.1-4_all.deb
 09452d3e93e913db8a0702f183ade00fd6353130a9237c29fa04733dfb91e20c 25544 
glance-api_2012.1.1-4_all.deb
 04e070e737796222b250b928f12bac7e7ce50008166b781f448bab99a1631984 14826 
glance-registry_2012.1.1-4_all.deb
 c3ece30ef3f3ed06186ffb7a827455cbe2556b50da786729ab7cd6914730160d 5230 
glance_2012.1.1-4_all.deb
 918d692c265d07d543126c979757dc77a9dc9012961218e6deb9b02951caf1a7 137882 
python-glance-doc_2012.1.1-4_all.deb
Files: 
 acd739372fb3e0755f591f78847613db 1971 net extra glance_2012.1.1-4.dsc
 e675dc5076178e55950f44c9f1459fc8 26236 net extra 
glance_2012.1.1-4.debian.tar.gz
 7be23355675f4f054508e5c99669480b 235512 python extra 
python-glance_2012.1.1-4_all.deb
 ff24e7d3c9d507a16d55fe7a7b9b0201 27552 python extra 
glance-common_2012.1.1-4_all.deb
 81d131a25a79835e1d7bb8160df3c792 25544 python extra 
glance-api_2012.1.1-4_all.deb
 b2a69af1ca3f87b0bf0597755175fecb 14826 python extra 
glance-registry_2012.1.1-4_all.deb
 13ef49653fee9197186420d8848b01b4 5230 python extra glance_2012.1.1-4_all.deb
 be4368f15ed07ef8e463d549f66f512b 137882 doc extra 
python-glance-doc_2012.1.1-4_all.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlEH+2YACgkQl4M9yZjvmkmp1wCeIndL8yXElunSTsAoWScMP7HV
Y/sAnRbmzm+CwoDs2Ua6+K3lrYXEHLTc
=QtS8
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to