December 15, 2010
This article was contributed by Nathan Willis
The Initiative For Open Authentication (OATH) is a security-vendor-based collaboration bent on developing a standardized "strong authentication" infrastructure using open standards. Not to be confused with the web-sharing cross-site authorization scheme OAuth, OATH has a broad set of security models it hopes to cover with a unified suite of protocols and APIs — collecting hardware-based, public-key infrastructure (PKI)-based, and one-time password (OTP)-based authentication into one framework.
The end goal is a noble one: a common framework that can use any of the three authentication systems on the client-side, so that it can be used just as easily to connect a user to a cell phone network (which use hardware-based authentication keyed off of the phones' SIM cards), a corporate VPN (which uses PKI authentication via X.509 certificates), and a web application (which uses an OTP protocol to authenticate the user without transmitting a traditional password). Password-based logins are inherently vulnerable, OATH argues, and the hardware-token systems sold by vendors have no established standard. Thus, why not replace both, and in a way that allows vendors to reuse some high-level APIs and software developers to build authentication-agnostic middleware.
OATH's rallying cry throughout its documentation is strong authentication but, interestingly enough, it does not offer a definition of that term. The group does not seem to mean "strong" in the sense of true multi-factor authentication (such as requiring both a hardware token and a password); rather it seems to encompass password-less authentication schemes built around either trusted hardware tokens or challenge-response protocols. Existing PKI systems appear to pass OATH's standards both for security and standardization.
The consortium has a white paper
[PDF] on its web site that elaborates on how an organization might
deploy different OATH-based systems. Overall, the architecture starts with
a client user having "strong authentication" credentials of one form or
another (smart card, SIM module, or software-based PKI certificate). The service that the user wishes to connect to could be a VPN, a corporate WiFi or GSM network, or a web application. In any case, the company setting up the service would use one of OATH's strong authentication algorithms for sign-in. The type of service determines the connection over which the authentication step is performed: VPNs would use IPSec, for example, while WiFi networks would use Extensible Authentication Protocol (EAP), and web applications would use SSL/TLS.
In addition to the already-existing network layers like TLS and IPSec, the examples in the white paper tend to rely on existing open source infrastructure to validate user accounts on the server side, such as RADIUS and LDAP. The puzzle pieces that do not yet exist are the standardized credentials, standardized OTP protocols, and application connectors required to hook the OATH authentication interface into network services — bits like Apache modules, PHP and Perl libraries, and VPN code.
From theory to practice
Since 2004, OATH has focused its energies on developing the missing pieces in this roadmap [PDF], and has attempted to do so in the open, building on open and royalty-free specifications. The first result of this work was HOTP, the Hash-based Message Authentication Code (HMAC) OTP algorithm, published in 2005. In 2008, the algorithm was superseded by TOTP, the Time-based OTP. Both were published as IETF drafts.
TOTP extended HOTP by replacing the latter's moving event counter with a time-based value. Essentially, HOTP was a cryptographic function of a shared (symmetric) key and an integer event counter, the count on which the connecting client must keep in sync with the remote server in order to successfully authenticate. TOTP removes the need for client and server to stay in sync on the event counter by using a Unix timestamp instead; the algorithm allows the server to choose how far off an incoming timestamp it deems acceptable, in order to correct for clock drift.
In September of 2010, the most recent release was unveiled. Named OATH
Challenge-Response Algorithms (OCRA), the new algorithm extends TOTP
still further. First, it allows for the replacement of the counter or
timestamp value with any arbitrary input parameter. The IETF draft
describes the input parameter as "a structure that contains the
concatenation of the various input data values" that the parties
agree upon, and enumerates several acceptable values: event counters as
used in HOTP, time signatures as used in TOTP, hashed PIN or password
values, session identifiers, and general challenge/response questions (and
their answers). The input parameter also incorporates a header indicating which data values are employed, as well as the cryptographic hash function to be used.
The second change is the addition of more verification modes. HOTP and TOTP have exactly one: a client attempts to connect, and the server authenticates the client by sending it a challenge and checking that the response is valid. But OCRA also allows the client to authenticate the identity of the server, so that both parties can be sure they know who they are talking to. This "mutual challenge-response" variation of the algorithm doesn't add anything new, it just allows the client to issue a challenge of its own. Thus the mutual authentication boils down to doing two separate challenge-response computations: one client-to-server, one server-to-client; in other words, the challenge issued by the client is not connected to the challenge issued by the server.
Finally, OCRA also features a "plain signature mode," in which the server sends a "challenge" to the client which requires only that the client sign the challenge's data payload and return it. This mode does not depend on a shared secret key; any client can sign and return the response, so it is only useful for tracking purposes. But it can be combined with a regular challenge-response authentication, creating a "signature with server authentication mode."
Thus far, the HOTP/TOTP/OCRA work has been OATH's most visible development, but it is not the only product released. In 2009, OATH published the OATH Token Identifier Specification, which specifies a formatted alphanumeric identifier that can be used as a unique global identifier by all OATH-compliant products. The format breaks down hardware tokens, software tokens, and "embedded tokens" into separate classes. Thus far, the posted specification only covers hardware tokens, and consists of a 2-character manufacturer prefix, 2-character token type, and 8-character "manufacturer unique identifier."
In 2010, OATH contributed to the IETF's Portable Symmetric Key Container (PSKC) draft specification, which defines an XML-based format for transferring symmetric encryption keys, and Dynamic Symmetric Key Provisioning Protocol (DSKPP), which described a client-server method of initializing and installing symmetric keys. OATH also launched a certification program for vendors wishing to have their products certified for HOTP, TOTP, and OCRA compliance.
Criticism
Shortly after HOTP's launch, the SHA-1 hash function was discovered
to be considerably less collision-resistant than previously thought. The
bar was lowered yet again in
2009. HOTP's HMAC codes used SHA-1, which led to some concern of HOTP's
security itself. However, HOTP does not rely on SHA-1's
collision-resistance, but rather on its strength as a "trapdoor function"
— finding a collision would entail finding two HOTP responses that
have the same hash value, but doing so would not enable an attacker to hijack or replay a valid session; to do that the attacker would need to invert the hashed response and recover the event counter. Still, TOTP and OCRA allow for other hash functions in addition to SHA-1.
A more fundamental challenge to OATH's relevance is the notion that "industry wide" standards for OTP are pointless. This was the charge leveled in 2005 by RSA's Burt Kaliski, who argued that while PKI systems depend on "one-to-many" security, OTP is always "one-to-one;" i.e., although many vendors may need to verify a digital signature, the challenge-response algorithm between a server and client does not get stronger or more reliable because other vendors implement the same algorithm.
Kalinski further criticized HOTP's inflexibility, both in hash algorithm and use of event counter, which may have contributed to the improvements in those areas in TOTP and OCRA. Still, his initial complaint stands — the OATH OTP algorithms "standardize" something that does not benefit much (if at all) from standardization. One could make the same argument about the Token Identifier Specification: the specification does not make a strong case that a standardized ID string format makes life substantially easier than a randomly-generated string; the strength of the hardware token authentication system comes from the secure installation of the secret key, not the ID number printed on the back. Kalinski's criticism is at least true from the consumer's point-of-view; the user is not made more secure through standardization. Cryptographic token manufacturers, on the other hand, might stand to benefit from an industry-wide standard
HOTP, TOTP, and OCRA are all very simple, but (according to mining project data at Freshmeat and Ohloh) there are less than a dozen open source products that implement any of them — which puts them about on par with S/KEY and other, older OTP standards. That is hardly widespread adoption for a consortium with more than fifty paying members. OATH does not even provide a reference implementations; it only publishes specifications. Then again, the OTP component is just one piece of the overall puzzle OATH has set out to define and standardize — still to come are protocol handlers, validation handlers, credential storage and auditing, and more. Perhaps the full architecture will look more enticing to open source developers.
Comments (2 posted)
Brief items
When one hears allegations that the US FBI has paid people to put backdoors
into the OpenBSD IPSEC stack, one might normally be inclined to take them
with a large grain of salt. When such allegations are passed on by Theo de
Raadt, though, they merit a look. "
I have received a mail regarding the early development of the OpenBSD
IPSEC stack. It is alleged that some ex-developers (and the company
they worked for) accepted US government money to put backdoors into
our network stack, in particular the IPSEC stack. Around
2000-2001." It will be interesting to see if the forthcoming audit
turns up anything, or whether it is simply a strange FUD campaign.
Full Story (comments: 43)
Tim Brown digs into Linux/POSIX linkers in a
paper [PDF] called "Breaking the links: Exploiting the linker". He was
drawn to the subject because of the fuss made over Microsoft's recently discovered insecure library loading vulnerability along with claims that "
Linux could never be affected by such a problem". The paper looks into the linking process and how it can be subverted in various ways.
Full Story (comments: 1)
Mimi Zohar has put out a request for comments on an
Overview of the Linux Integrity Subsystem [PDF]. It covers the Integrity Measurement Architecture (IMA) and Extended Verification Module (EVM) that are part of the Linux kernel, as well as Trusted/Encrypted keys that are making their way into the mainline. Also: "
For anyone interested in the proposed integrity subsystem,
linux-ima.sourceforge.net has been updated with new, hopefully,
simplified installation directions, patches to use the new
Trusted/Encrypted keys, which is now in the security-testing/#next tree,
a few bug fixes, and a sample dracut patch to enable EVM in the
initramfs. (The patches are against the 2.6.36 stable tree.)"
Full Story (comments: none)
New vulnerabilities
bind: remote denial of service
| Package(s): | bind9 |
CVE #(s): | CVE-2010-3762
|
| Created: | December 13, 2010 |
Updated: | May 31, 2011 |
| Description: |
From the CVE entry:
ISC BIND before 9.7.2-P2, when DNSSEC validation is enabled, does not properly handle certain bad signatures if multiple trust anchors exist for a single zone, which allows remote attackers to cause a denial of service (daemon crash) via a DNS query. |
| Alerts: |
|
Comments (none posted)
bind: information disclosure
| Package(s): | bind |
CVE #(s): | CVE-2010-3615
|
| Created: | December 9, 2010 |
Updated: | December 17, 2010 |
| Description: |
From the ISC advisory:
When named is running as an authoritative server for a zone and receives a query for that zone data, it first checks for allow-query acls in the zone statement, then in that view, then in global options. If none of these exist, it defaults to allowing any query (allow-query {"any"};).
With this bug, if the allow-query is not set in the zone statement, it failed to check in view or global options and fell back to the default of allowing any query. This means that queries that the zone owner did not wish to allow were incorrectly allowed.
This bug doesn't affect allow-recursion or allow-query-cache acls, since they are not relevant to a zone for which the server is authoritative. |
| Alerts: |
|
Comments (none posted)
collectd: denial of service
| Package(s): | collectd |
CVE #(s): | CVE-2010-4336
|
| Created: | December 14, 2010 |
Updated: | May 17, 2011 |
| Description: |
From the Debian advisory:
It was discovered that collectd, a statistics collection and monitoring
daemon, is prone to a denial of service attach via a crafted network
packet.
|
| Alerts: |
|
Comments (none posted)
exim4: code execution
| Package(s): | exim4 |
CVE #(s): | CVE-2010-4344
|
| Created: | December 10, 2010 |
Updated: | January 27, 2011 |
| Description: |
From the Red Hat advisory:
A buffer overflow flaw was discovered in Exim's internal
string_vformat() function. A remote attacker could use this flaw to
execute arbitrary code on the mail server running Exim. (CVE-2010-4344) |
| Alerts: |
|
Comments (none posted)
exim: privilege escalation
| Package(s): | exim |
CVE #(s): | CVE-2010-4345
|
| Created: | December 13, 2010 |
Updated: | April 15, 2011 |
| Description: |
From the SUSE advisory:
The unprivileged user exim is running as could tell the exim daemon
to read a different config file and leverage that to escalate
privileges to root |
| Alerts: |
|
Comments (none posted)
firefox: multiple vulnerabilities
| Package(s): | firefox |
CVE #(s): | CVE-2010-3770
CVE-2010-3774
CVE-2010-3773
CVE-2010-3767
CVE-2010-3766
CVE-2010-3775
CVE-2010-3768
CVE-2010-3772
CVE-2010-3771
CVE-2010-3769
CVE-2010-3776
CVE-2010-3777
|
| Created: | December 10, 2010 |
Updated: | May 2, 2011 |
| Description: |
From the Mandriva advisory:
Security researchers Yosuke Hasegawa and Masatoshi Kimura reported that
the x-mac-arabic, x-mac-farsi and x-mac-hebrew character encodings are
vulnerable to XSS attacks due to some characters being converted to
angle brackets when displayed by the rendering engine. Sites using
these character encodings would thus be potentially vulnerable to
script injection attacks if their script filtering code fails to
strip out these specific characters (CVE-2010-3770).
Google security researcher Michal Zalewski reported that when a
window was opened to a site resulting in a network or certificate
error page, the opening site could access the document inside the
opened window and inject arbitrary content. An attacker could use
this bug to spoof the location bar and trick a user into thinking
they were on a different site than they actually were (CVE-2010-3774).
Mozilla security researcher moz_bug_r_a4 reported that the fix for
CVE-2010-0179 could be circumvented permitting the execution of
arbitrary JavaScript with chrome privileges (CVE-2010-3773).
Security researcher regenrecht reported via TippingPoint's Zero
Day Initiative that JavaScript arrays were vulnerable to an integer
overflow vulnerability. The report demonstrated that an array could
be constructed containing a very large number of items such that when
memory was allocated to store the array items, the integer value used
to calculate the buffer size would overflow resulting in too small a
buffer being allocated. Subsequent use of the array object could then
result in data being written past the end of the buffer and causing
memory corruption (CVE-2010-3767).
Security researcher regenrecht reported via TippingPoint's Zero Day
Initiative that a nsDOMAttribute node can be modified without informing
the iterator object responsible for various DOM traversals. This
flaw could lead to a inconsistent state where the iterator points
to an object it believes is part of the DOM but actually points to
some other object. If such an object had been deleted and its memory
reclaimed by the system, then the iterator could be used to call into
attacker-controlled memory (CVE-2010-3766).
Security researcher Gregory Fleischer reported that when a Java
LiveConnect script was loaded via a data: URL which redirects via a
meta refresh, then the resulting plugin object was created with the
wrong security principal and thus received elevated privileges such
as the abilities to read local files, launch processes, and create
network connections (CVE-2010-3775).
Mozilla added the OTS font sanitizing library to prevent downloadable
fonts from exposing vulnerabilities in the underlying OS font
code. This library mitigates against several issues independently
reported by Red Hat Security Response Team member Marc Schoenefeld
and Mozilla security researcher Christoph Diehl (CVE-2010-3768).
Security researcher wushi of team509 reported that when a XUL tree
had an HTML <div> element nested inside a <treechildren> element then
code attempting to display content in the XUL tree would incorrectly
treat the <div> element as a parent node to tree content underneath
it resulting in incorrect indexes being calculated for the child
content. These incorrect indexes were used in subsequent array
operations which resulted in writing data past the end of an allocated
buffer. An attacker could use this issue to crash a victim's browser
and run arbitrary code on their machine (CVE-2010-3772).
Security researcher echo reported that a web page could open a window
with an about:blank location and then inject an <isindex> element
into that page which upon submission would redirect to a chrome:
document. The effect of this defect was that the original page would
wind up with a reference to a chrome-privileged object, the opened
window, which could be leveraged for privilege escalation attacks
(CVE-2010-3771).
Dirk Heinrich reported that on Windows platforms when document.write()
was called with a very long string a buffer overflow was caused in line
breaking routines attempting to process the string for display. Such
cases triggered an invalid read past the end of an array causing a
crash which an attacker could potentially use to run arbitrary code
on a victim's computer (CVE-2010-3769).
Mozilla developers identified and fixed several memory safety
bugs in the browser engine used in Firefox and other Mozilla-based
products. Some of these bugs showed evidence of memory corruption
under certain circumstances, and we presume that with enough effort
at least some of these could be exploited to run arbitrary code
(CVE-2010-3776, CVE-2010-3777). |
| Alerts: |
|
Comments (1 posted)
fontforge: code execution
| Package(s): | fontforge |
CVE #(s): | CVE-2010-4259
|
| Created: | December 14, 2010 |
Updated: | January 23, 2012 |
| Description: |
From the CVE entry:
Stack-based buffer overflow in FontForge 20100501 allows remote attackers to cause a denial of service (application crash) or possibly execute arbitrary code via a long CHARSET_REGISTRY header in a BDF font file. |
| Alerts: |
|
Comments (none posted)
HelixPlayer - many potential vulnerabilities
Comments (none posted)
kernel: denial of service
| Package(s): | kernel |
CVE #(s): | CVE-2010-3086
CVE-2010-4162
|
| Created: | December 14, 2010 |
Updated: | July 14, 2011 |
| Description: |
From the SUSE advisory:
CVE-2010-3086: A missing lock prefix in the x86 futex code could be
used by local attackers to cause a denial of service.
CVE-2010-4162: A local denial of service in the blockdevice layer
was fixed.
|
| Alerts: |
|
Comments (none posted)
kernel: multiple vulnerabilities
| Package(s): | kernel-rt |
CVE #(s): | CVE-2010-3861
CVE-2010-4082
CVE-2010-4157
CVE-2010-4158
CVE-2010-4169
|
| Created: | December 9, 2010 |
Updated: | July 14, 2011 |
| Description: |
From the Red Hat advisory:
A flaw in ethtool_get_rxnfc() in the Linux kernel's ethtool IOCTL
handler. When it is called with a large info.rule_cnt, it could allow a
local user to cause an information leak. (CVE-2010-3861, Moderate)
Missing initialization flaws in the Linux kernel could lead to
information leaks. (CVE-2010-4082, CVE-2010-4158, Low)
Missing sanity checks in gdth_ioctl_alloc() in the gdth driver in the
Linux kernel, could allow a local user with access to "/dev/gdth" on a
64-bit system to cause a denial of service or escalate their privileges.
(CVE-2010-4157, Moderate)
A use-after-free flaw in the mprotect() system call could allow a local,
unprivileged user to cause a local denial of service. (CVE-2010-4169,
Moderate)
|
| Alerts: |
|
Comments (none posted)
moonlight: code execution
| Package(s): | moonlight |
CVE #(s): | CVE-2010-4254
|
| Created: | December 15, 2010 |
Updated: | March 31, 2011 |
| Description: |
Untrusted moonlight applications can break out of the sandbox, allowing an attacker to execute arbitrary code. |
| Alerts: |
|
Comments (none posted)
openttd: denial of service
| Package(s): | openttd |
CVE #(s): | CVE-2010-4168
|
| Created: | December 14, 2010 |
Updated: | November 14, 2011 |
| Description: |
From the CVE entry:
Multiple use-after-free vulnerabilities in OpenTTD 1.0.x before 1.0.5 allow (1) remote attackers to cause a denial of service (invalid write and daemon crash) by abruptly disconnecting during transmission of the map from the server, related to network/network_server.cpp; (2) remote attackers to cause a denial of service (invalid read and daemon crash) by abruptly disconnecting, related to network/network_server.cpp; and (3) remote servers to cause a denial of service (invalid read and application crash) by forcing a disconnection during the join process, related to network/network.cpp. |
| Alerts: |
|
Comments (none posted)
otrs: multiple vulnerabilities
| Package(s): | otrs |
CVE #(s): | CVE-2010-2080
CVE-2010-3476
CVE-2010-4071
|
| Created: | December 15, 2010 |
Updated: | December 24, 2010 |
| Description: |
The otrs business-process management system suffers from two cross-site scripting bugs and one denial of service vulnerability. |
| Alerts: |
|
Comments (none posted)
perl-CGI-Simple: HTTP response splitting
| Package(s): | perl-CGI-Simple |
CVE #(s): | CVE-2010-2761
|
| Created: | December 9, 2010 |
Updated: | December 9, 2011 |
| Description: |
From the Mandriva advisory:
The multipart_init function in (1) CGI.pm before 3.50 and (2) Simple.pm
in CGI::Simple 1.112 and earlier uses a hardcoded value of the MIME
boundary string in multipart/x-mixed-replace content, which allows
remote attackers to inject arbitrary HTTP headers and conduct HTTP
response splitting attacks via crafted input that contains this value,
a different vulnerability than CVE-2010-3172 (CVE-2010-2761).
|
| Alerts: |
|
Comments (none posted)
php: denial of service
| Package(s): | php |
CVE #(s): | CVE-2010-4409
|
| Created: | December 15, 2010 |
Updated: | March 23, 2011 |
| Description: |
An integer overflow in NumberFormatter::getSymbol in php 5.3.3 and prior can allow a remote attacker to crash the application. |
| Alerts: |
|
Comments (none posted)
xfig: code execution
| Package(s): | xfig |
CVE #(s): | CVE-2010-4262
|
| Created: | December 15, 2010 |
Updated: | January 17, 2011 |
| Description: |
The xfig drawing editor suffers from a buffer overflow which can be exploited via a malicious fig file. |
| Alerts: |
|
Comments (none posted)
Page editor: Jake Edge
Next page: Kernel development>>