Security
Code authenticity checking
Cryptographically signed binary packages are mainstay of modern Linux distributions, used for verifying packages against both tampering and accidental corruption. But as ever fewer users need to compile their software from source, it is possible to forget that verifying the authenticity and integrity of binary packages depends first on the packagers' ability to verify the upstream source code. In April, Allan McRae posted an entry on his blog that looked at the verifiability of the source code releases made by a number of well-known projects, with less-than-perfect results.
McRae is a core Arch Linux developer, and he undertook his verifiability survey because Arch's packaging tool makepkg recently gained support for checking the PGP signatures of source files. Naturally, such verification is only possible when the source bundle includes a PGP signature, but McRae also looked at four other interrelated factors: whether or not the signing key can be easily verified as authentic, whether checksums for the source files are available, whether the checksums are signed, and whether the checksums are available on a different server than the one hosting the source files. This last criterion is a guard against a server compromise; if an attacker can replace the source files, he or she can also replace the checksum with one that matches the replacement source.
To provide a meaningful sample population for his survey, McRae
looked at 63 "core" packages common to most Linux
distributions. "For me, that basically means the packages
required to build a fairly minimal booting system. This is essentially
the package list from Linux From Scratch with a few additions that I
see as needed …
" His results are presented in a color-coded
table; green cells indicate that a package meets all of the
verification criteria, red indicates that no verification criteria
pass, and yellow indicate some but not all criteria are met. Of the
63 packages examined, ten offered no means of verification and 14
others offered only partial verification.
The packages offering no verification mechanism are file, flex, iana-etc, isl, kbd, libarchive, pkg-config, procps, psmisc, and which. Those packages that partially meet the measured criteria fall into two basic categories, those that provide PGP signatures but have a difficult-to-verify key (gawk, groff, patch, sed, sudo, sysvinit, texinfo, and xz), and those that provide their checksum data on the same server as their files (bzip2, perl, tzdata, and zlib). In addition, gmp and less fell somewhere in between, providing a PGP signature, but making the public key or key ID available only on the same server as the source release.
To be sure, McRae's specific criteria and red/yellow/green
assessments draw some rather arbitrary lines—as he observes,
several of the projects have other means of verification available,
and he admits that the definition of a "readily verifiable" key
includes keys signed by keys that he trusts. But the
aggregate picture is the important one: most of the packages are
green (which is good news), but roughly 15% of them offer no source
verification whatsoever (which is far from good). He also notes that
the picture seems to rapidly deteriorate "as you move further
away from this core subset of packages needed for a fairly standard
Linux system
".
Best practices
McRae's post was picked up on the oss-security mailing list, where
the talk turned to how to establish a set of common guidelines for
releasing source code with verifiable authenticity. Alan Coopersmith
commented that X.org has received
complaints asking it to do more, but without concrete suggestions. "If there was a common standard, with instructions, we'd be far more
likely to spend the time to adopt it, than just a 'make signatures
appear somewhere, in an unspecified format'
". Eric
H. Christensen concurred, saying he
was interested in establishing a "best practices" recommendation for
Red Hat—but, he asked, what really constitutes the best
way to disseminate releases? A recommendation would advise against
using MD5 for checksumming, he said, and although he favors PGP for
signatures, perhaps it has its drawbacks as well.
Indeed, Alistair Crooks replied with a lengthy list of questions one might ask about a PGP-signed release, addressing everything from the key management practices employed by the signing entity to the options specified when generating the key itself (such as whether it is an RSA or DSA key and whether or not it requires a passphrase). A PGP signature proves only that a person with access to the signing key attests that the signed message had a particular value at a particular time, he argued, which does not provide much authentication:
I'm not sure what using PGP gains us?
But the majority seemed to feel that PGP in fact provides quite a
few gains. Nicolas Vigier and Florian Weimer both commented that
key-continuity over multiple releases safeguards against a
man-in-the-middle attacker replacing a release. Weimer noted that "hosting sites have been
compromised, or serve their content exclusively over a mirror network which
literally anyone can join.
" Kurt Seifried agreed, but acknowledged that the "real
problem
" with PGP is the cost of implementing it:
I think if we are going to push this we need to come up with a pretty good set of guidelines that are easy to follow and implement.
Daniel Kahn Gillmor responded that
even a simple "the release manager has the OpenPGP key for the
project on the keyring of her personal development machine
"
workflow raises the bar for would-be attackers and would constitute an
improvement for the numerous projects that do not currently sign their
releases at all. But he still advocated producing guidelines:
That way we could encourage all projects to get to the "baseline" (which should be short and simple) without requiring them to "level up" right away (to offline key storage, key transition statements, etc).
He pointed to the existing OpenPGP best practices page at the Debian Grimoire wiki as an example.
For his part, McRae had comparatively simple goals in mind:
Identity cleft
Although a general consensus developed around the idea of crafting
a "best practices" recommendation, Crooks's questions about the
limitations of PGP signatures raised some valuable points—such
as the importance of distinguishing between identity and trust. Some
mistook his original email for a call to ditch PGP signatures on
source releases, since they do not offer absolute security, but Crooks
said that was a
misinterpretation. "It's a bit disappointing that my advice (in
pointing out ways that PGP can be worked around in order to diminish
integrity and security) was categorised as an attack on PGP itself - I
shall take that as a reminder that I should be more clear in what I
write.
" Rather, he said, he hoped to "warn against the
magic 'it's signed, so it's gospel' myth by pointing out the problems
of key management.
"
The crux of Crooks's argument is that a PGP signature should not be trusted just because it is associated with a known identity (person or team of developers). As he elaborated in one message in the ensuing thread:
Elsewhere in the same message, he noted:
In essence, this is an argument that the signer only earns trust by
demonstrating their reliability over time. For individuals, the issue
might be the quality of the software (as Crooks discussed above), but
to trust the signature on a project's releases, more stringent
requirements may be necessary. As he added later: "You actually know
very little about the key before and after the signing took place; so
you have no way of ascertaining whether the key has been used to sign
other things fraudulently.
"
Add in Crooks's earlier questions about the key options and security on the machines used to sign releases, and proper key management, it would seem, remains an area where there is still work to be done. Crooks did reiterate his support for encouraging PGP signatures on all source releases; he simply cautioned that blind trust in the presence of a signature can lead to a false sense of security.
Then again, a campaign to persuade more upstream software projects to integrate easily-verified PGP signatures and out-of-band checksums into their release process has to start somewhere. There are practical challenges to consider, such as the role that popular hosting providers play in the build and release processes (Stuart Henderson noted that Github and Bitbucket dynamically generate tar archives, which complicates signing releases).
But convincing individual developers and release managers might be the best way to convince hosting services to adapt. Presumably few people enjoy seeing their project marked with the red "No verification available" label. It would certainly be informative to conduct a large-scale examination of McRae's criteria on other popular open source projects. Just over 38% of the core packages McRae examined could not be "readily validated"—a sizable minority, but a minority nonetheless; that gives one hope that the community in general takes source verifiability as a matter worth addressing.
Brief items
Security quotes of the week
In some cities, like New York, the surveillance-industrial complex has its fangs deeply into government for the big bucks. It's there we heard the Police Commissioner -- just hours ago, really -- claim that "privacy is off the table."
Mozilla: Protecting our brand from a global spyware provider
The Mozilla blog reports that Mozilla is using its trademarks to back up a cease-and-desist letter to Gamma International, the maker of the infamous FinFisher surveillance system. "We cannot abide a software company using our name to disguise online surveillance tools that can be – and in several cases actually have been – used by Gamma’s customers to violate citizens’ human rights and online privacy."
New vulnerabilities
clamav: multiple vulnerabilities
| Package(s): | clamav | CVE #(s): | CVE-2013-2020 CVE-2013-2021 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | April 30, 2013 | Updated: | June 21, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the clamav bug tracker entries [1, 2]:
Bug was in handling of UPX-packed executables. When checking for a skewed offset section, it would not rule out a possible skew value that was larger than the size of the PE section. Because of unsigned math, it would cause the resulting expected section size to rollover to exceedingly large values and try inappropriate heap reads. Problem was in handling of encrypted PDF's. A specially crafted PDF could set a user-controlled length which is then used to allocate heap memory and then read length bytes off of the stack, potentially beyond the size of a static array. | ||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||
glibc: denial of service
| Package(s): | glibc | CVE #(s): | CVE-2013-1914 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | April 25, 2013 | Updated: | August 22, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat advisory: It was found that getaddrinfo() did not limit the amount of stack memory used during name resolution. An attacker able to make an application resolve an attacker-controlled hostname or IP address could possibly cause the application to exhaust all stack memory and crash. (CVE-2013-1914) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kernel: multiple vulnerabilities
| Package(s): | kernel | CVE #(s): | CVE-2013-3228 CVE-2013-3230 CVE-2013-3231 CVE-2013-3232 CVE-2013-3233 CVE-2013-3234 CVE-2013-3076 CVE-2013-3223 CVE-2013-3225 CVE-2013-1979 CVE-2013-3224 CVE-2013-3222 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Created: | April 29, 2013 | Updated: | July 19, 2013 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla entries:
[CVE-2013-3228]: Linux kernel built with the Asynchronous Transfer Mode(ATM) support is vulnerable to an information leakage flaw. It occurs when doing recvmsg(2) calls on the ATM PVC & SVC sockets. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3224]: Linux kernel built with Bluetooth networking support is vulnerable to an information leakage flaw. This occurs while receiving messages via recvmsg call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-1979]: Commit 257b5358b32f ("scm: Capture the full credentials of the scm sender") changed the credentials passing code to pass in the effective uid/gid instead of the real uid/gid. Obviously this doesn't matter most of the time (since normally they are the same), but it results in differences for suid binaries when the wrong uid/gid ends up being used. An unprivileged local user could use this flaw to elevate their privileges. [CVE-2013-3225]: Linux kernel built with Bluetooth networking with RFCOMM protocol support is vulnerable to an information leakage flaw. This occurs while receiving messages via recvmsg call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3223]: Linux kernel built with the Amateur Radio support(CONFIG_HAMRADIO) along with the Amateur Radio AX.25 Level 2 protocol support enabled is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3076]: Linux kernel built with the User-space interface for hash algorithms (CONFIG_CRYPTO_USER_API_HASH) and User-space interface for symmetric key cipher algorithms (CONFIG_CRYPTO_USER_API_SKCIPHER) support is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3234]: Linux kernel built with the ROSE virtual network devices (CONFIG_ROSE) support is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3233]: Linux kernel built with the Near Field Communication(CONFIG_NFC) subsystem along with the Logical Link Control Protocol(CONFIG_NFC_LLCP) support is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3232]: Linux kernel built with the NETROM virtual network devices (CONFIG_NETROM) support are vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) socket call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3231]: Linux kernel built with Logical Link layer Control(CONFIG_LLC) protocol support is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) socket call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3230]: Linux kernel built with the Layer Two Tunneling Protocol (CONFIG_L2TP) support is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) call. A user/program could use this flaw to leak kernel memory bytes. [CVE-2013-3228]: Linux kernel built with the The Infrared Data Associations (CONFIG_IRDA) protocol is vulnerable to an information leakage flaw. It occurs while receiving messages via recvmsg(2) socket call. A user/program could use this flaw to leak kernel memory bytes. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
libxml2: multiple unspecified vulnerabilities
| Package(s): | libxml2 | CVE #(s): | CVE-2013-1969 | ||||||||||||||||||||||||||||
| Created: | April 25, 2013 | Updated: | June 11, 2013 | ||||||||||||||||||||||||||||
| Description: | The libxml2 2.9.1 release apparently fixes multiple vulnerabilities, but nobody is saying exactly what they are.
Thanks to David Walser, we now know that one of the vulnerabilities mentioned by Fedora is a "use after free" that has been assigned CVE-2013-1969. | ||||||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||||||
mantis: two vulnerabilities
| Package(s): | mantis | CVE #(s): | CVE-2013-1930 CVE-2013-1931 | ||||||||||||||||
| Created: | April 25, 2013 | Updated: | August 5, 2013 | ||||||||||||||||
| Description: | From the Red Hat bugzilla entries [1, 2]: CVE-2013-1930: A security flaw was found in the way MantisBT, a web-based issue tracking system, performed user-privilege check when displaying issue close button (close button was previously shown at a web page even when 'close' was not a valid status by / according to workflow definition). An unprivileged MantisBT user could use this flaw to close particular issue even though the particular workflow settings did not permit it. CVE-2013-1931: A cross-site scripting (XSS) flaw was found in the way MantisBT, a web-based issue tracking system, sanitized content of the version name, when deleting a project version. A remote attacker could provide a specially-crafted URL that, when visited would lead to arbitrary HTML or web script execution in the context of the MantisBT user's session. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
mediawiki: multiple vulnerabilities
| Package(s): | mediawiki | CVE #(s): | CVE-2013-1951 | ||||||||||||||||
| Created: | April 30, 2013 | Updated: | May 1, 2013 | ||||||||||||||||
| Description: | From the Red Hat bugzilla:
Three flaws were corrected in the recently-released MediaWiki 1.20.4 and 1.19.5 releases: * An internal review discovered that specially crafted Lua function names could lead to cross-site scripting. MediaWiki bug 46084 * Daniel Franke reported that during SVG parsing, MediaWiki failed to prevent XML external entity (XXE) processing. This could lead to local file disclosure, or potentially remote command execution in environments that have enabled expect:// handling. MediaWiki bug 46859 * Internal review also discovered that Special:Import, and Extension:RSS failed to prevent XML external entity (XXE) processing. MediaWiki bug 47251 CVE-2013-1951 was assigned to the first issue (the XSS), the other two do not have CVEs assigned as per a discussion on oss-sec. | ||||||||||||||||||
| Alerts: |
| ||||||||||||||||||
mysql: multiple vulnerabilities
| Package(s): | mysql-5.5 | CVE #(s): | CVE-2012-0553 CVE-2013-1492 CVE-2013-1623 | ||||||||||||
| Created: | April 26, 2013 | Updated: | May 1, 2013 | ||||||||||||
| Description: | From the Ubuntu issue tracker: Buffer overflow in yaSSL, as used in MySQL 5.1.x before 5.1.68 and 5.5.x before 5.5.28, has unspecified impact and attack vectors, a different vulnerability than CVE-2013-1492. (CVE-2012-0553) Buffer overflow in yaSSL, as used in MySQL 5.1.x before 5.1.68 and 5.5.x before 5.5.30, has unspecified impact and attack vectors, a different vulnerability than CVE-2012-0553. (CVE-2013-1492) The TLS and DTLS implementations in wolfSSL CyaSSL before 2.5.0 do not properly consider timing side-channel attacks on a noncompliant MAC check operation during the processing of malformed CBC padding, which allows remote attackers to conduct distinguishing attacks and plaintext-recovery attacks via statistical analysis of timing data for crafted packets, a related issue to CVE-2013-0169. (CVE-2013-1623) | ||||||||||||||
| Alerts: |
| ||||||||||||||
pdns-recursor: ghost domain name resolving flaw
| Package(s): | pdns-recursor | CVE #(s): | CVE-2012-1193 | ||||||||||||
| Created: | May 1, 2013 | Updated: | May 1, 2013 | ||||||||||||
| Description: | From the CVE entry:
The resolver in PowerDNS Recursor (aka pdns_recursor) 3.3 overwrites cached server names and TTL values in NS records during the processing of a response to an A record query, which allows remote attackers to trigger continued resolvability of revoked domain names via a "ghost domain names" attack. | ||||||||||||||
| Alerts: |
| ||||||||||||||
php-twig-Twig: file disclosure
| Package(s): | php-twig-Twig | CVE #(s): | |||||||||
| Created: | April 29, 2013 | Updated: | May 1, 2013 | ||||||||
| Description: | From the Twig advisory:
Your application is affected if you are using Twig_Loader_Filesystem for loading Twig templates but only if you are using non-trusted template names (names provided by a end-user for instance). When affected, it is possible to go up one directory for the paths configured in your loader. For instance, if the filesystem loader is configured with /path/to/templates as a path to look for templates, you can force Twig to include a file stored in /path/to by prepending the path with /../ like in {% include "/../somefile_in_path_to" %} Note that using anything else (like ../somefile, /../../somefile, or ../../somefile) won’t work and you will get a proper exception. | ||||||||||
| Alerts: |
| ||||||||||
qemu: host file disclosure
| Package(s): | qemu | CVE #(s): | CVE-2013-1922 | ||||||||||||||||||||||||
| Created: | April 25, 2013 | Updated: | May 3, 2013 | ||||||||||||||||||||||||
| Description: | From the Red Hat bugzilla entry: A security flaw was found in the way qemu-nbd, the QEMU Disk Network Block Device server tool of QEMU, performed detection of image formats (the image format has been previously autodetected). A guest operating system administrator could write a header to particular raw disk image format, describing another format than original one for that disk image, leading to scenario in which after restart of that guest, QEMU would detect new format of the image, and could allow the guest to read any file on the host if QEMU was sufficiently privileged. | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
strongswan: authentication bypass
| Package(s): | strongswan | CVE #(s): | CVE-2013-2944 | ||||||||||||||||||||||||
| Created: | April 30, 2013 | Updated: | June 11, 2013 | ||||||||||||||||||||||||
| Description: | From the Debian advisory:
Kevin Wojtysiak discovered a vulnerability in strongSwan, an IPsec based VPN solution. When using the openssl plugin for ECDSA based authentication, an empty, zeroed or otherwise invalid signature is handled as a legitimate one. An attacker could use a forged signature to authenticate like a legitimate user and gain access to the VPN (and everything protected by this). While the issue looks like CVE-2012-2388 (RSA signature based authentication bypass), it is unrelated. | ||||||||||||||||||||||||||
| Alerts: |
| ||||||||||||||||||||||||||
Page editor: Jake Edge
Next page:
Kernel development>>
