Security
HTTPS interception in Nokia's mobile browser
When using encrypted communication, users are at the mercy of the software that implements the cryptography. That generally works out reasonably well; users are only exposed to inadvertent bugs present in the code. But a recent report shows that sometimes using encryption may not actually result in more secure communication—such security depends on having tools that are actually trying to do what is expected of them.
When a user visits an HTTPS site, they expect their browser to use an encrypted connection between it and the web site. Truthfully, many users are not technically sophisticated enough to understand that, but they have been (hopefully) trained to trust in the "lock" icon or other user interface elements that indicate a secure connection. Whether the user knows that means "encryption" or not depends on their level of technical savvy, but they almost certainly don't expect their secure data to be sent to a third-party server. But that's evidently what Nokia's Xpress mobile browser has been doing.
HTTPS traffic is encrypted using keys that get exchanged between the destination server and client browser. A public key is contained in a server certificate that is signed by someone—typically a certificate authority (CA). The signature asserts that the key belongs to that server name. The public key is then used to encrypt and exchange session keys that are subsequently used to encrypt the session. The CA is integral to the web browser trust model; keys that don't validate under that model (e.g. keys signed by unknown or untrusted CAs, server names that do not match, etc.) are expected to cause some kind of alert from the browser.
So it came as something of a surprise to security researcher Guarang Pandya that both regular HTTP and encrypted HTTPS traffic were being re-routed when using the Xpress browser. Worse yet, the certificate presented for any site visited was not that of the site in question, it was, instead, an ovi.com certificate. Ovi is Nokia's "brand" for its internet services.
From some angles, this looks like a classic "man-in-the-middle" attack, but because the browser is complicit, Steve Schultze of the "Freedom to Tinker" blog calls it a "man-in-the-client". The man in the client is accepting a certificate for a Nokia proxy server instead of the site the user wanted to connect to, without notifying the user. Meanwhile, the man in the middle lives at the Nokia proxy server, which is making a connection to the desired destination.
The proxy is used to speed up mobile browsing by using compression. It is similar to what is done by the Opera Mini browser, which Pandya also noted in his first report. But, Nokia was also using the proxy for HTTPS traffic, which meant that it was decrypting the incoming stream at the proxy and re-encrypting it, using the real destination's key, before sending it onward.
Decrypting the HTTPS traffic from the mobile browser was not necessarily required, depending on how Nokia implemented things. It could have just relayed the traffic between the two endpoints by tunneling the traffic inside a client-to-proxy session. That would not have required decrypting the traffic, but it also would not have allowed the proxy to do its compression on the data, obviating the need for the proxy.
Nokia, however, admitted that it decrypted the traffic in a comment by Mark Durrant on Pandya's post:
The "secure manner" phrase does not completely reassure, but this does not
really look like an attempt to (knowingly) invade users' privacy.
Durrant noted that Nokia has "implemented appropriate
organizational and technical measures to prevent access to private
information
". It seems quite likely that this was simply a misstep
by the company—one that could lead to a loss of privacy for Xpress users.
That interpretation seems to be borne out by changes that Nokia made to the Xpress browser after Pandya's report. After a browser update, Pandya noted that HTTPS sessions were not being handled in the same way. The HTTPS traffic is now tunneled over an HTTP connection to Nokia's servers, and the certificate being used (at least as reported by the browser) is the proper one for the destination. So, only the destination endpoint should be able to decrypt the data. Given that, though, it's not clear why the proxy is not just bypassed for HTTPS traffic.
The "welcome" notice that comes when installing the Xpress browser does make note of HTTPS decryption, though Schultze wonders how long that's been true, but certainly doesn't fully describe what's going on. Many users are likely to gloss over that statement—or not understand it at all. While web compression is a helpful feature for some users, it shouldn't come at the expense of reasonable security and privacy expectations.
As more of our traffic moves into "the cloud", we will be seeing more of these kinds of problems. Investigations like Pandya's will be needed to ensure that we at least know this type of network manipulation is occurring. Open source mobile operating systems (or even just open source browsers on proprietary systems) make it easier to find and eliminate this kind of mistake, but vigilance is needed there as well. Reviewing the code and ensuring that the "app" corresponds to the code reviewed are still required. With open source, though, we can peek inside the black box, which should make things easier—though not foolproof.
Brief items
Security quotes of the week
New vulnerabilities
freeradius2: authentication bypass
| Package(s): | freeradius2 | CVE #(s): | CVE-2011-4966 | ||||||||||||||||||||||||||||
| Created: | January 17, 2013 | Updated: | February 7, 2013 | ||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory: It was found that the "unix" module ignored the password expiration setting in "/etc/shadow". If FreeRADIUS was configured to use this module for user authentication, this flaw could allow users with an expired password to successfully authenticate, even though their access should have been denied. (CVE-2011-4966) | ||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||
ganglia: PHP script execution
| Package(s): | ganglia | CVE #(s): | CVE-2012-3448 | ||||||||
| Created: | January 22, 2013 | Updated: | January 23, 2013 | ||||||||
| Description: | From the Debian advisory:
Insufficient input sanitization in Ganglia, a web based monitoring system, could lead to remote PHP script execution with permissions of the user running the web browser. | ||||||||||
| Alerts: |
| ||||||||||
httpd: multiple vulnerabilities
| Package(s): | httpd | CVE #(s): | CVE-2008-0455 CVE-2008-0456 | ||||||||||||||||||||||||
| Created: | January 17, 2013 | Updated: | February 12, 2013 | ||||||||||||||||||||||||
| Description: | From the Scientific Linux advisory: Input sanitization flaws were found in the mod_negotiation module. A remote attacker able to upload or create files with arbitrary names in a directory that has the MultiViews options enabled, could use these flaws to conduct cross-site scripting and HTTP response splitting attacks against users visiting the site. (CVE-2008-0455, CVE-2008-0456) | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
kernel: denial of service
| Package(s): | linux | CVE #(s): | CVE-2012-5532 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | January 18, 2013 | Updated: | May 13, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Ubuntu advisory: Florian Weimer discovered that hypervkvpd, which is distributed in the Linux kernel, was not correctly validating source addresses of netlink packets. An untrusted local user can cause a denial of service by causing hypervkvpd to exit. (CVE-2012-5532) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kernel: denial of service
| Package(s): | kernel | CVE #(s): | CVE-2013-0190 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | January 21, 2013 | Updated: | March 15, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla:
A flaw was found in the way xen_failsafe_callback() handled failed iret, which causes the stack pointer to be wrong when entering the iret_exc error path. An unprivileged local guest user in the 32-bit PV Xen domain could use this flaw to crash the guest. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kernel: information disclosure
| Package(s): | kernel | CVE #(s): | CVE-2012-4467 | ||||||||||||||||||||
| Created: | January 18, 2013 | Updated: | January 23, 2013 | ||||||||||||||||||||
| Description: | From the Mageia advisory: Commit 644595f89620 ("compat: Handle COMPAT_USE_64BIT_TIME in net/socket.c") introduced a bug where the helper functions to take either a 64-bit or compat time[spec|val] got the arguments in the wrong order, passing the kernel stack pointer off as a user pointer (and vice versa). Because of the user address range check, that in turn then causes an EFAULT due to the user pointer range checking failing for the kernel address. Incorrectly resuling in a failed system call for 32-bit processes with a 64-bit kernel. On odder architectures like HP-PA (with separate user/kernel address spaces), it can be used read kernel memory. | ||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||
movabletype-opensource: command/SQL injection
| Package(s): | movabletype-opensource | CVE #(s): | CVE-2013-0209 | ||||
| Created: | January 22, 2013 | Updated: | January 23, 2013 | ||||
| Description: | From the Debian advisory:
An input sanitation problem has been found in upgrade functions of movabletype-opensource, a web-based publishing platform. Using carefully crafted requests to the mt-upgrade.cgi file, it would be possible to inject OS command and SQL queries. | ||||||
| Alerts: |
| ||||||
mysql: multiple vulnerabilities
| Package(s): | mysql | CVE #(s): | CVE-2012-0572 CVE-2012-0574 CVE-2012-0578 CVE-2012-1702 CVE-2012-1705 CVE-2012-5060 CVE-2012-5096 CVE-2012-5612 CVE-2013-0367 CVE-2013-0368 CVE-2013-0371 CVE-2013-0375 CVE-2013-0383 CVE-2013-0384 CVE-2013-0385 CVE-2013-0386 CVE-2013-0389 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | January 22, 2013 | Updated: | February 5, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | MySQL 5.1.67 and 5.5.29 fix multiple security issues.
See the 5.1.67 release notes, the 5.5.29 release notes and the Oracle advisory for details. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||
mysql: SQL command execution
| Package(s): | mysql-community-server | CVE #(s): | CVE-2012-4414 | ||||||||||||||||
| Created: | January 23, 2013 | Updated: | January 23, 2013 | ||||||||||||||||
| Description: | From the CVE entry:
Multiple SQL injection vulnerabilities in the replication code in Oracle MySQL possibly before 5.5.29, and MariaDB 5.1.x through 5.1.62, 5.2.x through 5.2.12, 5.3.x through 5.3.7, and 5.5.x through 5.5.25, allow remote authenticated users to execute arbitrary SQL commands via vectors related to the binary log. NOTE: as of 20130116, Oracle has not commented on claims from a downstream vendor that the fix in MySQL 5.5.29 is incomplete. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
nagios: code execution
| Package(s): | nagios | CVE #(s): | CVE-2012-6096 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | January 23, 2013 | Updated: | June 25, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the CVE entry:
Multiple stack-based buffer overflows in the get_history function in history.cgi in Nagios Core before 3.4.4, and Icinga 1.6.x before 1.6.2, 1.7.x before 1.7.4, and 1.8.x before 1.8.4, might allow remote attackers to execute arbitrary code via a long (1) host_name variable (host parameter) or (2) svc_description variable. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||
php5: information disclosure
| Package(s): | php5 | CVE #(s): | CVE-2012-6113 | ||||
| Created: | January 22, 2013 | Updated: | January 23, 2013 | ||||
| Description: | From the CVE entry:
The openssl_encrypt function in ext/openssl/openssl.c in PHP 5.3.9 through 5.3.13 does not initialize a certain variable, which allows remote attackers to obtain sensitive information from process memory by providing zero bytes of input data. | ||||||
| Alerts: |
| ||||||
rails: privilege escalation
| Package(s): | rails | CVE #(s): | CVE-2013-0155 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | January 17, 2013 | Updated: | January 23, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Debian advisory: An interpretation conflict can cause the Active Record component of Rails, a web framework for the Ruby programming language, to truncate queries in unexpected ways. This may allow attackers to elevate their privileges. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rpm: incorrect signature checking
| Package(s): | rpm | CVE #(s): | CVE-2012-6088 | ||||
| Created: | January 17, 2013 | Updated: | January 23, 2013 | ||||
| Description: | From the Ubuntu advisory: It was discovered that RPM incorrectly handled signature checking. An attacker could create a specially-crafted rpm with an invalid signature which could pass the signature validation check. | ||||||
| Alerts: |
| ||||||
sleuthkit: evade detection by forensic analysis
| Package(s): | sleuthkit | CVE #(s): | CVE-2012-5619 | ||||||||||||||||
| Created: | January 23, 2013 | Updated: | April 11, 2013 | ||||||||||||||||
| Description: | From the Red Hat bugzilla:
A security flaw was found in the way the Sleuth Kit (TSK), a collection of UNIX-based command line tools allowing to investigate a computer, performed management of '.' (dotfile) file system entry. An attacker could use this flaw to evade detection by forensic analysis (hide certain files not to be scanned) by renaming the file in question it to be '.' file system entry. The original reports speaks about this attack vector to be present when scanning FAT (File Allocation Table) file system. It is possible though, the flaw to be present on other file systems, which do not reserve usage of '.' entry for special purpose, too. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
squirrelmail: denial of service
| Package(s): | squirrelmail | CVE #(s): | CVE-2012-2124 | ||||||||
| Created: | January 17, 2013 | Updated: | January 23, 2013 | ||||||||
| Description: | From the Red Hat advisory: The SquirrelMail security update RHSA-2012:0103 did not, unlike the erratum text stated, correct the CVE-2010-2813 issue, a flaw in the way SquirrelMail handled failed log in attempts. A user preference file was created when attempting to log in with a password containing an 8-bit character, even if the username was not valid. A remote attacker could use this flaw to eventually consume all hard disk space on the target SquirrelMail server. (CVE-2012-2124) | ||||||||||
| Alerts: |
| ||||||||||
vino: multiple vulnerabilities
| Package(s): | vino | CVE #(s): | CVE-2011-1164 CVE-2011-1165 CVE-2012-4429 | ||||||||||||||||||||||||
| Created: | January 22, 2013 | Updated: | February 7, 2013 | ||||||||||||||||||||||||
| Description: | From the Red Hat advisory:
It was found that Vino transmitted all clipboard activity on the system running Vino to all clients connected to port 5900, even those who had not authenticated. A remote attacker who is able to access port 5900 on a system running Vino could use this flaw to read clipboard data without authenticating. (CVE-2012-4429) In certain circumstances, the vino-preferences dialog box incorrectly indicated that Vino was only accessible from the local network. This could confuse a user into believing connections from external networks are not allowed (even when they are allowed). With this update, vino-preferences no longer displays connectivity and reachable information. (CVE-2011-1164) There was no warning that Universal Plug and Play (UPnP) was used to open ports on a user's network router when the "Configure network automatically to accept connections" option was enabled (it is disabled by default) in the Vino preferences. This update changes the option's description to avoid the risk of a UPnP router configuration change without the user's consent. (CVE-2011-1165) | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
WebYaST: information disclosure
| Package(s): | WebYaST | CVE #(s): | CVE-2012-0435 | ||||
| Created: | January 23, 2013 | Updated: | January 23, 2013 | ||||
| Description: | From the SUSE advisory:
The hosts list used by WebYaST for connecting to it's back end part was modifiable allowing to point to a malicious website which then could access all values sent by WebYaST. The /host configuration path was removed to fix this issue. | ||||||
| Alerts: |
| ||||||
xen: denial of service
| Package(s): | xen | CVE #(s): | CVE-2012-5634 CVE-2013-0154 | ||||||||||||||||||||||||||||||||||||||||
| Created: | January 23, 2013 | Updated: | February 4, 2013 | ||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla:
When passing a device which is behind a legacy PCI Bridge through to a guest Xen incorrectly configures the VT-d hardware. This could allow incorrect interrupts to be injected to other guests which also have passthrough devices. In a typical Xen system many devices are owned by domain 0 or driver domains, leaving them vulnerable to such an attack. Such a DoS is likely to have an impact on other guests running in the system. On systems using Intel VT-d for PCI passthrough a malicious domain, given access to a device which is behind a legacy PCI bridge, can mount a denial of service attack affecting the whole system. | ||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||
xorg-x11-apps: code execution
| Package(s): | xorg-x11-apps | CVE #(s): | CVE-2011-2504 | ||||||||||||||||||||||||||||
| Created: | January 17, 2013 | Updated: | March 15, 2013 | ||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory:
It was found that the x11perfcomp utility included the current working directory in its PATH environment variable. Running x11perfcomp in an attacker-controlled directory would cause arbitrary code execution with the privileges of the user running x11perfcomp. | ||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||
Page editor: Jake Edge
Next page:
Kernel development>>
