LWN.net Logo

Security

System integrity in Linux

By Jake Edge
December 3, 2008

Ensuring that a Linux system is only running "approved" programs—ones that haven't been maliciously replaced—is one of the goals of the integrity patches currently being proposed for the Linux mainline. With some hardware assistance, in the form of a Trusted Platform Module (TPM) chip, systems will be able to protect against unauthorized binaries as well as attest to other systems that they are only running good code. These patches have been around for a number of years in various forms, but it would seem they are getting close to being merged. Perhaps more interestingly, we are starting to see them be used by various projects.

Over on the kernel page, we have looked at the integrity patches several times, most recently in March 2007. The core idea is to complement mandatory access control (MAC) systems, such as SELinux, by preventing attacks that are made when that system isn't running—the machine has been booted with a different kernel for example. It is generally considered a security truism that physical access to a device moots any security measures, but with a properly outfitted TPM-based system, that is no longer the case.

Conceptually, there are two parts to the integrity feature. One is the extended verification module (EVM) that associates each file with a hash that has been calculated over its contents and metadata. That hash is then signed by the TPM chip ensuring that unauthorized changes will be noticed. The other half is the integrity measurement architecture (IMA) which tracks the use of mmap(). IMA verifies the hashes of files that have been mapped in executable mode and then keeps track of them in a way that the TPM can sign. EVM then provides the protection against tampering with binaries, while IMA can provide a signed attestation of which executables have been run.

Previous incarnations of EVM and IMA used the Linux Security Modules (LSM) interface, but that has a very unfortunate side effect: inability to also run SELinux. LSM code has no way to stack or cooperate, so there can only be one module active at a time. Since integrity and MAC are intended to work together, this was seen as a rather serious impediment, so the most recent versions add in hooks for Linux Integrity Modules (LIM). IMA is then added as a LIM integrity provider rather than as an LSM.

In response to an Andrew Morton query about the need for LIM/IMA (EVM has been incorporated into IMA over time), David Safford listed several users of the code:

LIM/IMA's maintenance of a TPM hardware anchored file measurement list is fundamental to the Trusted Computing Group's standards efforts. Several projects have implemented the TNC (Trusted Network Connect) and PTS (Platform Trust Services) standards (see below). There are three demo packaged distros which have integrated these apps, two of which are government funded (EU and US), with definite customer interest. We are working with the RHEL team to provide a supported, patched kernel for HAP. All of these so far have used the old LSM based IMA, and have asked for a supported, upstreamed implementation, with the ability to work with SELinux.

While that looks a bit like alphabet soup, there is a lot of useful information there (and in his links further down in the post linked above). The biggest news is the three distributions that are implementing "Trusted Computing". The High Assurance Platform (HAP) program is funded by the US National Security Agency (NSA), the folks who brought us SELinux, while the Open Trusted Computing project is funded by the European Commission.

While the security that can be provided by a Trusted Computing platform is useful for some installations, there are some potential pitfalls as well. Systems with TPM hardware can be configured to only run binaries that are signed by some external authority. If manufacturers were to enable that functionality, but only provide the key to "trusted" software companies, it would lead to a horrendous loss of freedom. This is why some have called it "Treacherous Computing".

There are numerous examples of systems that do not necessarily preserve physical security, but that one might want to ensure were running the proper code—voting and cash machines come quickly to mind. For those situations, as well as countless others, Trusted Computing will be a real boon. We just need to be vigilant so that hardware vendors (or, worse yet, governments) don't start restricting what we can run on our own machines.

Comments (9 posted)

New vulnerabilities

clamav: stack overflow

Package(s):clamav CVE #(s):
Created:December 3, 2008 Updated:December 3, 2008
Description:

From the ClamAV bugzilla entry:

There is a recursive stack overflow in clamav 0.93.3 and 0.94 (and probably older versions) in the jpeg parsing code. it scan[]s the jpeg file, and if there is a thumbnail, it'll scan that too. the thumbnail itself is just another jpeg file and the same jpeg scanning function gets called without checking any kind of recur[]sing limit. this can eas[i]ly lead to a recurisive stack overflow.

Alerts:
Ubuntu USN-684-1 2008-12-02

Comments (none posted)

cupsys: arbitrary code execution

Package(s):cupsys CVE #(s):CVE-2008-5286
Created:December 3, 2008 Updated:January 26, 2009
Description:

