|
|
Subscribe / Log in / New account

Security

A different sort of "Fake Linus Torvalds"

By Jake Edge
August 24, 2016

A Linux Foundation publicity scheme once (in)famously created a "Fake Linus Torvalds" on Twitter, but a different sort of fake has more recently appeared. A message posted to the linux-kernel mailing list on August 15 announced the existence of a PGP key with the same short key ID as that of Torvalds's real key—something that could potentially lead programs and users to confuse the two keys. The problem with key ID collisions has been known for some time, but the message may have served to raise the profile of the dangers of using short PGP IDs.

PGP keys are typically used for encryption or for digitally signing data of some sort. Those signatures can be used to show that a private key corresponding to a particular public key was used, which strongly implies that the owner of the public key was the one who did it—as long as the private key remains private, of course. Signatures are often used on software distributions of various sorts, including packages, kernels, and, sometimes, commits in Git repositories.

These days, the PGP program itself is not widely used, though the standards (such as OpenPGP) it spawned have been picked up and carried forward by projects like GNU Privacy Guard (GnuPG or GPG). The public key for a PGP user is usually represented as an unwieldy blob of text, however; without some kind of "extra" knowledge, there is no way to know that a given key is really owned by the user it purports to come from. There are two somewhat-related mechanisms to address those problems: keyservers and the web of trust.

Keyservers provide a way for users to get someone else's public key, while the web of trust is a way to provide the user some level of trust that key comes from who it purports to. In order to have a key that is more trusted, users will try to get their key signed by other users' keys. When a new key is examined (normally by GPG or some other program), those signatures can be checked to see if the keys used in the signing are already trusted or if they belong to the "strong set" (a group of well-connected keys within the web of trust). Based on that examination, users can choose a trust level they place in the key.

Unfortunately, all of that is somewhat complex and hard for those who are not particularly technically savvy to understand. So tools are meant to help simplify some of that. But one of those simplifications can lead to problems such that users (both savvy and not) may be tricked into using (and trusting) keys that are not owned by the person or organization they think.

Keys have a "fingerprint" that uniquely identifies them, but they are relatively long hexadecimal strings (20 bytes, so 40 characters), which makes them unwieldy as well—at least for day-to-day use. For that reason, shorter substrings called key IDs (usually either four or eight bytes worth of hexadecimal) are often used to "identify" keys. Ten or fifteen years ago, even four-byte IDs were relatively safe, but these days it is rather easy to generate a key with a key ID that collides with an existing key. That's exactly what was done with Torvalds's key as noted in the mailing post (a key for "Fake Greg Kroah-Hartman" was similarly outed in the message).

In fact, a project called "Evil 32" has created a collision for every 32-bit key ID in the strong set. It used its scallion program to create those collisions, each in roughly four seconds using a GPU. Key collisions might not be that big of a problem, except that GPG and other tools don't treat them as an error, so users can end up with the wrong key. GPG certainly warns that untrusted keys are being used, but that is a relatively common warning in "normal" GPG use so it goes unnoticed.

Evil 32 has an example of how the problem might manifest itself. It uses a package from Puppet Labs for the demonstration (though, now, the instructions at Puppet Labs use its full key fingerprint to avoid the problem). When asking the keyserver for the key ID provided (using the --recv-keys option), GPG would actually accept multiple keys with that key ID and add them to the keyring. Because the signature file contained only the key ID at that time, either of the keys could be used to verify the contents of the package. Thus, a version with a backdoor, say, and signed with the attacker's colliding key could be downloaded and would pass a verification step.

At some level though, the root problem is that the web of trust isn't really being used the way it was envisioned (or, as some would say, the way it should be used). If users were only trusting keys with signatures of other trusted entities or that had other indications of trustworthiness and GPG were configured to reject untrusted keys, the problem would largely not exist. But, for the most part, the "there is no indication that the signature belongs to the owner" warning message is expected by users—if it is even seen.

Given that GPG is used by other encryption tools, some of which also try to simplify the process for novice users, the fact that multiple keys match a particular key ID may be completely hidden by the interface. That's good for reducing complexity, perhaps, but not so good for security and package integrity. GPG has a well-earned reputation for being difficult to use correctly, though it must be said that alternatives don't seem to be overtaking it any way.

