Security
Toward secure package downloads
Kali Linux is a Debian-based distribution developed specifically for use in penetration testing applications. It packages a set of over 600 security-related tools, most of which seem to be oriented toward finding ways to break security schemes. Kali has clear value for people working in the security field — whether they are trying to improve security or defeat it. So it may have come as a surprise when the March 19, 2015 Risks Digest included a message claiming that Kali Linux security is "a joke." The resulting discussion, most of which played out on the oss-security list, suggests that no distribution has yet come up with model for packaging that is entirely lacking in joke-like qualities.The immediate complaint was that Kali serves its distribution without signatures, via plain HTTP. In fact, though the Kali download page is served encrypted with TLS, the actual download links are unencrypted and, thus, the downloaded data would be relatively easy to modify via a man-in-the-middle (MITM) attack. The images are checksummed, though, and the files containing the checksums are signed by the Kali Linux private key, so there is protection there for those who are willing and able to verify the signature and the checksums.
Still, there are a couple of problems with this arrangement, starting with the fact that most users — even, one would guess, users of a distribution like Kali — are not going to actually go through that verification process. For such users, files served with TLS are the only line of defense against MITM attacks. But even users who will verify signatures must get the relevant public key from somewhere. In almost all cases, the only option is to download that key from the distributor's web site — hopefully protected by TLS. So protecting downloaded files with TLS would appear to be an important part of keeping a user's systems secure.
There is still a little problem here, though: the TLS certificate system and the certificate authorities (CAs) that support it have not earned a lot of respect over the years. As Russ Allbery put it:
Even in the absence of falsified certificates, it is easy to put too much trust into TLS. As Daniel Micay noted, TLS is not necessarily a good fit to how software is actually distributed:
Solar Designer summarized things concisely by
saying "I find it ridiculous if we primarily complain that some site
serves downloads over http, and I find it ridiculous if we say they fixed
'the problem' when they move to https.
" As in many other
situations, it seems that TLS on its own provides little in the way of
actual security.
That leaves open the question of whether there is any hope of securing distribution downloads, or whether we are all at the mercy of the next MITM attacker who comes along. The (partial) answer, of course, is to use end-to-end verification: the distributor attaches a signature to packages that are then verified on the user's system. Most distributors now use such a scheme; once the keys are properly installed on a system, that system can verify the provenance any packages before allowing them to be installed. Signatures can be applied to individual packages (as RPM-based distributions tend to do) or to the state of the repository as a whole (as Debian does); there are advantages and disadvantages either way, but either approach can harden the package-delivery path against attack. Though, as the long history of Red Hat bug #998 shows, getting to that point can take some time.
One problem remains: getting the correct public key onto the user's system in the first place. If that step can be subverted, there is no security in anything that follows. That is where one might hope that TLS would come to the rescue; if the user can be sure that they are connecting to the right site, they can (in the absence of a compromise of the distributor's site) assume that the keys they download are legitimate. But, as was mentioned above, confidence in the ability of TLS to protect these downloads is not high.
One possibility for improving the situation is certificate pinning — verifying a certificate through a trusted third party. The fingerprints of pinned certificates are stored in a database somewhere; should a site offer a certificate that does not agree with the pinned version, the download will fail (or, at least, put up a warning). Daniel suggested that distributors of any significance should be able to get their certificates added to the Google Chromium set; since pinning in Firefox starts by importing the Chromium set, any pins would move over there as well. Getting their certificates added should help distributors defend against MITM attacks on their keys, but it's an additional bureaucratic process that, so far, few distributors have bothered with.
Pinning only works with TLS-protected downloads, though. A quick check shows that Debian, Fedora, openSUSE, and Ubuntu all offer their installation-image downloads over unencrypted HTTP connections. Additionally, these images can be downloaded from mirror sites or via BitTorrent — bypassing the distributor's site entirely and rendering any certificate protection moot. Since the installation image is generally the source for the distribution's public keys, the potential for tampering is real.
So what we have in the end is a software-distribution mechanism that mostly works, but only if the initial download of the distribution (or its keys) is not compromised. That appears to be good enough in almost all situations; reports of systems compromised by malicious installation images are rare. Still, it is easy to argue that distributors should do better. But getting there involves finding a solution to the key-distribution problem — a problem that has resisted easy solutions for many years now.
Brief items
Security quote of the week
Docker security in the future (Opensource.com)
Over at Opensource.com, Daniel Walsh writes about applying various Linux security technologies to Docker containers. In the article, he looks at using user namespaces and seccomp filters to provide better security for Docker. "One of the problems with all of the container separation modes described here and elsewhere is that they all rely on the kernel for separation. Unlike air gapped computers, or even virtual machines, the processes within the container can talk directly to the host kernel. If the host kernel has a kernel vulnerability that a container can access, they might be able to disable all of the security and break out of the container. The x86_64 Linux kernel has over 600 system calls, a bug in any one of which could lead to a privilege escalation. Some of the system calls are seldom called, and should be eliminated from access within the container."
Van de Ven: Deprecating old crypto
Worth a read: this post from Arjan van de Ven on the difficulty of removing old, insecure cryptographic algorithms from a Linux distribution. "But more, and this is a call to action: If you're working on an open source project that uses crypto, please please don't opencode crypto algorithm usage. The algorithm may be outdated at any time and might have to go away in a hurry."
Google: Maintaining digital certificate security
It seems it was about time for another certificate authority horror story; the Google Online Security Blog duly delivers. "CNNIC responded on the 22nd to explain that they had contracted with MCS Holdings on the basis that MCS would only issue certificates for domains that they had registered. However, rather than keep the private key in a suitable HSM, MCS installed it in a man-in-the-middle proxy. These devices intercept secure connections by masquerading as the intended destination and are sometimes used by companies to intercept their employees’ secure traffic for monitoring or legal reasons. The employees’ computers normally have to be configured to trust a proxy for it to be able to do this. However, in this case, the presumed proxy was given the full authority of a public CA, which is a serious breach of the CA system."
New vulnerabilities
batik: information leak
Package(s): | batik | CVE #(s): | CVE-2015-0250 | ||||||||||||||||||||||||||||||||||||
Created: | March 25, 2015 | Updated: | June 5, 2015 | ||||||||||||||||||||||||||||||||||||
Description: | From the Ubuntu advisory:
Nicolas Gregoire and Kevin Schaller discovered that Batik would load XML external entities by default. If a user or automated system were tricked into opening a specially crafted SVG file, an attacker could possibly obtain access to arbitrary files or cause resource consumption. | ||||||||||||||||||||||||||||||||||||||
Alerts: |
|
chromium: denial of service
Package(s): | chromium | CVE #(s): | CVE-2015-1232 | ||||||||
Created: | March 23, 2015 | Updated: | April 1, 2015 | ||||||||
Description: | From the CVE entry:
Array index error in the MidiManagerUsb::DispatchSendMidiData function in media/midi/midi_manager_usb.cc in Google Chrome before 41.0.2272.76 allows remote attackers to cause a denial of service or possibly have unspecified other impact by leveraging renderer access to provide an invalid port index that triggers an out-of-bounds write operation, a different vulnerability than CVE-2015-1212. | ||||||||||
Alerts: |
|
compat-openssl098: denial of service
Package(s): | compat-openssl098 | CVE #(s): | CVE-2009-5146 | ||||||||
Created: | March 20, 2015 | Updated: | March 25, 2015 | ||||||||
Description: | From the SUSE advisory: A memory leak in the TLS hostname extension was fixed, which could be used by remote attackers to run SSL services out of memory. | ||||||||||
Alerts: |
|
csync2: file checksum collision
Package(s): | csync2 | CVE #(s): | CVE-2014-8242 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 20, 2015 | Updated: | October 15, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the Fedora advisory: librsync previously used a truncated MD4 "strong" check sum to match blocks. However, MD4 is not cryptographically strong. It's possible that an attacker who can control the contents of one part of a file could use it to control other regions of the file, if it's transferred using librsync/rdiff. For example this might occur in a database, mailbox, or VM image containing some attacker-controlled data. To mitigate this issue, signatures will by default be computed with a 256-bit BLAKE2 hash. Old versions of librsync will complain about a bad magic number when given these signature files. Backward compatibility can be obtained using the new `rdiff sig --hash=md4` option or through specifying the "signature magic" in the API, but this should not be used when either the old or new file contain untrusted data. Deltas generated from those signatures will also use BLAKE2 during generation, but produce output that can be read by old versions. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
drupal: multiple vulnerabilities
Package(s): | drupal | CVE #(s): | CVE-2015-2559 | ||||||||||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | March 30, 2015 | ||||||||||||||||||||||||||||||||||||
Description: | From the Drupal advisory:
Access bypass (Password reset URLs - Drupal 6 and 7) Password reset URLs can be forged under certain circumstances, allowing an attacker to gain access to another user's account without knowing the account's password. Open redirect (Several vectors including the "destination" URL parameter - Drupal 6 and 7) Drupal core and contributed modules frequently use a "destination" query string parameter in URLs to redirect users to a new destination after completing an action on the current page. Under certain circumstances, malicious users can use this parameter to construct a URL that will trick users into being redirected to a 3rd party website, thereby exposing the users to potential social engineering attacks. | ||||||||||||||||||||||||||||||||||||||
Alerts: |
|
gdm: screen lock bypass
Package(s): | gdm | CVE #(s): | |||||
Created: | March 19, 2015 | Updated: | March 25, 2015 | ||||
Description: | From the SUSE bugzilla entry:
Using the latest openSUSE Factory snapshot (also present in openSUSE 13.2 RC1) GNOME automatically unlocks if fprintd is present
The user never gets asked for a password journal shows fprintd starting each time the lock screen is activated, but no errors or warnings to imply it's misbehaving Removing fprintd 'resolves' the issue but disables fingerprint authentication | ||||||
Alerts: |
|
gnutls: potenially invalid certificates
Package(s): | gnutls26, gnutls28 | CVE #(s): | CVE-2014-8155 | ||||||||||||||||
Created: | March 24, 2015 | Updated: | March 25, 2015 | ||||||||||||||||
Description: | From the Ubuntu advisory:
It was discovered that GnuTLS did not perform date and time checks on CA certificates, contrary to expectations. This issue only affected Ubuntu 10.04 LTS. | ||||||||||||||||||
Alerts: |
|
kernel: two vulnerabilities
Package(s): | kernel | CVE #(s): | CVE-2015-2150 CVE-2015-2042 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | April 23, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the CVE entry:
Xen 3.3.x through 4.5.x and the Linux kernel through 3.19.1 do not properly restrict access to PCI command registers, which might allow local guest users to cause a denial of service (non-maskable interrupt and host crash) by disabling the (1) memory or (2) I/O decoding for a PCI Express device and then accessing the device, which triggers an Unsupported Request (UR) response. (CVE-2015-2150) From the Red Hat bugzilla: A flaw was found in the method that the linux kernel handles userspace tuning of the Reliable Datagram Sockets (RDS) system settings. The incorrect handling allowed a trusted user to set multiple RDS sysctls for RDS with specially formatted data. Reading from these files also returned data from other sysctl settings that would be exposed via the same permissions to this user. (CVE-2015-2042) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
krb5: denial of service
Package(s): | krb5 | CVE #(s): | CVE-2014-5355 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 20, 2015 | Updated: | March 29, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the openSUSE advisory: krb5: denial of service in krb5_read_message. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
less: information leak
Package(s): | less | CVE #(s): | CVE-2014-9488 | ||||||||||||||||||||
Created: | March 25, 2015 | Updated: | June 11, 2015 | ||||||||||||||||||||
Description: | From the openSUSE advisory:
Malformed UTF-8 data could have caused an out of bounds read in the UTF-8 decoding routines, causing an invalid read access. | ||||||||||||||||||||||
Alerts: |
|
mono: three SSL/TLS vulnerabilities
Package(s): | mono | CVE #(s): | CVE-2015-2318 CVE-2015-2319 CVE-2015-2320 | ||||||||||||||||
Created: | March 19, 2015 | Updated: | April 16, 2015 | ||||||||||||||||
Description: | From the Debian-LTS advisory:
CVE-2015-2318: Mono's implementation of the SSL/TLS stack failed to check the order of the handshake messages. Which would allow various attacks on the protocol to succeed. ("SKIP-TLS") CVE-2015-2319: Mono's implementation of SSL/TLS also contained support for the weak EXPORT cyphers and was susceptible to the FREAK attack. CVE-2015-2320: Mono contained SSLv2 fallback code, which is no longer needed and can be considered insecure. | ||||||||||||||||||
Alerts: |
|
moodle: multiple vulnerabilities
Package(s): | moodle | CVE #(s): | CVE-2015-2266 CVE-2015-2267 CVE-2015-2268 CVE-2015-2269 CVE-2015-2270 CVE-2015-2271 CVE-2015-2272 CVE-2015-2273 | ||||||||||||
Created: | March 19, 2015 | Updated: | April 6, 2015 | ||||||||||||
Description: | From the Mageia advisory:
In Moodle before 2.6.9, by modifying URL a logged in user can view the list of another user's contacts, number of unread messages and list of their courses (CVE-2015-2266). In Moodle before 2.6.9, authentication in mdeploy can be bypassed. It is theoretically possible to extract files anywhere on the system where the web server has write access. The attacking user must know details about the system and already have significant permissions on the site (CVE-2015-2267). In Moodle before 2.6.9, a non-optimal regular expression in the "Convert links to URLs" filter could be exploited to create extra server load or make particular pages unavailable (CVE-2015-2268). In Moodle before 2.6.9, it is possible to create HTML injection through blocks with configurable titles, however this could only be exploited by users who are already marked as XSS-trusted (CVE-2015-2269). In Moodle before 2.6.9, for the custom themes that use blocks regions in the base layout the blocks for inaccessible courses could be displayed together with sensitive course-related information. Most of the themes, including all standard Moodle themes, are not affected (CVE-2015-2270). In Moodle before 2.6.9, users without proper permission are able to mark tags as inappropriate. Since this capability is given to authenticated users by default, this is not an issue for most sites (CVE-2015-2271). In Moodle before 2.6.9, even when user's password is forced to be changed on login, user could still use it for authentication in order to create the web service token and therefore extend the life of the temporary password via web services (CVE-2015-2272). In Moodle before 2.6.9, Quiz statistics report did not properly escape student responses and could be used for XSS attack (CVE-2015-2273). | ||||||||||||||
Alerts: |
|
mozilla: multiple vulnerabilities
Package(s): | iceweasel firefox thunderbird seamonkey | CVE #(s): | CVE-2015-0817 CVE-2015-0818 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | April 1, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the Debian advisory:
CVE-2015-0817: ilxu1a reported a flaw in Mozilla's implementation of typed array bounds checking in JavaScript just-in-time compilation (JIT) and its management of bounds checking for heap access. This flaw can be leveraged into the reading and writing of memory allowing for arbitrary code execution on the local system. CVE-2015-0818: Mariusz Mlynski discovered a method to run arbitrary scripts in a privileged context. This bypassed the same-origin policy protections by using a flaw in the processing of SVG format content navigation. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
openssl: multiple vulnerabilities
Package(s): | openssl | CVE #(s): | CVE-2015-0209 CVE-2015-0286 CVE-2015-0287 CVE-2015-0288 CVE-2015-0289 CVE-2015-0292 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 20, 2015 | Updated: | May 5, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the Debian advisory: CVE-2015-0286 Stephen Henson discovered that the ASN1_TYPE_cmp() function can be crashed, resulting in denial of service. CVE-2015-0287 Emilia Kaesper discovered a memory corruption in ASN.1 parsing. CVE-2015-0289 Michal Zalewski discovered a NULL pointer dereference in the PKCS#7 parsing code, resulting in denial of service. CVE-2015-0292 It was discovered that missing input sanitising in base64 decoding might result in memory corruption. CVE-2015-0209 It was discovered that a malformed EC private key might result in memory corruption. CVE-2015-0288 It was discovered that missing input sanitising in the X509_to_X509_REQ() function might result in denial of service. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
openssl: denial of service
Package(s): | openssl | CVE #(s): | CVE-2015-0293 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 20, 2015 | Updated: | May 5, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the OpenSSL advisory: A malicious client can trigger an OPENSSL_assert (i.e., an abort) in servers that both support SSLv2 and enable export cipher suites by sending a specially crafted SSLv2 CLIENT-MASTER-KEY message. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
php: code execution
Package(s): | php5 | CVE #(s): | CVE-2015-2331 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | April 22, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the Debian advisory:
Emmanuel Law discovered an integer overflow in the processing of ZIP archives, resulting in denial of service or potentially the execution of arbitrary code. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
phpZendFramework2: cross-site forgery
Package(s): | php-ZendFramework2 | CVE #(s): | |||||||||||||
Created: | March 20, 2015 | Updated: | March 25, 2015 | ||||||||||||
Description: | From the Zend advisory: Zend\Validator\Csrf, starting in the Zend Framework 2.3 series, was not correctly identifying null or mal-formatted token identifiers, leading to false positive validations, and thus potentially allowing for Cross-Site Request Forgery vectors. | ||||||||||||||
Alerts: |
|
python-django: two vulnerabilities
Package(s): | python-django | CVE #(s): | CVE-2015-2316 CVE-2015-2317 | ||||||||||||||||||||||||||||||||
Created: | March 24, 2015 | Updated: | June 19, 2015 | ||||||||||||||||||||||||||||||||
Description: | From the Ubuntu advisory:
Andrey Babak discovered that Django incorrectly handled strip_tags. A remote attacker could possibly use this issue to cause Django to enter an infinite loop, resulting in a denial of service. This issue only affected Ubuntu 14.04 LTS and Ubuntu 14.10. (CVE-2015-2316) Daniel Chatfield discovered that Django incorrectly handled user-supplied redirect URLs. A remote attacker could possibly use this issue to perform a cross-site scripting attack. (CVE-2015-2317) | ||||||||||||||||||||||||||||||||||
Alerts: |
|
qt-creator: fails to verify SSH host key
Package(s): | qt-creator | CVE #(s): | |||||||||||||
Created: | March 23, 2015 | Updated: | April 10, 2015 | ||||||||||||
Description: | From the Red Hat bugzilla:
It was reported that Qt Creator does not verify SSH host key when using built-in SSH client. | ||||||||||||||
Alerts: |
|
tor: denial of service
Package(s): | tor | CVE #(s): | CVE-2015-2688 CVE-2015-2689 | ||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | April 6, 2015 | ||||||||||||||||||||||||||||
Description: | From the Debian advisory:
Several denial-of-service issues have been discovered in Tor, a connection-based low-latency anonymous communication system.
CVEs were not available when this entry was created, and were added later. See the Tor release announcement for details. | ||||||||||||||||||||||||||||||
Alerts: |
|
xen: two vulnerabilities
Package(s): | xen | CVE #(s): | CVE-2015-2152 CVE-2015-1563 | ||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | March 25, 2015 | ||||||||||||||||||||||||||||
Description: | From the CVE entries:
Xen 4.5.x and earlier enables certain default backends when emulating a VGA device for an x86 HVM guest qemu even when the configuration disables them, which allows local guest users to obtain access to the VGA console by (1) setting the DISPLAY environment variable, when compiled with SDL support, or connecting to the VNC server on (2) ::1 or (3) 127.0.0.1, when not compiled with SDL support. (CVE-2015-2152) The ARM GIC distributor virtualization in Xen 4.4.x and 4.5.x allows local guests to cause a denial of service by causing a large number messages to be logged. (CVE-2015-1563) | ||||||||||||||||||||||||||||||
Alerts: |
|
xerces-c: denial of service
Package(s): | xerces-c | CVE #(s): | CVE-2015-0252 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Created: | March 23, 2015 | Updated: | June 30, 2015 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description: | From the Debian advisory:
Anton Rager and Jonathan Brossard from the Salesforce.com Product Security Team and Ben Laurie of Google discovered a denial of service vulnerability in xerces-c, a validating XML parser library for C++. The parser mishandles certain kinds of malformed input documents, resulting in a segmentation fault during a parse operation. An unauthenticated attacker could use this flaw to cause an application using the xerces-c library to crash. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alerts: |
|
Page editor: Jake Edge
Next page:
Kernel development>>