From the Debian advisory:

An integer overflow has been discovered in the image validation code of cupsys, the Common UNIX Printing System. An attacker could trigger this bug by supplying a malicious graphic that could lead to the execution of arbitrary code.

Alerts:
rPath rPSA-2008-0338-1 2008-12-19
CentOS CESA-2008:1028 2008-12-15
Red Hat RHSA-2008:1028-01 2008-12-15
Gentoo 200812-11 2008-12-10
Debian DSA-1677-1 2008-12-02
Mandriva MDVSA-2009:029 2009-01-24
Mandriva MDVSA-2009:028 2009-01-24
SuSE SUSE-SR:2009:002 2009-01-19
Ubuntu USN-707-1 2009-01-12

Comments (none posted)

flamethrower: temporary file vulnerability

Package(s):flamethrower CVE #(s):CVE-2008-5141
Created:December 2, 2008 Updated:December 3, 2008
Description: Flamethrower suffers from a temporary file vulnerability which can be exploited to create a denial of service situation.
Alerts:
Debian DSA-1676-1 2008-12-01

Comments (none posted)

jailer: denial of service via symlink

Package(s):jailer CVE #(s):CVE-2008-5139
Created:December 1, 2008 Updated:December 3, 2008
Description:

From the Debian advisory:

Javier Fernandez-Sanguino Pena discovered that updatejail, a component of the chroot maintenance tool Jailer, creates a predictable temporary file name, which may lead to local denial of service through a symlink attack.

Alerts:
Debian DSA-1674-1 2008-11-30

Comments (none posted)

kernel: denial of service

Package(s):linux, linux-source-2.6.15/22 CVE #(s):CVE-2007-5498
Created:November 27, 2008 Updated:December 3, 2008
Description: The kernel has a denial of service vulnerability. From the vulnerability database entry: The Xen hypervisor block backend driver for Linux kernel 2.6.18, when running on a 64-bit host with a 32-bit paravirtualized guest, allows local privileged users in the guest OS to cause a denial of service (host OS crash) via a request that specifies a large number of blocks.
Alerts:
Ubuntu USN-679-1 2008-11-27

Comments (none posted)

kernel: denial of service

Package(s):linux, linux-source-2.6.15/22 CVE #(s):CVE-2008-5025
Created:November 27, 2008 Updated:February 10, 2009
Description: The kernel has a denial of service vulnerability. From the vulnerability database: Stack-based buffer overflow in the hfs_cat_find_brec function in fs/hfs/catalog.c in the Linux kernel before 2.6.28-rc1 allows attackers to cause a denial of service (memory corruption or system crash) via an hfs filesystem image with an invalid catalog namelength field, a related issue to CVE-2008-4933.
Alerts:
CentOS CESA-2009:0014 2009-01-15
Mandriva MDVSA-2008:246 2008-12-29
Red Hat RHSA-2009:0264-01 2009-02-10
SuSE SUSE-SA:2009:008 2009-01-29
Debian DSA-1687-1 2008-12-15
Debian DSA-1681-1 2008-12-04
Ubuntu USN-679-1 2008-11-27
SuSE SUSE-SA:2009:004 2009-01-21
SuSE SUSE-SA:2009:003 2009-01-20
Red Hat RHSA-2009:0014-01 2009-01-14

Comments (none posted)

kernel: denial of service

Package(s):linux, linux-source-2.6.15/22 CVE #(s):CVE-2008-5033
Created:November 27, 2008 Updated:August 20, 2009
Description: The kernel has a denial of service vulnerability. From the vulnerability database entry: The chip_command function in drivers/media/video/tvaudio.c in the Linux kernel 2.6.25.x before 2.6.25.19, 2.6.26.x before 2.6.26.7, and 2.6.27.x before 2.6.27.3 allows attackers to cause a denial of service (NULL function pointer dereference and OOPS) via unknown vectors.
Alerts:
SuSE SUSE-SA:2009:045 2009-08-20
Mandriva MDVSA-2008:246 2008-12-29
Ubuntu USN-679-1 2008-11-27

Comments (none posted)

libsamplerate: buffer overflow