Kroah-Hartman reacted to the revelation of his fake key with some cogent observations about the situation:

Yes, there is now a "fake" short fingerprint for my kernel signing key out there on the key servers, and yes, it's not really mine, and yes, we know who did it, and yes, it's revoked, and no, it wasn't just targeted at kernel developers, but at all 24000 keys in the "strong" ring of PGP trust, and yes something like this has been possible for a very long time now so it's not really that much news, and yes, gpg really is horrible to use and almost impossible to use correctly.

As he noted, this problem has been known for some time. There is a blog post from 2011 about it that clearly indicates it is a known problem at that point. A recent post that LWN linked to in June noted colliding key IDs had been found in the wild. The longtime existence of "vanity" key IDs (those that spell out some word or are based on an interesting number) clearly shows the problem—if people can choose their key IDs, nothing stops them from choosing someone else's. In the end, this most recent episode just provided yet another reason for users of PGP keys to pay attention and either use full key fingerprints or the web of trust—perhaps both, though that is probably simply overkill.

Comments (13 posted)

Brief items

Security against Election Hacking (Freedom to Tinker)

Over at the Freedom to Tinker blog, Andrew Appel has a two-part series on security attacks and defenses for the upcoming elections in the US (though some of it will obviously be applicable elsewhere too). Part 1 looks at the voting and counting process with an eye toward ways to verify what the computers involved are reporting, but doing so without using the computers themselves (having and verifying the audit trail, essentially). Part 2 looks at the so-called cyberdefense teams and how their efforts are actually harming all of our security (voting and otherwise) by hoarding bugs rather than reporting them to get them fixed.

With optical-scan voting, the voter fills in the bubbles next to the names of her selected candidates on paper ballot; then she feeds the op-scan ballot into the optical-scan computer. The computer counts the vote, and the paper ballot is kept in a sealed ballot box. The computer could be hacked, in which case (when the polls close) the voting-machine lies about how many votes were cast for each candidate. But we can recount the physical pieces of paper marked by the voter’s own hands; that recount doesn’t rely on any computer. Instead of doing a full recount of every precinct in the state, we can spot-check just a few ballot boxes to make sure they 100% agree with the op-scan computers’ totals.

Problem: What if it’s not an optical-scan computer, what if it’s a paperless touchscreen (“DRE, Direct-Recording Electronic) voting computer? Then whatever numbers the voting computer says, at the close of the polls, are completely under the control of the computer program in there. If the computer is hacked, then the hacker gets to decide what numbers are reported. There are no paper ballots to audit or recount. All DRE (paperless touchscreen) voting computers are susceptible to this kind of hacking. This is our biggest problem.

Comments (2 posted)

New vulnerabilities

cracklib2: code execution

Package(s):cracklib2 CVE #(s):CVE-2016-6318
Created:August 22, 2016 Updated:December 12, 2016
Description: From the Debian-LTS advisory:

It was discovered that there was a stack-based buffer overflow when parsing large GECOS fields in cracklib2, a pro-active password checker library.

Alerts:
Mageia MGASA-2016-0302 cracklib 2016-09-16
openSUSE openSUSE-SU-2016:2204-1 cracklib 2016-08-31
Debian-LTS DLA-599-1 cracklib2 2016-08-20
Fedora FEDORA-2016-b601141219 cracklib 2016-12-11
Fedora FEDORA-2016-bfa785e39e cracklib 2016-12-11
Gentoo 201612-25 cracklib 2016-12-08

Comments (none posted)

eog: out-of-bounds write

Package(s):eog CVE #(s):CVE-2016-6855
Created:August 24, 2016 Updated:September 6, 2016
Description:

From the bug report:

An out-of-bounds write vulnerability in eog was found when processing specially crafted SVG file. Due to passing the error message containing invalid UTF-8 character to GMarkup, out-of-bounds access is triggered.

Alerts:
openSUSE openSUSE-SU-2016:2242-1 eog 2016-09-05
Mageia MGASA-2016-0297 eog 2016-08-31
Debian-LTS DLA-605-1 eog 2016-08-29
Ubuntu USN-3069-1 eog 2016-08-25
Fedora FEDORA-2016-0f8779baa6 eog 2016-08-24
Fedora FEDORA-2016-5abbc35b6a eog 2016-08-24

