While the Linux
Security Summit (LSS) was held later in the week, it
was logically part of the minisummits that accompanied the Kernel
Summit—organizer James Morris made a forward-reference report on LSS
as part of the minisummit reports. Day one was filled with talks on
various topics of interest to the
assembled security developers, while day two was mostly devoted to reports
from the kernel security subsystems. We plan to write up much of LSS over
the coming weeks; the first installment covers a talk given by SELinux
developer Dan Walsh on secure Linux containers.
Walsh's opening slide had a picture of a "secure" Linux container (label
seen at right)—a plastic "unix ware" storage container—but his
talk was a tad more serious. Application sandboxes are becoming more common
for isolating general-purpose applications from each other. There are a
variety of Linux tools that can be used to create sandboxes, including seccomp,
SELinux, the Java virtual machine, and virtualization. The idea behind
sandboxing is the age-old concept of "defense in depth".
There is another mechanism that can be used to isolate applications:
containers. When most people think of containers, they think of LXC, which
is a command-line tool created by IBM. But, the Linux kernel knows nothing
about containers, per se, and LXC is built atop Linux namespaces.
The secure containers project did not use LXC directly; instead it
uses libvirt-lxc.
Using namespaces, child processes can have an entirely different view
of the system than does the parent. Namespaces are not all that new, RHEL5
and Fedora 6 used the pam_namespace to partition logins into "secret"
vs. "top secret" for example. The SELinux sandbox also used namespaces and
was available in RHEL6 and Fedora 8. More recently, Fedora 17 uses
systemd which has PrivateTmp and PrivateNetwork directives for unit files
that can be used
to give services their own view of /tmp or the network. There are
20-30 services in Fedora 17 that are running with their own /tmp,
Walsh said.
In addition, Red Hat offers the OpenShift service which allows
anyone to have their own Apache webserver for free on Red Hat servers. It
is meant to remove the management aspect so that developers can concentrate
on developing web applications that can eventually be deployed elsewhere.
Since there are many different Apache instances running on the OpenShift
servers, sandboxing is used to keep them from interfering with each other.
There are several different kinds of namespaces in Linux. The mount
namespace gives processes their own view of the filesystem, while the PID
namespace gives them their own set of process IDs. The IPC and Network
namespaces allow for private views of those resources, and the UTS
namespace allows the processes to have their own host and domain names.
The UID namespace is
another that is not yet available, and one that concerns Walsh because of
its intrusiveness. It would give a private set of UIDs, such that UID 0
inside of the namespace is not the same as root outside.
Secure Linux containers uses libvirt-lxc to set up namespaces that
effectively create
containers to hold processes that are isolated from those in other
containers. Libvirt-lxc has a C API, but also has bindings for several different
higher-level languages. It can set up a container, with a firewall,
SELinux type enforcement (TE) and multi-category security (MCS), bind
mounts that pass through to the host filesystem, and so on. Once that is
done, it can start an init process (systemd in this case) inside
the container so that it appears to be almost a full Linux system inside the
container. In addition, these containers can be managed using control
groups (cgroups) so that no one container can monopolize resources like
memory or CPU.
But, libvirt-lxc has a complex API that is XML-based. Walsh wanted something
simpler, so he created libvirt-sandbox with a key-value based
configuration. He intends to replace the SELinux sandbox using
libvirt-sandbox, but it is not quite ready for that yet.
To make things even easier, Walsh created a Python script that makes it
"dirt simple" for an administrator to build a container or set of
containers. He said that Red Hat is famous for building "cool tools that
no one uses" because they are too complicated, so he set out to make
something very simple to use.
The tool can be used as follows:
virt-sandbox-service create -C -u httpd.service.apache1
That call will do multiple things under the covers. It creates a systemd
unit file for the container, which means that standard systemd commands can
be used to manage it. In addition, if someone puts a GUI on systemd
someday, administrators can use that to manage their containers, he said.
It also
creates the filesystems for the container. It does not use a full
chroot(), Walsh said, because he wants to be able to share
/usr between containers. For this use case (an Apache web server
container), he wants the individual containers to pick up any updates that
come from doing a
yum update on the host.
It also clones the /var and
/etc configuration files into its own copy. In a perfect world,
the container would bind mount over /etc, but it can't do that,
partly because /etc has so many needed configuration files
("/etc is a cesspool of garbage" was his colorful way of describing
that). In addition, it allocates a unique SELinux MCS label that restricts the
processes inside the container. "Containers are not for security", he
said, because root inside the container can always escape, so the container
gets wrapped in SELinux to restrict it.
Once the container has been created, it can be started with:
virt-sandbox-service start apache1
Similarly, the
stop command can terminate the container. One can
also use the
connect command to get a shell in the container.
virt-sandbox-service execute -C ifconfig apache1
will run a command in the container. For example, there is no
separate
cron running in each of the containers, instead the
execute is used to do things like
logrotate from the
host's
cron.
The systemd unit file that gets created can start and stop multiple
container instances with a single command. Beyond that, using the
ReloadPropagatedFrom directive in the unit file will allow an
update of the host's apache package to restart all of the servers in the
containers. So:
systemctl reload httpd.service
will trigger a reload in all container instances, while:
systemctl start http@.service
will start up all such services (which means all of the defined containers).
This is all recent work, Walsh said. It works "relatively well", but still
needs work. There are other use cases for these containers, beyond just
the OpenShift-like example he used. For instance, the Fedora project
uses Mock to
build packages, and Mock runs as root. That means there are some 3000 Fedora
packagers who could do "bad stuff" on the build systems, so putting Mock
into a secure container would provide better security. Another possibility
would be to run customer processes (e.g. Hadoop) on a GlusterFS node. Another service
that Walsh has containerized is MySQL, and more are possible.
Walsh demonstrated virt-sandbox-service at the end of his talk.
He demonstrated some of the differences
inside and outside of the container, including a surprising answer to
getenforce inside the container. It reports that SELinux is
disabled, but that is a lie, he said, to stop various scripts from trying to do
SELinux things within the container. In addition, he showed that the
eth0 device inside the container did not even appear in the host's
ifconfig output (nor, of course, did the host's wlan0
appear in the container).
A number of steps have been taken to try to prevent root from breaking out
of the container, but there is more to be done. Both mount and
mknod will fail inside the container for example. These
containers are not as secure as full virtualization, Walsh said, but they are
much easier to manage than handling the multiple full operating systems that
virtualization requires. For many use cases, secure containers may be the
right fit.
Comments (7 posted)
Brief items
Very unfortunately at 7:43 p.m. Pacific time, the channel was automatically banned in the middle of an acceptance speech by author Neil Gaiman due to “copyright infringement.” This occurred because our 3rd party automated infringement system, Vobile, detected content in the stream that it deemed to be copyrighted. Vobile is a system that rights holders upload their content for review on many video sites around the web. The video clips shown prior to Neil’s speech automatically triggered the 3rd party system at the behest of the copyright holder.
Our editorial team and content monitors almost immediately noticed a flood of livid Twitter messages about the ban and attempted to restore the broadcast. Unfortunately, we were not able to lift the ban before the broadcast ended. We had many unhappy viewers as a result, and for that I am truly sorry. As a long-time Firefly, Stargate and Game of Thrones fan among others, I am especially disheartened by this.
--
Brad
Hunstable explains why Ustream stopped showing the live stream of the
Hugo Awards
Here's an example of what has happened to me (and many other people). I uploaded a video of mine that included a segment of old, definitely public domain material. Shortly thereafter, my entire vid was flagged by YouTube's Content ID. Why? It took some digging to figure out, but it turns out a Content ID partner had uploaded a video of their own that happened to include a section of the same public domain material I had used. This apparently made it look like my video was infringing, since Content ID assumed the section of my vid that matched their vid was in violation. Wrong! But Content ID partners get the assumption of being correct, and there's no way for an average user to assert that something is public domain a priori. I was able to get this reversed by careful explanation on the appropriate forms, but I wonder how many people would just throw up their arms and say, "To hell with it!" and not bother?
--
Lauren
Weinstein
Comments (16 posted)
Here's
an
article in The H explaining how the latest (still unpatched, apparently
known to Oracle since April) Java vulnerability works. "
Oracle has
not yet released an official statement concerning the critical
vulnerability. At this article's time of publication, the company still
offered Java version 7 update 6 to download; like all older series 7
versions, this release is vulnerable to attacks via the vector described
above. Users who have a vulnerable version installed on their systems are
advised to disable the browser plugin that provides Java support."
Comments (44 posted)
Ars technica
reports
that Oracle has issued an update for critical vulnerabilities in Java.
"
The vulnerabilities addressed in the update include those designated
as CVE-2012-4681. Among those Oracle credited was Adam Gowdiak of
Poland-based Security Explorations, who said he alerted Oracle engineers to
the vulnerabilities in April. A brief analysis of the patch by the Immunity
security firm found that at least two other vulnerabilities are fixed as
well. A post on Oracle's security blog said the patch addressed three "distinct but related vulnerabilities and one security-in-depth issue affecting Java running in desktop browsers." The flaws also included CVE-2012-1682, and CVE-2012-3136."
Comments (7 posted)
New vulnerabilities
bugzilla: LDAP data injection
| Package(s): | bugzilla |
CVE #(s): | CVE-2012-3981
|
| Created: | September 5, 2012 |
Updated: | September 11, 2012 |
| Description: |
From the CVE entry:
Auth/Verify/LDAP.pm in Bugzilla 2.x and 3.x before 3.6.11, 3.7.x and 4.0.x before 4.0.8, 4.1.x and 4.2.x before 4.2.3, and 4.3.x before 4.3.3 does not restrict the characters in a username, which might allow remote attackers to inject data into an LDAP directory via a crafted login attempt. |
| Alerts: |
|
Comments (none posted)
fetchmail: denial of service
| Package(s): | fetchmail |
CVE #(s): | CVE-2012-3482
|
| Created: | September 4, 2012 |
Updated: | April 5, 2013 |
| Description: |
From the Mandriva advisory:
A denial of service flaw was found in the way Fetchmail, a remote mail
retrieval and forwarding utility, performed base64 decoding of certain
NTLM server responses. Upon sending the NTLM authentication request,
Fetchmail did not check if the received response was actually part
of NTLM protocol exchange, or server-side error message and session
abort. A rogue NTML server could use this flaw to cause fetchmail
executable crash. |
| Alerts: |
|
Comments (none posted)
gimp: multiple vulnerabilities
| Package(s): | gimp |
CVE #(s): | CVE-2012-2763
CVE-2012-3236
|
| Created: | September 4, 2012 |
Updated: | November 9, 2012 |
| Description: |
From the
Buffer overflow in the readstr_upto function in plug-ins/script-fu/tinyscheme/scheme.c in GIMP 2.6.12 and earlier, and possibly 2.6.13, allows remote attackers to execute arbitrary code via a long string in a command to the script-fu server. (CVE-2012-2763)
fits-io.c in GIMP before 2.8.1 allows remote attackers to cause a denial of service (NULL pointer dereference and application crash) via a malformed XTENSION header of a .fit file, as demonstrated using a long string. (CVE-2012-3236) |
| Alerts: |
|
Comments (none posted)
gnome-keyring: improper caching of passwords/passphrase
| Package(s): | gnome-keyring |
CVE #(s): | CVE-2012-3466
|
| Created: | September 5, 2012 |
Updated: | April 9, 2013 |
| Description: |
gnome-keyring seems to obey the configuration asking it
to stop caching passphrases, but after a while it doesn't cache nor does it ask for the passphrase. See the Red Hat bugzilla for details.
|
| Alerts: |
|
Comments (none posted)
jabberd: domain spoofing
| Package(s): | jabberd |
CVE #(s): | CVE-2012-3525
|
| Created: | September 4, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the Red Hat bugzilla:
A security flaw was found in the XMPP Dialback protocol implementation of jabberd2, OpenSource server implementation of the Jabber protocols (Verify Response and Authorization Response were not checked within XMPP protocol server to server session). A rogue XMPP server could use this flaw to spoof one or more domains, when communicating with vulnerable server implementation, possibly leading into XMPP's Server Dialback protections bypass. |
| Alerts: |
|
Comments (none posted)
java: multiple vulnerabilities
| Package(s): | java-1.6.0-openjdk |
CVE #(s): | CVE-2012-0547
CVE-2012-1682
|
| Created: | September 4, 2012 |
Updated: | October 19, 2012 |
| Description: |
From the Red Hat advisory:
It was discovered that the Beans component in OpenJDK did not perform
permission checks properly. An untrusted Java application or applet could
use this flaw to use classes from restricted packages, allowing it to
bypass Java sandbox restrictions. (CVE-2012-1682)
A hardening fix was applied to the AWT component in OpenJDK, removing
functionality from the restricted SunToolkit class that was used in
combination with other flaws to bypass Java sandbox restrictions.
(CVE-2012-0547) |
| Alerts: |
|
Comments (none posted)
java: multiple vulnerabilities
| Package(s): | java-1.7.0-openjdk |
CVE #(s): | CVE-2012-3136
CVE-2012-4681
|
| Created: | September 4, 2012 |
Updated: | April 19, 2013 |
| Description: |
From the Red Hat advisory:
Multiple improper permission check issues were discovered in the Beans
component in OpenJDK. An untrusted Java application or applet could use
these flaws to bypass Java sandbox restrictions. |
| Alerts: |
|
Comments (none posted)
keystone: multiple vulnerabilities
| Package(s): | keystone |
CVE #(s): | CVE-2012-3542
CVE-2012-3426
|
| Created: | September 4, 2012 |
Updated: | November 29, 2012 |
| Description: |
From the Ubuntu advisory:
Dolph Mathews discovered that OpenStack Keystone did not properly
restrict to administrative users the ability to update users'
tenants. A remote attacker that can reach the administrative API can
use this to add any user to any tenant. (CVE-2012-3542)
Derek Higgins discovered that OpenStack Keystone did not properly
implement token expiration. A remote attacker could use this to
continue to access an account that has been disabled or has a changed
password. (CVE-2012-3426) |
| Alerts: |
|
Comments (none posted)
mariadb: unspecified vulnerability
| Package(s): | mariadb |
CVE #(s): | |
| Created: | August 30, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the Mageia advisory:
This security update for Mariadb corrects a problem that is not
yet being publicly disclosed.
In addition, a problem preventing the feedback plugin from
working has been corrected. |
| Alerts: |
|
Comments (none posted)
mesa: code execution
| Package(s): | Mesa |
CVE #(s): | CVE-2012-2864
|
| Created: | September 6, 2012 |
Updated: | April 10, 2013 |
| Description: |
From the Red Hat bugzilla entry:
Mesa, as used in Google Chrome before 21.0.1183.0 on the Acer AC700, Cr-48, and Samsung Series 5 and 5 550 Chromebook platforms, and the Samsung Chromebox Series 3, allows remote attackers to execute arbitrary code via unspecified vectors that trigger an "array overflow." |
| Alerts: |
|
Comments (none posted)
moin: privilege escalation
| Package(s): | moin |
CVE #(s): | CVE-2012-4404
|
| Created: | September 6, 2012 |
Updated: | September 18, 2012 |
| Description: |
From the Debian advisory:
It was discovered that Moin, a Python clone of WikiWiki, incorrectly
evaluates ACLs when virtual groups are involved. This may allow certain
users to have additional permissions (privilege escalation) or lack
expected permissions. |
| Alerts: |
|
Comments (none posted)
ocaml-xml-light: denial of service
| Package(s): | ocaml-xml-light |
CVE #(s): | CVE-2012-3514
|
| Created: | August 31, 2012 |
Updated: | April 10, 2013 |
| Description: |
From the CVE entry:
OCaml Xml-Light Library before r234 computes hash values without restricting the ability to trigger hash collisions predictably, which allows context-dependent attackers to cause a denial of service (CPU consumption) via unspecified vectors. |
| Alerts: |
|
Comments (none posted)
otrs2: cross-site scripting
| Package(s): | otrs2 |
CVE #(s): | CVE-2012-2582
|
| Created: | August 31, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the Debian advisory:
It was discovered that otrs2, a ticket request system, contains a
cross-site scripting vulnerability when email messages are viewed
using Internet Explorer. This update also improves the HTML security
filter to detect tag nesting. |
| Alerts: |
|
Comments (none posted)
qemu-kvm: privilege escalation
| Package(s): | qemu-kvm |
CVE #(s): | CVE-2012-3515
|
| Created: | September 5, 2012 |
Updated: | October 25, 2012 |
| Description: |
From the Red Hat advisory:
A flaw was found in the way QEMU handled VT100 terminal escape sequences
when emulating certain character devices. A guest user with privileges to
write to a character device that is emulated on the host using a virtual
console back-end could use this flaw to crash the qemu-kvm process on the
host or, possibly, escalate their privileges on the host. |
| Alerts: |
|
Comments (none posted)
quota: bypass TCP Wrappers rules
| Package(s): | quota |
CVE #(s): | CVE-2012-3417
|
| Created: | August 30, 2012 |
Updated: | January 17, 2013 |
| Description: |
From the CVE entry:
The good_client function in rquotad (rquota_svc.c) in Linux DiskQuota (aka quota) before 3.17 invokes the hosts_ctl function the first time without a host name, which might allow remote attackers to bypass TCP Wrappers rules in hosts.deny. |
| Alerts: |
|
Comments (none posted)
rtfm: cross-site scripting
| Package(s): | rtfm |
CVE #(s): | CVE-2012-2768
|
| Created: | August 30, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the Debian advisory:
It was discovered that rtfm, the Request Tracker FAQ Manager, contains
multiple cross-site scripting vulnerabilities in the topic
administration page. |
| Alerts: |
|
Comments (none posted)
tor: multiple vulnerabilities
| Package(s): | tor |
CVE #(s): | CVE-2012-3517
CVE-2012-3518
CVE-2012-3519
|
| Created: | August 30, 2012 |
Updated: | February 4, 2013 |
| Description: |
From the CVE entries:
Use-after-free vulnerability in dns.c in Tor before 0.2.2.38 might allow remote attackers to cause a denial of service (daemon crash) via vectors related to failed DNS requests. (CVE-2012-3517)
The networkstatus_parse_vote_from_string function in routerparse.c in Tor before 0.2.2.38 does not properly handle an invalid flavor name, which allows remote attackers to cause a denial of service (out-of-bounds read and daemon crash) via a crafted (1) vote document or (2) consensus document. (CVE-2012-3518)
routerlist.c in Tor before 0.2.2.38 uses a different amount of time for relay-list iteration depending on which relay is chosen, which might allow remote attackers to obtain sensitive information about relay selection via a timing side-channel attack. (CVE-2012-3519) |
| Alerts: |
|
Comments (none posted)
typo3-src: multiple vulnerabilities
| Package(s): | typo3-src |
CVE #(s): | CVE-2012-3527
CVE-2012-3528
CVE-2012-3529
CVE-2012-3530
CVE-2012-3531
|
| Created: | August 31, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the Debian advisory:
CVE-2012-3527:
An insecure call to unserialize in the help system enables
arbitrary code execution by authenticated users.
CVE-2012-3528:
The TYPO3 backend contains several cross-site scripting
vulnerabilities.
CVE-2012-3529:
Authenticated users who can access the configuration module
can obtain the encryption key, allowing them to escalate their
privileges.
CVE-2012-3530:
The RemoveXSS HTML sanitizer did not remove several HTML5
JavaScript, thus failing to mitigate the impact of cross-site
scripting vulnerabilities. |
| Alerts: |
|
Comments (none posted)
wireshark: multiple vulnerabilities
| Package(s): | wireshark |
CVE #(s): | CVE-2012-4286
CVE-2012-4294
CVE-2012-4295
CVE-2012-4298
|
| Created: | August 30, 2012 |
Updated: | September 6, 2012 |
| Description: |
From the CVE entries:
The pcapng_read_packet_block function in wiretap/pcapng.c in the pcap-ng file parser in Wireshark 1.8.x before 1.8.2 allows user-assisted remote attackers to cause a denial of service (divide-by-zero error and application crash) via a crafted pcap-ng file. (CVE-2012-4286)
Buffer overflow in the channelised_fill_sdh_g707_format function in epan/dissectors/packet-erf.c in the ERF dissector in Wireshark 1.8.x before 1.8.2 allows remote attackers to execute arbitrary code via a large speed (aka rate) value. (CVE-2012-4294)
Array index error in the channelised_fill_sdh_g707_format function in epan/dissectors/packet-erf.c in the ERF dissector in Wireshark 1.8.x before 1.8.2 might allow remote attackers to cause a denial of service (application crash) via a crafted speed (aka rate) value. (CVE-2012-4295)
Integer signedness error in the vwr_read_rec_data_ethernet function in wiretap/vwr.c in the Ixia IxVeriWave file parser in Wireshark 1.8.x before 1.8.2 allows user-assisted remote attackers to execute arbitrary code via a crafted packet-trace file that triggers a buffer overflow. (CVE-2012-4298) |
| Alerts: |
|
Comments (none posted)
zabbix: SQL injection
| Package(s): | zabbix |
CVE #(s): | CVE-2012-3435
|
| Created: | August 31, 2012 |
Updated: | January 1, 2013 |
| Description: |
From the CVE entry:
SQL injection vulnerability in frontends/php/popup_bitem.php in Zabbix 1.8.15rc1 and earlier, and 2.x before 2.0.2rc1, allows remote attackers to execute arbitrary SQL commands via the itemid parameter.
|
| Alerts: |
|
Comments (none posted)
Page editor: Jake Edge
Next page: Kernel development>>