Security
Chromium suddenly starts downloading a binary blob
A Debian bug that was filed at the end of May serves as a reminder that even open-source software is not immune to some of the problems of proprietary software. In this case, Chromium 43 was silently downloading a browser extension to enable the "OK Google" voice activation "feature" of the browser, which is somewhat reminiscent of the various sideloading schemes that plague downloads of "free" software, particularly on Windows. The download was a binary blob, of course, so its contents cannot be vetted in any real sense. As might be guessed, Debian developers were not amused, but it should also serve as a bit of a wakeup call to all of the free-software world.
The extension in question is called "Chrome Hotword" and the download is a native client (NaCl) shared module that includes executable content. Starting with version 43, Chromium could only be built with the extension, which would download the shared module at its first opportunity—all without user intervention or notification. Perhaps even weirder still, the extension did not show up in the usual chrome://extensions/ page. Its controls were available at chrome://voicesearch/, but users have to know it was installed and where to find that page.
To summarize, a popular open-source web browser does a surreptitious download of a program and hides the download and the existence of the program from the user. Even if the binary only does what it is purported to do, it can turn on the microphone and upload what it hears to a remote site to search for a key phrase. That description sounds a lot like one for the latest malware outbreak—or National Security Agency (NSA) eavesdropping program.
It is not (yet) clear how this came about—prosaic explanations seem most likely, in truth—but it did make its way into Debian unstable without being noticed. It was reported to the Chromium team on May 22 and fixed by adding a build option to disable the Hotword extension on June 9. The extension is still enabled by default, though, so builders who don't want that functionality need to turn it off before starting the build. By June 15, Debian had done just that and updated its version of Chromium.
There is plenty to be disturbed about here, but it seems pretty unlikely this was some deliberate scheme by Google (or the Chromium team). It would be hard to hide something like that in an open-source program like Chromium. But it is clear that the amount of independent review of the changes going into Chromium is less than what we might hope for. The value of open source is lessened if "many eyes" really turns out to be "zero eyes".
The contents of the executable should also be scrutinized, but there is no real way to do that. Even if Google is completely trustworthy with respect to what the program does (and there is no reason to believe it isn't) it is still a bit worrisome that your browser can simply execute whatever code its corporate master orders it to. Though, in some ways, that isn't terribly different from Flash or JavaScript. We are increasingly required to trust the various sites, companies, and organizations that we deal with on a daily basis on today's internet.
Given the way Chromium uses certificate pinning, a man in the middle would not have been able to deliver some other version of NaCl executable. It should be noted that locally stored root certificates for proxies and the like are not subject to pinning, though. It's a pretty far-fetched attack mechanism, since having access to install certificates locally would allow anything else to be installed at the same time. Being able to sign certificates for any site and have them accepted by all of the affected browsers would also seem to provide endless avenues of exploitation.
This incident is a little disheartening, overall. The web is a big, scary place these days; we depend on browsers that are working to protect their users. Undoubtedly Google doesn't see this executable download as a violation of that—rather it is probably seen as a nifty feature—but many outside the Googleplex quite reasonably disagree. As long as we have the source, and are vigilant about reviewing it, we can be reasonably assured of having browsers (and other programs) that do protect their users. That may, at some point, require a fork-and-rebrand effort for a browser or other open-source project if the organization developing it won't back down from some kind of anti-feature. Thankfully, that seems to be a problem for down the road—if ever.
Brief items
Security quotes of the week
It's bad enough when the ever more censorship and surveillance loving Western leaders have this kind of power. But how about Vladimir Putin, or China's rulers, or Iran's Supreme Leader as GLOBAL censors?
It wouldn't be long before it would seem that every search on any controversial topic might as well be replaced with a "404 Not found" page -- a rush to lowest common denominator mediocrity, purged of any and all information that government leaders, politicians, or bureaucrats would prefer people not be able to find and see.
The hidden costs of embargoes (Red Hat Security Blog)
Over at the Red Hat Security Blog, Kurt Seifried looks at the costs of security embargoes. Keeping the information about security vulnerabilities quiet until distributions can coordinate their releases of a fix for it seems like it makes a lot of sense, but there are hidden costs to that. "Patch creation with an embargoed issue means only the researcher and upstream participating. The end result of this is often patches that are incomplete and do not fully address the issue. This happened with the Bash Shellshock issue (CVE-2014-6271) where the initial patch, and even subsequent patches, were incomplete resulting in several more CVEs (CVE-2014-6277, CVE-2014-6278, CVE-2014-7169). For a somewhat complete listing of such examples simply search the CVE database for 'because of an incomplete fix for'."
New vulnerabilities
aptdaemon: information leak
| Package(s): | aptdaemon | CVE #(s): | CVE-2015-1323 | ||||||||||||
| Created: | June 17, 2015 | Updated: | July 6, 2015 | ||||||||||||
| Description: | From the Ubuntu advisory:
Tavis Ormandy discovered that Aptdeamon incorrectly handled the simulate dbus method. A local attacker could use this issue to possibly expose sensitive information, or perform other file access as the root user. | ||||||||||||||
| Alerts: |
| ||||||||||||||
armacycles-ad: multiple vulnerabilities
| Package(s): | armacycles-ad | CVE #(s): | |||||||||||||
| Created: | June 15, 2015 | Updated: | June 17, 2015 | ||||||||||||
| Description: | From the Fedora advisory:
Changes since 0.2.8.3.2:
| ||||||||||||||
| Alerts: |
| ||||||||||||||
cabal-install: force digest authentication
| Package(s): | cabal-install | CVE #(s): | |||||||||
| Created: | June 11, 2015 | Updated: | June 17, 2015 | ||||||||
| Description: | From the Fedora advisory:
Force cabal upload to always use digest auth and never basic auth | ||||||||||
| Alerts: |
| ||||||||||
coreutils: memory handling error
| Package(s): | coreutils,coreutils-testsuite | CVE #(s): | CVE-2015-4041 CVE-2015-4042 | ||||||||
| Created: | June 15, 2015 | Updated: | July 6, 2015 | ||||||||
| Description: | From the openSUSE bug report:
On 64-bit (not on 32-bit) OpenSUSE 13.2 when running command LANG=en_US.UTF-8 sort -f sort_bug_caseinsensitive.txt I get the following error (remark: changing a single character in the file to sort won't show the error anymore; the same is true for not case-insensitive search, no UTF-8 or not running on 64-bit) | ||||||||||
| Alerts: |
| ||||||||||
filezilla: multiple vulnerabilities
| Package(s): | filezilla | CVE #(s): | |||||
| Created: | June 15, 2015 | Updated: | June 17, 2015 | ||||
| Description: | From FileZilla:
2015-06-12 - FileZilla Server 0.9.53 released Bugfixes and minor changes: Updated OpenSSL to 1.0.2b due to several security vulnerabilities in OpenSSL | ||||||
| Alerts: |
| ||||||
freecad: code execution
| Package(s): | freecad | CVE #(s): | |||||
| Created: | June 11, 2015 | Updated: | June 17, 2015 | ||||
| Description: | From the Red Hat bugzilla entry:
It was reported that FreeCAD downloads and executes code (e.g. ArchCommands.py) from the network, from https. This uses urllib2, which does not check https certificates. The files that are downloaded occur when attempting to activate non-present module features, such as via opening a DXF file. This can allow Man-in-the-Middle attack, leading to code execution. | ||||||
| Alerts: |
| ||||||
kernel: privilege escalation
| Package(s): | kernel | CVE #(s): | CVE-2015-1328 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 16, 2015 | Updated: | June 23, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Ubuntu advisory:
Philip Pettersson discovered a privilege escalation when using overlayfs mounts inside of user namespaces. A local user could exploit this flaw to gain administrative privileges on the system. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kernel: multiple vulnerabilities
| Package(s): | linux-2.6 kernel | CVE #(s): | CVE-2011-5321 CVE-2012-6689 CVE-2014-9728 CVE-2014-9729 CVE-2014-9730 CVE-2014-9731 CVE-2015-4167 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 17, 2015 | Updated: | June 17, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Debian LTS advisory:
CVE-2011-5321: Jiri Slaby discovered that tty_driver_lookup_tty() may leak a reference to the tty driver. A local user could use this flaw to crash the system. CVE-2012-6689: Pablo Neira Ayuso discovered that non-root user-space processes can send forged Netlink notifications to other processes. A local user could use this flaw for denial of service or privilege escalation. CVE-2014-9728 / CVE-2014-9729 / CVE-2014-9730 / CVE-2014-9731 / CVE-2015-4167: Carl Henrik Lunde discovered that the UDF implementation is missing several necessary length checks. A local user that can mount devices could use these various flaws to crash the system, to leak information from the kernel, or possibly for privilege escalation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
libav: unspecified vulnerability
| Package(s): | libav | CVE #(s): | CVE-2015-3395 | ||||||||||||||||
| Created: | June 15, 2015 | Updated: | June 17, 2015 | ||||||||||||||||
| Description: | From the libav changelog:
msrle: Use FFABS to determine the frame size in msrle_decode_pal4 | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
libreswan: denial of service
| Package(s): | libreswan | CVE #(s): | CVE-2015-3204 | ||||||||||||||||||||||||||||||||
| Created: | June 11, 2015 | Updated: | June 25, 2015 | ||||||||||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla entry:
A denial of service flaw was found when assembling a log message regarding invalid bit names (caused by a fuzzer setting all of them, and our bitnames buffer being too small). On libreswan, this hits a passert() and causes the daemon to restart. | ||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||
openssl: multiple vulnerabilities
| Package(s): | openssl | CVE #(s): | CVE-2015-1788 CVE-2015-1789 CVE-2015-1790 CVE-2015-1791 CVE-2015-1792 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 12, 2015 | Updated: | June 24, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Arch Linux advisory: CVE-2015-1788 (denial of service) - When processing an ECParameters structure OpenSSL enters an infinite loop if the curve specified is over a specially malformed binary polynomial field. This can be used to perform denial of service against any system which processes public keys, certificate requests or certificates. This includes TLS clients and TLS servers with client authentication enabled. CVE-2015-1789 (out-of-bounds read) - X509_cmp_time does not properly check the length of the ASN1_TIME string and can read a few bytes out of bounds. In addition, X509_cmp_time accepts an arbitrary number of fractional seconds in the time string. An attacker can use this to craft malformed certificates and CRLs of various sizes and potentially cause a segmentation fault, resulting in a DoS on applications that verify certificates or CRLs. TLS clients that verify CRLs are affected. TLS clients and servers with client authentication enabled may be affected if they use custom verification callbacks. CVE-2015-1790 (denial of service) - The PKCS#7 parsing code does not handle missing inner EncryptedContent correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with missing content and trigger a NULL pointer dereference on parsing. Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 structures from untrusted sources are affected. OpenSSL clients and servers are not affected. CVE-2015-1791 (double free) - If a NewSessionTicket is received by a multi-threaded client when attempting to reuse a previous ticket then a race condition can occur potentially leading to a double free of the ticket data. CVE-2015-1792 (denial of service) - When verifying a signedData message the CMS code can enter an infinite loop if presented with an unknown hash function OID. This can be used to perform denial of service against any system which verifies signedData messages using the CMS code. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
openssl: code execution
| Package(s): | openssl | CVE #(s): | CVE-2014-8176 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 12, 2015 | Updated: | June 17, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Ubuntu advisory: Praveen Kariyanahalli, Ivan Fratric and Felix Groebert discovered that OpenSSL incorrectly handled memory when buffering DTLS data. A remote attacker could use this issue to cause OpenSSL to crash, resulting in a denial of service, or possibly execute arbitrary code. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
openssl: denial of service
| Package(s): | openssl | CVE #(s): | CVE-2015-3216 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 16, 2015 | Updated: | June 17, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory:
A flaw was found in the way the OpenSSL packages shipped with Red Hat Enterprise Linux 6 and 7 performed locking in the ssleay_rand_bytes() function. This issue could possibly cause a multi-threaded application using OpenSSL to perform an out-of-bounds read and crash. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p7zip: directory traversal
| Package(s): | p7zip | CVE #(s): | CVE-2015-1038 | ||||||||||||||||||||||||
| Created: | June 15, 2015 | Updated: | December 21, 2015 | ||||||||||||||||||||||||
| Description: | From the Debian LTS advisory:
Alexander Cherepanov discovered that p7zip is susceptible to a directory traversal vulnerability. While extracting an archive, it will extract symlinks and then follow them if they are referenced in further entries. This can be exploited by a rogue archive to write files outside the current directory. | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
php5: information disclosure
| Package(s): | php5 | CVE #(s): | CVE-2015-4148 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 15, 2015 | Updated: | June 17, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the CVE entry:
The do_soap_call function in ext/soap/soap.c in PHP before 5.4.39, 5.5.x before 5.5.23, and 5.6.x before 5.6.7 does not verify that the uri property is a string, which allows remote attackers to obtain sensitive information by providing crafted serialized data with an int data type, related to a "type confusion" issue. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
tidy: buffer overflow
| Package(s): | tidy | CVE #(s): | |
| Created: | June 12, 2015 | Updated: | July 6, 2015 |
| Description: | From the Tidy CVE request: Tidy is affected by a write out of bounds when processing malformed html files. This issue could be abused on server side applications that use php-tidy extension with user input. | ||
| Alerts: | (No alerts in the database for this vulnerability) | ||
wpa: denial of service
| Package(s): | wpa wpasupplicant hostapd | CVE #(s): | CVE-2015-4144 CVE-2015-4145 CVE-2015-4146 | ||||||||||||||||
| Created: | June 17, 2015 | Updated: | June 17, 2015 | ||||||||||||||||
| Description: | From the Ubuntu advisory:
Kostya Kortchinsky discovered multiple flaws in wpa_supplicant and hostapd. A remote attacker could use these issues to cause wpa_supplicant or hostapd to crash, resulting in a denial of service. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
wpa_supplicant: two vulnerabilities
| Package(s): | wpa_supplicant | CVE #(s): | CVE-2015-4141 CVE-2015-4143 | ||||||||||||||||||||||||
| Created: | June 11, 2015 | Updated: | June 17, 2015 | ||||||||||||||||||||||||
| Description: | From the openSUSE advisory:
CVE-2015-4141: WPS UPnP vulnerability with HTTP chunked transfer encoding (boo#930077) CVE-2015-4143: EAP-pwd missing payload length validation (boo#930079) | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
xen: multiple vulnerabilities
| Package(s): | Xen | CVE #(s): | CVE-2015-4163 CVE-2015-4164 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | June 12, 2015 | Updated: | June 24, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Xen advisories: CVE-2015-4163 - With the introduction of version 2 grant table operations, a version check became necessary for most grant table related hypercalls. The GNTTABOP_swap_grant_ref call was lacking such a check. As a result, the subsequent code behaved as if version 2 was in use, when a guest issued this hypercall without a prior GNTTABOP_setup_table or GNTTABOP_set_version. The effect is a possible NULL pointer dereferences. However, this cannot be exploited to elevate privileges of the attacking domain, as the maximum memory address that can be wrongly accessed this way is bounded to far below the start of hypervisor memory. CVE-2015-4164 - A buggy loop in Xen's compat_iret() function iterates the wrong way around a 32-bit index. Any 32-bit PV guest kernel can trigger this vulnerability by attempting a hypercall_iret with EFLAGS.VM set. Given the use of __get/put_user(), and that the virtual addresses in question are contained within the lower canonical half, the guest cannot clobber any hypervisor data. Instead, Xen will take up to 2^33 pagefaults, in sequence, effectively hanging the host. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Page editor: Jake Edge
Next page:
Kernel development>>