Comments (none posted)

firewalld: authentication bypass

Package(s):firewalld CVE #(s):CVE-2016-5410
Created:August 22, 2016 Updated:January 30, 2017
Description: From the Red Hat bugzilla entry:

FirewallD provides dbus api for modification of configuration after user has been authenticated via polkit. This does not apply for 5 methods which can be called by any logged user using dbus api or firewall-cmd cli interface. Any predefined policy can be used, server or desktop. list of concerned dbus methods in firewalld.py: addPassthrough, removePassthrough, addEntry, removeEntry, and setEntries. Any locally logged in user, could use the above firewalld commands to tamper or change the firewall settings.

Alerts:
Oracle ELSA-2016-2597 firewalld 2016-11-10
Red Hat RHSA-2016:2597-02 firewalld 2016-11-03
Fedora FEDORA-2016-de55d2c2c9 firewalld 2016-08-19
Gentoo 201701-70 firewalld 2017-01-29
Scientific Linux SLSA-2016:2597-2 firewalld 2016-12-14

Comments (none posted)

glibc: denial of service

Package(s):glibc CVE #(s):CVE-2016-6323
Created:August 22, 2016 Updated:October 20, 2016
Description: From the glibc bugzilla entry:

Since [__startcontext] transfers to a different stack it should be marked .cantunwind, so that the EABI unwinder does not try to unwind past it. This can cause _Unwind_Backtrace (used by backtrace_full in libbacktrace) to infloop.

also from Florian Weimer on oss-security:

Andreas Schwab of SuSE reported and fixed a glibc bug where the makecontext function would create an execution context which is incompatible with the unwinder, causing it to hang when the generation of a backtrace is attempted:

Alerts:
Fedora FEDORA-2016-b4c1b24a74 glibc-arm-linux-gnu 2016-10-19
Fedora FEDORA-2016-7e57edc4cc glibc-arm-linux-gnu 2016-10-19
openSUSE openSUSE-SU-2016:2443-1 glibc 2016-10-04
Fedora FEDORA-2016-87dde780b8 glibc 2016-09-02
Fedora FEDORA-2016-5f050a0a6d glibc 2016-08-19

Comments (none posted)

gnupg: flawed random number generation

Package(s):gnupg CVE #(s):CVE-2016-6313
Created:August 18, 2016 Updated:December 2, 2016
Description: Felix Doerre and Vladimir Klebanov from the Karlsruhe Institute of Technology discovered a flaw in the mixing functions of GnuPG's random number generator. An attacker who obtains 4640 bits from the RNG can trivially predict the next 160 bits of output. A first analysis on the impact of this bug for GnuPG shows that existing RSA keys are not weakened. For DSA and Elgamal keys it is also unlikely that the private key can be predicted from other public information.
Alerts:
CentOS CESA-2016:2674 libgcrypt 2016-11-12
Oracle ELSA-2016-2674 libgcrypt 2016-11-10
Scientific Linux SLSA-2016:2674-1 libgcrypt 2016-11-08
Oracle ELSA-2016-2674 libgcrypt 2016-11-07
Red Hat RHSA-2016:2674-01 libgcrypt 2016-11-08
Gentoo 201610-04 libgcrypt 2016-10-10
openSUSE openSUSE-SU-2016:2423-1 libgcrypt 2016-09-30
Arch Linux ASA-201609-14 lib32-libgcrypt 2016-09-17
Fedora FEDORA-2016-3a0195918f gnupg 2016-09-14
Fedora FEDORA-2016-2b4ecfa79f libgcrypt 2016-09-07
openSUSE openSUSE-SU-2016:2208-1 libgcrypt 2016-08-31
Mageia MGASA-2016-0292 gnupg/libgcrypt 2016-08-31
Debian-LTS DLA-602-1 gnupg 2016-08-29
Fedora FEDORA-2016-9864953aa3 gnupg 2016-08-26
Slackware SSA:2016-236-02 libgcrypt 2016-08-23
Slackware SSA:2016-236-01 gnupg 2016-08-23
Debian-LTS DLA-600-1 libgcrypt11 2016-08-23
Arch Linux ASA-201608-18 libgcrypt 2016-08-22
Fedora FEDORA-2016-81aab0aff9 libgcrypt 2016-08-20
Ubuntu USN-3065-1 libgcrypt11, libgcrypt20 2016-08-18
Ubuntu USN-3064-1 gnupg 2016-08-18
Debian DSA-3650-1 libgcrypt20 2016-08-17
Debian DSA-3649-1 gnupg 2016-08-17
Gentoo 201612-01 gnupg 2016-12-02

