For his keynote at the 2013 Linux
Security Summit, Ted Ts'o weaved
current events and longstanding security problem areas together.
He encouraged the assembled kernel security developers to look beyond
the kernel and keep the "bigger picture" in mind. His talk kicked off the summit, which was co-located with the Linux Plumbers
Conference (and others) in New Orleans, Louisiana.
Adversaries
Ts'o began by looking at the adversaries we face today, starting with the
secret services of various governments—our own and foreign governments, no
matter where we live. Beyond that, though, there are organized
cyber-criminals who maintain botnets and other services for hire. He
noted that there is a web service available for solving CAPTCHAs, where a rural
farmer with no knowledge of English (or even Roman characters, perhaps)
will solve one in realtime. "Isn't capitalism wonderful?", he asked.
The historic assumptions made about the budgets of our adversaries may not
be accurate, he said. Many in the room will know about the problems he is
describing, but the general public does not. How do we get the rest of the
world to understand these issues, he asked.
Beyond criminals, we have also seen the rise of cyber-anarchists recently.
These folks are causing trouble "for the fun of it". They have different
motivations than other kinds of attackers. No matter what you might think
of their politics, he said, they can cause a lot of problems for "systems
we care about".
Ts'o related
several quotes from
Robert Morris, who was the chief scientist at the US
National Security Agency (NSA)—and father of Robert T. Morris of Morris worm "fame".
Morris was also an early Multics and Unix developer, who was responsible
for the crypt() function used for passwords. The upshot of
Morris's statements was that there is more than one way to attack
security and that underestimating the "time, expense, and effort" an
adversary will expend is foolhardy. Morris's words were targeted at
cryptography, but are just as applicable to security. In addition, it is
fallible humans who have to use security software, so Morris's admonition
to "exploit your opponent's weaknesses" can be turned on its head: our
opponents may have vast resources, but developers need to "beware the
stupid stuff", Ts'o said.
The CA problem
In May, Ts'o and his Google team were at a hotel in Yosemite for a
team-building event
where he encountered some kind of man-in-the-middle attack that highlighted
the problems in the current SSL certificate system. While trying to update
his local IMAP mail cache, which uses a static set of certificates rather
than trust the certificate authority (CA) root certificates, his fetch
failed because the po14.mit.edu certificate had, seemingly, changed—to a
certificate self-signed by Fortinet. That company makes
man-in-the-middle proxy hosts to enable internet surveillance by companies
and governments.
He dug further, trying other sites such as Gmail and Harvard University,
but those were not being intercepted. In addition, requesting a
certificate for the MIT host from elsewhere on the internet showed that the
certificate had not actually changed. Something was targeting traffic from
the hotel (and, perhaps, other places as well) to MIT email hosts for
reasons unknown. The bogus certificate was self-signed, which would
hopefully raise red flags in most email clients, but the problem persisted
for the weekend he was there—at least.
As people in the room are aware, but, again, the rest of the world isn't,
the CA system is broken, Ts'o said. He referred to a Defcon 19 presentation
[YouTube] by Moxie Marlinspike about the problems inherent in SSL and
the CA system. While Marlinspike's solution may not be workable, his
description of the problem is quite good, Ts'o said.
It comes down to the problem that some certificate issuers are "too big to
jail", so that punishing them by banning their root certificates is
unworkable. Marlinspike estimated that banning Comodo (which famously allowed fraudulent certificates to be issued)
would have caused 20-25% of HTTPS servers on the internet to go dark.
Comodo got to that level of popularity by being one of the cheapest
available providers,
of course.
There are some 650 root authorities that are currently blindly trusted to
run a tight ship, with no way to punish them if they don't, Ts'o said.
There are some solutions like certificate pinning, which Google started and
various browser vendors have adopted, but that solution doesn't scale.
Many have claimed that DNSSEC is a solution, but Marlinspike has argued
otherwise—the actors are different, but the economic incentives are the
same. Instead of trusting a bunch of CAs, Verisign will have to be trusted
instead.
Ts'o doesn't know how to solve the CA problem, but did have a selfish
request: he would like to see certificates be cached and warnings be issued
when those certificates change. Unfortunately, it won't work for the
average non-technical person, nor would it be all that easy because OpenSSL
and libraries that call it are typically unconnected from the user
interface, but it would make him happier.
Linux security solutions
A short program that just did setuid(0) and spawned a shell led to
Ts'o's question of "when is a setuid program not a setuid program?". He
showed that the program wasn't owned by root with the setuid bit set, yet
it gave a root shell. It worked because the file had CAP_SETUID
set in its file capabilities—something that all of the security scanning
tools he looked at completely ignored. File capabilities have been around
since
2.6.30, but no one is paying attention, which is "kind of embarrassing".
Worse yet, there is no way to disable file capabilities in the
kernel, he said.
Linux capabilities are meant to split up root's powers into discrete
chunks, but their adoption has been slow. The idea is that capabilities
are by default not inherited by children, so parents need the right to pass
on their capabilities, and the child executable has to have the right to
accept them. But there is a "compatibility mode" that has been created
where root-spawned processes inherit all of the parent's capabilities.
This is done so that running shell scripts as root continues to work, but
that mode
leads to another problem.
Of the 30 or so powers granted by capabilities, over half can (sometimes)
be used to gain full root privileges. You must be able to use those
capabilities in an "unrestricted way", which may or may not be true
depending on how the system is set up. But many would not be a
privilege-escalation problem at all if it weren't for the compatibility
mode.
So, why not use SELinux instead, he asked. It can do all of the things
that capabilities were intended to do, although the policy has to be set up
correctly. Unfortunately, the policy is several megabytes of source that
is difficult to understand, change, or use.
As it turns out, though, things have "gotten a lot better" in the SELinux
world, according to Ts'o. Every few years, he turns on SELinux to see how
well it is working. "Usually, it screws me to the wall" and he has to
immediately disable it. In one case, he even had to reinstall his system
because of it. But when he tried it just prior to the summit, it mostly worked
for him.
The audit2allow program, which looks at the SELinux denials and
generates new policy, is "a huge win". On his system, it generated 400
lines of local policy to make things work. Overall, it is much better and
he will probably leave it running on his system. There is still a ways to
go, particularly in the area of documentation. There is plenty of beginner
documentation and expert documentation (i.e. the source code), but
information for intermediate users is lacking. That leads to those users
just turning off SELinux. The problems he ran into (which were fewer than
his earlier tries, but still present) may have been partly due to the
SELinux policy packages for Debian testing; perhaps Fedora users would have
had a
better time, he said.
His experiment with SELinux showed another problem, though. He now gets
email every two hours from logcheck with a vast number of complaints. It
is clear that his logcheck configuration files are out of sync with the
SELinux installation. How to handle security policy and configuration with
respect to various kinds of distribution packages is a difficult problem.
Right now, the SELinux policy package maintainers and logcheck package
maintainers would need to coordinate, but that doesn't scale well. Does
logcheck
also need to coordinate with AppArmor as well, or should the policy packages be
handling the configuration needed for logcheck? There is no obvious
solution to that problem, but perhaps automated tools a la
audit2allow might help, he said.
Wrapping up
Turning to the summit itself, Ts'o noted all of the different example
topics listed in the call
for participation, which included ideas like system hardening,
virtualization, cryptography, and so on. The program committee did a good
job on that list, he said, but what ended up on the schedule? An update to
Linux
Security Module (LSM) A, a change to LSM B, a new feature for LSM C, and
composing (i.e. stacking) LSMs. That's not completely fair, Ts'o said, as
there are other topics on the list like kernel address space layout
randomization (ASLR) and embedded Linux security, but his point was clear.
He encouraged Linux security developers to think more widely. The
program committee can only choose from the topics that are submitted and
people submit what they can get funding to work on. The executives of the
companies they work for only fund those things that users really care
about, so how can we get users to care about security, he asked.
It turns out that perhaps "NSA" is part of the answer, he said—to
widespread laughs. But the best outcome from the Snowden revelations is
that
people are
talking about security again. According to Ts'o, US President Obama has
been quoted as saying "never let a good crisis go to waste". Security
researchers and developers should follow that advice, he said.
A business case needs to be made for better Linux security, Ts'o said.
After the kernel.org compromise, some
companies were
interested in funding Linux security work, but after two months or so, that
interest all dried up. It may be that the NSA surveillance story also dies
away, but Glenn Greenwald is something of an expert at dribbling out the
details from Snowden. That may give this particular crisis longer legs.
Security folks need to find a way for security countermeasures to take
advantage of the power of scale, he said. Both Google and the NSA have
figured out that if you can invest a large amount into fixed costs and
bring the incremental costs way down, you can service a lot of users.
Cyber-criminals have also figured this out; the security community needs to
do so as well.
In the kernel developers' panel that had
been held at
LinuxCon the day before, Linus Torvalds suggested that he would be willing
to lose some of the best kernel developers if they would export kernel
culture to various user-space projects. The same applies to security, Ts'o
said. The security of the libraries needs to improve, hardware support for
random number generation needs to be more widely available, and so on. Though
there have been concerns about the
RDRAND instruction in Intel processors because it is not
auditable, Ts'o said he would much rather have it available than not.
Similarly, the trusted platform module (TPM) available in most systems is
generally not used. Some TPM implementations are suspect, but there is no
incentive for manufacturers to improve them since they aren't really used.
It is hard enough to get a manufacturer to add $0.25 to the bill of
materials (BOM) for a device; without a business case (i.e. users), it is
likely impossible.
Security technology is not useful unless it gets used. In fact,
as the file capabilities example showed, it can actually be actively
harmful if it
isn't used.
Ts'o concluded by suggesting that the assembled developers think about a
"slightly bigger picture" than LSMs and the composition of LSMs. Those
topics are important, but there is far more out there that needs fixing.
As he noted, though, it will take a push from users to get the needed
funding to address many of these issues.
[ I would like to thank LWN subscribers for travel assistance to New
Orleans for the Linux Security Summit. ]
Comments (27 posted)
Brief items
The NSA's actions are making us all less safe. They're not just spying on the bad guys, they're deliberately weakening Internet security for everyone—including the good guys. It's sheer folly to believe that only the NSA can exploit the vulnerabilities they create. Additionally, by eavesdropping on all Americans, they're building the technical infrastructure for a police state.
We're not there yet, but already we've learned that both the DEA and the IRS use NSA surveillance data in prosecutions and then lie about it in court. Power without accountability or oversight is dangerous to society at a very fundamental level.
—
Bruce Schneier
iPhone users should avoid protecting sensitive data with their precious
biometric fingerprint not only because it can be easily faked, as
demonstrated by the CCC [Chaos Computer Club] team. Also, you can easily be forced to unlock your
phone against your will when being arrested. Forcing you to give up your
(hopefully long) passcode is much harder under most jurisdictions than just
casually swiping your phone over your handcuffed hands.
—
Chaos
Computer Club breaks Apple's much-vaunted TouchID fingerprint unlocking
feature
Comments (4 posted)
New vulnerabilities
apt-xapian-index: authorization bypass
| Package(s): | apt-xapian-index |
CVE #(s): | CVE-2013-1064
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that apt-xapian-index was using polkit in an unsafe
manner. A local attacker could possibly use this issue to bypass intended
polkit authorizations. |
| Alerts: |
|
Comments (none posted)
chromium: multiple vulnerabilities
Comments (none posted)
freeswitch: code execution
| Package(s): | freeswitch |
CVE #(s): | CVE-2013-2238
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Mageia advisory:
In FreeSWITCH before 1.2.12, if the routing configuration includes
regular expressions that don't constrain the length of the input, buffer
overflows are possible. Since these regular expressions are matched
against untrusted input, remote code execution may be possible |
| Alerts: |
|
Comments (none posted)
glpi: improper sanitation of user input
| Package(s): | glpi |
CVE #(s): | CVE-2013-5696
|
| Created: | September 20, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Mageia advisory:
Security vulnerabilities due to improper sanitation of user input
in GLPI before version 0.84.2 (CVE-2013-5696). |
| Alerts: |
|
Comments (none posted)
hplip: authorization bypass
| Package(s): | hplip |
CVE #(s): | CVE-2013-4325
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that HPLIP was using polkit in an unsafe manner. A local
attacker could possibly use this issue to bypass intended polkit
authorizations. |
| Alerts: |
|
Comments (none posted)
icedtea-web: code execution
| Package(s): | icedtea-web |
CVE #(s): | CVE-2013-4349
|
| Created: | September 23, 2013 |
Updated: | October 4, 2013 |
| Description: |
From the Red Hat bugzilla:
An off-by-one heap-based buffer overflow was found in IcedTeaScriptableJavaObject::invoke function. This problem was discovered in Oct 2012 and was assigned CVE-2012-4540.
Version 1.4 released in May 2013 did not include the fix and is affected by the issue. |
| Alerts: |
|
Comments (none posted)
jockey: authorization bypass
| Package(s): | jockey |
CVE #(s): | CVE-2013-1065
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that Jockey was using polkit in an unsafe manner. A local
attacker could possibly use this issue to bypass intended polkit
authorizations. |
| Alerts: |
|
Comments (none posted)
kernel: privilege escalation
| Package(s): | kernel |
CVE #(s): | CVE-2013-4350
CVE-2013-4343
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Red Hat bugzilla [1; 2]:
Alan Chester reported an issue with IPv6 on SCTP that IPsec traffic is not
being encrypted, whereas on IPv4 it is. (CVE-2013-4350)
Linux kernel built with the Universal TUN/TAP device driver(CONFIG_TUN) support is vulnerable to a potential privilege escalation via an use-after-free flaw. It could occur while doing an ioctl(TUNSETIFF) call.
A privileged(CAP_NET_ADMIN) user/program could use this flaw to crash the
kernel resulting DoS or potentially escalate privileges to gain root access
to a system. (CVE-2013-4343) |
| Alerts: |
|
Comments (none posted)
language-selector: authorization bypass
| Package(s): | language-selector |
CVE #(s): | CVE-2013-1066
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that language-selector was using polkit in an unsafe
manner. A local attacker could possibly use this issue to bypass intended
polkit authorizations. |
| Alerts: |
|
Comments (none posted)
libvirt: multiple vulnerabilities
| Package(s): | libvirt |
CVE #(s): | CVE-2013-4311
CVE-2013-4296
CVE-2013-5651
|
| Created: | September 19, 2013 |
Updated: | October 2, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that libvirt used the pkcheck tool in an unsafe manner. A
local attacker could possibly use this flaw to bypass polkit
authentication. In Ubuntu, libvirt polkit authentication is not enabled by
default. (CVE-2013-4311)
It was discovered that libvirt incorrectly handled certain memory stats
requests. A remote attacker could use this issue to cause libvirt to
crash, resulting in a denial of service. This issue only affected Ubuntu
12.04 LTS, Ubuntu 12.10, and Ubuntu 13.04. (CVE-2013-4296)
It was discovered that libvirt incorrectly handled certain bitmap
operations. A remote attacker could use this issue to cause libvirt to
crash, resulting in a denial of service. This issue only affected Ubuntu
13.04. (CVE-2013-5651) |
| Alerts: |
|
Comments (none posted)
moodle: sql injection
| Package(s): | moodle |
CVE #(s): | CVE-2013-4313
CVE-2013-4341
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the CVE entries:
Moodle through 2.2.11, 2.3.x before 2.3.9, 2.4.x before 2.4.6, and 2.5.x before 2.5.2 does not prevent use of '\0' characters in query strings, which might allow remote attackers to conduct SQL injection attacks against Microsoft SQL Server via a crafted string. (CVE-2013-4313)
Multiple cross-site scripting (XSS) vulnerabilities in Moodle through 2.2.11, 2.3.x before 2.3.9, 2.4.x before 2.4.6, and 2.5.x before 2.5.2 allow remote attackers to inject arbitrary web script or HTML via a crafted blog link within an RSS feed. (CVE-2013-4341) |
| Alerts: |
|
Comments (none posted)
polarssl: denial of service
| Package(s): | polarssl |
CVE #(s): | CVE-2013-4623
|
| Created: | September 23, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the polarssl advisory:
A bug in the logic of the parsing of PEM encoded certificates in x509parse_crt() can result in an infinite loop, thus hogging processing power.
While parsing a Certificate message during the SSL/TLS handshake, PolarSSL extracts the presented certificates and sends them on to be parsed. As the RFC specifies that the certificates in the Certificate message are always X.509 certificates in DER format, bugs in the decoding of PEM certificates should normally not be triggerable via the SSL/TLS handshake.
Versions of PolarSSL prior to 1.1.7 in the 1.1 branch and prior to 1.2.8 in the 1.2 branch call the generic x509parse_crt() function for parsing during the handshake. x509parse_crt() is a generic functions that wraps parsing of both PEM-encoded and DER-formatted certificates. As a result it is possible to craft a Certificate message that includes a PEM encoded certificate in the Certificate message that triggers the infinite loop.
This bug and code path will only be present if PolarSSL is compiled with the POLARSSL_PEM_C option. This option is enabled by default. |
| Alerts: |
|
Comments (none posted)
policykit-1: privilege escalation
| Package(s): | policykit-1 |
CVE #(s): | CVE-2013-4288
|
| Created: | September 19, 2013 |
Updated: | September 27, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that polkit didn't allow applications to use the pkcheck
tool in a way which prevented a race condition in the UID lookup. A local
attacker could use this flaw to possibly escalate privileges. |
| Alerts: |
|
Comments (2 posted)
proftpd: denial of service
| Package(s): | proftpd |
CVE #(s): | CVE-2013-4359
|
| Created: | September 24, 2013 |
Updated: | October 3, 2013 |
| Description: |
From the Red Hat bugzilla:
ProFTPd default installation comes with mod_sftp and mod_sftp_pam activated, which initiates this flaw.
The bug is useful to trigger a large heap allocation and exhaust all available system memory of the underlying operating system. |
| Alerts: |
|
Comments (none posted)
rtkit: authorization bypass
| Package(s): | rtkit |
CVE #(s): | CVE-2013-4326
|
| Created: | September 19, 2013 |
Updated: | September 26, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that RealtimeKit was using polkit in an unsafe manner. A
local attacker could possibly use this issue to bypass intended polkit
authorizations. |
| Alerts: |
|
Comments (none posted)
rubygems: denial of service
| Package(s): | rubygems |
CVE #(s): | CVE-2013-4287
|
| Created: | September 23, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Fedora advisory:
A vulnerability was found on rubygems currently being shipped on Fedora in validating versions with
a regular expression which leads to denial of service due to backtracking. |
| Alerts: |
|
Comments (none posted)
software-properties: authorization bypass
| Package(s): | software-properties |
CVE #(s): | CVE-2013-1061
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that Software Properties was using polkit in an unsafe
manner. A local attacker could possibly use this issue to bypass intended
polkit authorizations. |
| Alerts: |
|
Comments (none posted)
spice-gtk: authorization bypass
| Package(s): | spice-gtk |
CVE #(s): | CVE-2013-4324
|
| Created: | September 20, 2013 |
Updated: | September 27, 2013 |
| Description: |
From the Red Hat advisory:
spice-gtk communicated with PolicyKit for authorization via an API that is
vulnerable to a race condition. This could lead to intended PolicyKit
authorizations being bypassed. This update modifies spice-gtk to
communicate with PolicyKit via a different API that is not vulnerable to
the race condition. |
| Alerts: |
|
Comments (none posted)
systemd: authorization bypass
| Package(s): | systemd |
CVE #(s): | CVE-2013-4327
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that systemd was using polkit in an unsafe manner. A
local attacker could possibly use this issue to bypass intended polkit
authorizations. |
| Alerts: |
|
Comments (none posted)
tiff: code execution
| Package(s): | tiff |
CVE #(s): | CVE-2013-4243
|
| Created: | September 24, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the CVE entry:
Heap-based buffer overflow in the readgifimage function in the gif2tiff tool in libtiff 4.0.3 and earlier allows remote attackers to cause a denial of service (crash) and possibly execute arbitrary code via a crafted height and width values in a GIF image. |
| Alerts: |
|
Comments (none posted)
ubuntu-system-service: authorization bypass
| Package(s): | ubuntu-system-service |
CVE #(s): | CVE-2013-1062
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that ubuntu-system-service was using polkit in an unsafe
manner. A local attacker could possibly use this issue to bypass intended
polkit authorizations. |
| Alerts: |
|
Comments (none posted)
usb-creator: authorization bypass
| Package(s): | usb-creator |
CVE #(s): | CVE-2013-1063
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Ubuntu advisory:
It was discovered that usb-creator was using polkit in an unsafe manner. A
local attacker could possibly use this issue to bypass intended polkit
authorizations. |
| Alerts: |
|
Comments (none posted)
wireshark: denial of service
| Package(s): | wireshark |
CVE #(s): | CVE-2013-5719
CVE-2013-5721
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the CVE entries:
epan/dissectors/packet-assa_r3.c in the ASSA R3 dissector in Wireshark 1.8.x before 1.8.10 and 1.10.x before 1.10.2 allows remote attackers to cause a denial of service (infinite loop) via a crafted packet. (CVE-2013-5719)
The dissect_mq_rr function in epan/dissectors/packet-mq.c in the MQ dissector in Wireshark 1.8.x before 1.8.10 and 1.10.x before 1.10.2 does not properly determine when to enter a certain loop, which allows remote attackers to cause a denial of service (application crash) via a crafted packet. (CVE-2013-5721) |
| Alerts: |
|
Comments (none posted)
xen: privilege escalation
| Package(s): | xen |
CVE #(s): | CVE-2013-4329
|
| Created: | September 19, 2013 |
Updated: | September 25, 2013 |
| Description: |
From the Red Hat bugzilla:
With HVM domains, libxl's setup of PCI passthrough devices does the IOMMU setup after giving (via the device model) the guest access to the hardware and advertising it to the guest.
If the IOMMU is disabled the overall setup fails, but after the device has been made available to the guest; subsequent DMA instructions from the guest to the device will cause wild DMA.
A HVM domain, given access to a device which bus mastering capable in the absence of a functioning IOMMU, can mount a privilege escalation or denial of service attack affecting the whole system. |
| Alerts: |
|
Comments (none posted)
Page editor: Jake Edge
Next page: Kernel development>>