Package(s):libsamplerate CVE #(s):CVE-2008-5008
Created:December 2, 2008 Updated:December 5, 2008
Description: Versions of libsamplerate prior to 0.1.4 suffer from a buffer overflow which could be exploited (via a specially-crafted audio file) to execute arbitrary code.
Alerts:
Mandriva MDVSA-2008:238 2008-12-04
Gentoo 200812-05 2008-12-02

Comments (none posted)

mantis: multiple vulnerabilities

Package(s):mantis CVE #(s):CVE-2008-4687 CVE-2008-4688 CVE-2008-4689
Created:December 2, 2008 Updated:December 3, 2008
Description: The mantis bug tracking system has a few bugs of its own, including a failure to sanitize input parameters, information disclosure, and a failure to unset session cookies on logout.
Alerts:
Gentoo 200812-07 2008-12-02

Comments (none posted)

perl: privilege escalation

Package(s):perl CVE #(s):CVE-2008-5302 CVE-2008-5303 CVE-2005-0448 CVE-2004-0452
Created:December 3, 2008 Updated:June 14, 2010
Description:

From the Debian advisory:

Paul Szabo rediscovered a vulnerability in the File::Path::rmtree function of Perl. It was possible to exploit a race condition to create setuid binaries in a directory tree or remove arbitrary files when a process is deleting this tree. This issue was originally known as CVE-2005-0448 and CVE-2004-0452, which were addressed by DSA-696-1 and DSA-620-1. Unfortunately, they were reintroduced later.

Alerts:
Mandriva MDVSA-2010:116 2010-06-11
CentOS CESA-2010:0458 2010-06-12
Red Hat RHSA-2010:0458-02 2010-06-07
SuSE SUSE-SR:2009:004 2009-02-17
Ubuntu USN-700-1 2008-12-24
Debian DSA-1678-2 2008-12-21
rPath rPSA-2009-0011-1 2009-01-20
Debian DSA-1678-1 2008-12-03
Ubuntu USN-700-2 2009-01-15

Comments (none posted)

phpMyAdmin: cross-site scripting

Package(s):phpmyadmin CVE #(s):CVE-2008-4326
Created:December 1, 2008 Updated:February 2, 2009
Description:

From the Debian advisory:

Masako Oono discovered that phpMyAdmin, a web-based administration interface for MySQL, insufficiently sanitises input allowing a remote attacker to gather sensitive data through cross site scripting, provided that the user uses the Internet Explorer web browser.

Alerts:
Debian DSA-1675-1 2008-11-30
SuSE SUSE-SR:2009:003 2009-02-02

Comments (none posted)

samba: bounds checking problem

Package(s):samba CVE #(s):CVE-2008-4314
Created:November 27, 2008 Updated:October 5, 2009
Description: Samba has a bounds checking issue. From the Ubuntu alert: It was discovered that Samba did not properly perform bounds checking in certain operations. A remote attacker could possibly exploit this to read arbitrary memory contents of the smb process, which could contain sensitive information or possibly have other impacts, such as a denial of service.
Alerts:
Fedora FEDORA-2009-10172 2009-10-03
Gentoo 200903-07 2009-03-07
SuSE SUSE-SR:2008:027 2008-12-09
Fedora FEDORA-2008-10612 2008-12-02
Fedora FEDORA-2008-10518 2008-12-02
Fedora FEDORA-2008-10638 2008-12-02
Slackware SSA:2008-333-01 2008-12-01
Ubuntu USN-680-1 2008-11-27
rPath rPSA-2009-0006-1 2009-01-13
SuSE SUSE-SR:2009:001 2009-01-12
Fedora FEDORA-2009-0268 2009-01-07

Comments (none posted)

wordpress: cross-site scripting

Package(s):wordpress CVE #(s):CVE-2008-5278
Created:December 3, 2008 Updated:December 22, 2008
Description:

From the Red Hat bugzilla entry:

Cross-site scripting (XSS) vulnerability in the self_link function in in the RSS Feed Generator (wp-includes/feed.php) for WordPress before 2.6.5 allows remote attackers to inject arbitrary web script or HTML via the Host header (HTTP_HOST variable).

Alerts:
Fedora FEDORA-2008-11104 2008-12-22
Fedora FEDORA-2008-10482 2008-12-03
Fedora FEDORA-2008-10483 2008-12-03
Fedora FEDORA-2008-10468 2008-12-03

Comments (none posted)

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

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