Comments (none posted)

kernel: use-after-free

Package(s):kernel CVE #(s):CVE-2016-6828
Created:August 23, 2016 Updated:August 24, 2016
Description:

From the Red Hat bug report:

A use after free vulnerability was found in tcp_xmit_retransmit_queue and other tcp_* functions.

Alerts:
Mageia MGASA-2016-0364 kernel-tmb 2016-11-04
openSUSE openSUSE-SU-2016:2625-1 kernel 2016-10-25
Mageia MGASA-2016-0347 kernel 2016-10-20
Ubuntu USN-3097-2 linux-ti-omap4 2016-10-13
Ubuntu USN-3099-4 linux-snapdragon 2016-10-11
Ubuntu USN-3099-3 linux-raspi2 2016-10-11
Ubuntu USN-3099-2 linux-lts-xenial 2016-10-11
Ubuntu USN-3098-2 linux-lts-trusty 2016-10-10
Ubuntu USN-3097-1 kernel 2016-10-10
Ubuntu USN-3098-1 kernel 2016-10-10
Ubuntu USN-3099-1 kernel 2016-10-11
openSUSE openSUSE-SU-2016:2290-1 kernel 2016-09-12
SUSE SUSE-SU-2017:0494-1 the Linux Kernel 2017-02-17
SUSE SUSE-SU-2017:0471-1 kernel 2017-02-15
Fedora FEDORA-2016-f1adaaadc6 kernel 2016-09-02
Fedora FEDORA-2016-2e5ebfed6d kernel 2016-09-02
Debian-LTS DLA-609-1 kernel 2016-09-03
Debian DSA-3659-1 kernel 2016-09-04
Fedora FEDORA-2016-723350dd75 kernel 2016-08-23
Fedora FEDORA-2016-5e24d8c350 kernel 2016-08-23
SUSE SUSE-SU-2017:0333-1 kernel 2017-01-30
CentOS CESA-2017:0086 kernel 2017-01-19
Scientific Linux SLSA-2017:0086-1 kernel 2017-01-17
Oracle ELSA-2017-0086 kernel 2017-01-17
Red Hat RHSA-2017:0113-01 kernel-rt 2017-01-17
Red Hat RHSA-2017:0091-01 kernel-rt 2017-01-17
Red Hat RHSA-2017:0086-01 kernel 2017-01-17
Scientific Linux SLSA-2017:0036-1 kernel 2017-01-12
Oracle ELSA-2017-3508 kernel 4.1.12 2017-01-12
Oracle ELSA-2017-3508 kernel 4.1.12 2017-01-12
Oracle ELSA-2017-3509 kernel 3.8.13 2017-01-12
Oracle ELSA-2017-3509 kernel 3.8.13 2017-01-12
Oracle ELSA-2017-3510 kernel 2.6.39 2017-01-12
Oracle ELSA-2017-3510 kernel 2.6.39 2017-01-12
CentOS CESA-2017:0036 kernel 2017-01-12
Oracle ELSA-2017-0036 kernel 2017-01-10
Red Hat RHSA-2017:0036-01 kernel 2017-01-10
SUSE SUSE-SU-2016:3304-1 kernel 2016-12-30
SUSE SUSE-SU-2016:3069-1 kernel 2016-12-09
openSUSE openSUSE-SU-2016:3021-1 kernel 2016-12-06
SUSE SUSE-SU-2016:2976-1 the Linux Kernel 2016-12-02
SUSE SUSE-SU-2016:2912-1 kernel 2016-11-25

Comments (none posted)

kernel: multiple vulnerabilities

Package(s):kernel CVE #(s):CVE-2015-3288 CVE-2012-6701
Created:August 24, 2016 Updated:August 24, 2016
Description:

From the openSUSE advisory:

CVE-2015-3288 - A security flaw was found in the Linux kernel that there was a way to arbitrary change zero page memory.

From the CVE entry:

