libsoup fails to validate certain Verisign certificates
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Glib Networking |
Fix Released
|
Medium
|
|||
glib-networking (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned |
Bug Description
[Impact]
Some SSL certificates which can legitimately be verified using known CAs will fail to verify due to wrong root certificates bundled with them over the wire.
[Test Case]
- run the reproducer script from comment #1
*or*
- purchase something inside software-center that uses the "3dsecure" system to authenticate the credit card
Verisign shipped G1 PCA Roots with md2 signatures on them. At some point, they
resigned those same roots using SHA1.
[Regression potential]
Minimal; the code path only changes behavior if the self-signed check fails, falling back to checking against certificates in the local database.
See discussion here:
https:/
In Ubuntu, the Verisign md2 certs do not ship in the system CA certs bundle, as
the sha1 certs are being shipped instead. SSL libraries are supposed to verify
certs with the sha1 G1 PCA Root just fine, even if the web site sends the md2
G1 PCA Root as part of the cert bundle.
You can test this by using the following command:
gnutls-cli --x509cafile /etc/ssl/
secure-
In older versions of libsoup, such as 2.36.1, this worked fine. Since libsoup
2.37.1, this is no longer working correctly. It seems glib-networking
gtlsfiledatabas
attempting to validate the whole DER, which wouldn't properly accept the sha1
cert for validation.
Attached is a reproducer. It will first attempt to validate the web site cert
using the old md2 Root, and then will attempt with the sha1 Root. Both should
succeed. With libsoup > 2.37, the sha1 Root fails verification.
Changed in glib-networking: | |
importance: | Unknown → Medium |
status: | Unknown → New |
tags: | added: patch |
description: | updated |
Changed in glib-networking (Ubuntu): | |
importance: | Undecided → High |
Changed in glib-networking (Ubuntu Precise): | |
importance: | Undecided → High |
Changed in glib-networking (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in glib-networking (Ubuntu Precise): | |
status: | New → In Progress |
Changed in glib-networking: | |
status: | New → Fix Released |
tags: | added: ca-escalated |
tags: | added: os-support |
I confirmed this.
Status: Undecided -> Confirmed,