Integer overflow in fs/aio.c in the Linux kernel before 3.4.1 allows local users to cause a denial of service or possibly have unspecified other impact via a large AIO iovec.

Alerts:
Ubuntu USN-3127-2 linux-lts-trusty 2016-11-11
Ubuntu USN-3127-1 kernel 2016-11-11
openSUSE openSUSE-SU-2016:2144-1 kernel 2016-08-24

Comments (none posted)

knot: denial of service

Package(s):knot CVE #(s):CVE-2016-6171
Created:August 22, 2016 Updated:August 24, 2016
Description: From the Red Hat bugzilla entry:

It was found that knot does not implement reasonable restrictions for zone sizes. This allows an explicitly configured primary DNS server for a zone to crash a secondary DNS server, affecting service of other zones hosted on the same secondary server.

Alerts:
Fedora FEDORA-2016-66c0c2105b knot 2016-08-19
Fedora FEDORA-2016-3479f8e060 knot 2016-08-19

Comments (none posted)

mingw-lcms2: heap memory leak

Package(s):mingw-lcms2 CVE #(s):CVE-2016-10165
Created:August 24, 2016 Updated:January 31, 2017
Description:

From the bug report:

An out-of-bounds read in cmstypes.c in Type_MLU_Read function was found, leading to heap memory leak triggered by crafted ICC profile.

Alerts:
Mageia MGASA-2016-0303 lcms2 2016-09-16
Fedora FEDORA-2016-8e55114267 lcms2 2016-09-04
Fedora FEDORA-2016-1ebd9e116b lcms2 2016-08-27
Fedora FEDORA-2016-24c2453d6c mingw-lcms2 2016-08-24
openSUSE openSUSE-SU-2017:0336-1 lcms2 2017-01-31
Debian DSA-3774-1 lcms2 2017-01-29
Debian-LTS DLA-803-1 lcms2 2017-01-26

Comments (none posted)

pagure: cross-site scripting

Package(s):pagure CVE #(s):CVE-2016-1000037
Created:August 23, 2016 Updated:August 24, 2016
Description:

From the Red Hat bug report:

It was found that Pagure served uploaded files from its attachment endpoint with content types that instructed the browser to parse HTML files, which could lead to Cross-Site Scripting attacks.

Alerts:
Fedora FEDORA-2016-40d5f1d3c2 pagure 2016-08-23

Comments (none posted)

suckless-tools: screen locking bypass

Package(s):suckless-tools CVE #(s):CVE-2016-6866
Created:August 22, 2016 Updated:November 21, 2016
Description: From the Debian-LTS advisory:

It was discovered that the slock screen locking tool would segfault when the user's account had been disabled. slock called crypt(3) and used the return value for strcmp(3) without checking to see if the return value of crypt(3) was a NULL pointer. If the hash returned by (getspnam()->sp_pwdp) was invalid, crypt(3) would return NULL and set errno to EINVAL. This would cause slock to segfault which leaves the machine unprotected.

Alerts:
Mageia MGASA-2016-0308 slock 2016-09-21
Fedora FEDORA-2016-7e817cbf55 slock 2016-09-09
Fedora FEDORA-2016-985b68721b slock 2016-09-09
Debian-LTS DLA-598-1 suckless-tools 2016-08-20
Arch Linux ASA-201611-21 slock 2016-11-21

Comments (none posted)

xen: denial of service

Package(s):xen CVE #(s):CVE-2016-4963
Created:August 18, 2016 Updated:August 24, 2016
Description: From the SUSE advisory:

CVE-2016-4963: The libxl device-handling allowed local guest OS users with access to the driver domain to cause a denial of service (management tool confusion) by manipulating information in the backend directories in xenstore (bsc#979670).

Alerts:
SUSE SUSE-SU-2016:2533-1 xen 2016-10-13
openSUSE openSUSE-SU-2016:2497-1 xen 2016-10-11
openSUSE openSUSE-SU-2016:2494-1 xen 2016-10-11
SUSE SUSE-SU-2016:2100-1 xen 2016-08-18
SUSE SUSE-SU-2016:2093-1 xen 2016-08-17
Mageia MGASA-2017-0012 xen 2017-01-09

Comments (none posted)

Page editor: Jake Edge
Next page: Kernel development>>


Copyright © 2016, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds