By Jake Edge
March 16, 2011
Transitioning between states, or contexts—unencrypted to encrypted
for example—is
one place where security flaws can sometimes hide. We have seen one example
of that in the TLS renegotiation
vulnerability that cropped up in late 2009. More recently, a somewhat
similar problem
was discovered in the Postfix mail transfer agent (MTA) (as well as
other mail server software and MTAs). The problem lies in improperly
handling the transition between states such that the boundaries that should
exist
between them are not enforced.
The problem came to light in a lengthy post on
March 7 to the
postfix-users mailing list by Postfix creator Wietse Venema, but he had
discovered it back in January. Venema silently fixed the problem in
Postfix at that time, and then worked with CERT to coordinate fixes for
other affected projects and vendors. That work has been completed, so
the details are now being made public.
The problem occurs when Postfix changes from unencrypted to encrypted mode
via the STARTTLS SMTP command. Venema goes into some detail about
how Postfix makes that switch (at least at a high level), but the basic
flaw is that it doesn't flush its buffers after it switches over to the TLS
encrypted mode. That allows a man-in-the-middle attacker to inject some
plaintext commands into the SMTP data stream between the STARTTLS
and the client's first TLS-encrypted SMTP commands.
Venema demonstrates the problem using the OpenSSL s_client command
with a minor modification. Using that program, one can easily test for the
problem.
In the example, the STARTTLS command is followed directly by the
RSET command, which just resets the state (sender and receiver
addresses for instance) of any in-progress mail transaction. In an
affected MTA, the TLS
negotiation will take place, so that subsequent traffic is encrypted, but
the server will read the buffered RSET command even though it was
sent prior to the establishment of the TLS session. But, since
the server believes it is in encrypted mode, it treats the RSET as
being in that context.
Obviously, a RSET is not particularly harmful. There are other
things an attacker could do, as Venema mentions:
How would an attacker exploit this? It would play man-in-the-middle
on the connection between SMTP client and server, perhaps using ARP
spoofing at a public WIFI access point. Instead of adding a harmless
RSET command, it could steal email or authentication credentials.
The exploits would look similar to those described for the TLS
renegotiation flaw. If the attacker can predict what commands a client
will send (which isn't terribly difficult at least for SMTP), they can
prefix their own set of commands and relay the server responses to the
victim. Typically, the attacker commands will leave the server in a kind
of dangling state waiting for the client to send data that will complete
the commands. The classic example is for the attacker to send the SMTP
DATA
command after setting the from and to addresses appropriately; all of the
commands the client sends are then included into the email that gets sent to
the attacker.
Clients that don't check the TLS certificate are, in some sense, unaffected
by this problem. They are always vulnerable to man-in-the-middle attacks
that don't need to rely upon tricks like this plaintext injection. But
clients that do check those certificates were at risk. Given that
even security-conscious users are much more
inclined to use a random open WiFi access point because they are using
encrypted communications, this vulnerability could be used to capture a lot
of outgoing mail—or worse.
Venema also points out that part of the problem in Postfix was that it was
written to adhere to the "robustness principle" (aka Postel's Law):
"Be conservative in what you send; be liberal in what you
accept". The idea is that protocol implementations should strive to
only send compliant messages, but to accept non-compliant messages from
others when the intent is clear. Venema puts it this way:
This reflects what once was the primary mission of Postfix: to deliver
mail, not to force other systems to implement all the Internet RFCs
correctly. Nowadays, strict protocol compliance is becoming a requirement
for senders to get their email delivered. As this episode shows, stricter
protocol enforcement by receivers can bring security benefits, besides
blocking spambots.
Sadly in some ways, the robustness principle has
been generally deprecated over the years as attackers (and other malicious
entities such as spammers) have exploited the liberal acceptance of
messages to further their aims. It has also allowed ill-behaved programs
to continue to exist well past the time they should have been fixed.
Strict protocol compliance in both
directions is now the norm.
The full message from Venema is well worth reading as it provides many more
details than other advisories generally do. It should also be something of
a wakeup call to other developers of servers that switch between contexts
(either switching from plaintext to encrypted or by encryption
renegotiation). Looking closely at those transitions might just turn up a
hole or two. Hopefully if bugs like that do get discovered, the developers
will put out an advisory as informative as Venema's.
[ We would like to thank Brad Hards for giving us a heads-up about this
issue. ]
Comments (none posted)
Brief items
But their most interesting attack focused on the car stereo. By adding
extra code to a digital music file, they were able to turn a song burned to
CD into a Trojan horse. When played on the car's stereo, this song could
alter the firmware of the car's stereo system, giving attackers an entry
point to change other components on the car. This type of attack could be
spread on file-sharing networks without arousing suspicion, they
believe. "It's hard to think of something more innocuous than a song," said
Stefan Savage, a professor at the University of California.
--
ITworld
(seen at
Boing
Boing)
The lack of a security mindset is what accounts for upstream ripoffs of
grsec features ultimately being incomplete or improperly implemented. Code
will go in following an initial interest, but no single person will stick
around years later to make sure it's still correct. A prime example of this
is constifying of function pointers in the kernel. While in upstream it was
confined to a few struct types since 2007, it was expanded a great deal in
grsec and maintained until today (I'm even nice enough to make security_ops
and selinux_enable read-only under KERNEXEC). Upstream never maintained
constification since the initial patchset. Occasionally I'd complain about
this publicly, and a spurt of interest would follow, only to be
unmaintained yet again. Often times someone would make the effort of
submitting all the constifying patches from grsec only to see a fraction of
them applied (with no reason for the rest to not be applied). There's no
eye for consistency or quality, just the name and a facade of security.
--
Brad
Spengler
Of course it has taken us more than 13 years to take Nmap where it is
today. So even Greg [Hoglund] had to acknowledge that he and one employee
couldn't outdo us in a day. So he proposes that they "take a couple
of days" to write their Nmap killer :).
-- Nmap developer
Fyodor reads some HB Gary emails (the whole post is worth reading for
its amusement value)
Comments (none posted)
In a long-overdue upgrade, we have recently switched over to storing hashed
passwords in our database. We have occasionally been taken to task (and
deservedly so) for not doing that, and have finally gotten around to
implementing a bcrypt-based
hash for passwords. When the LWN site code was first implemented, passwords
seemed like a pretty low-security item—there just wasn't much that an
attacker could do if they got access to one—and the ability to remind
users of their passwords seemed useful. Over time, though, it has become
clear that password reuse can make the compromise of even "low security"
passwords into a serious problem. Sites like ours clearly should not store
passwords in plain text; we are now happy to say that we do not.
The only user-visible side of the change is in the
username/password recovery process as we can no longer send you your
password in email (at least we hope that's the only user-visible
part, the rest should just be working invisibly in the background).
Username and password recovery have been added to the Login page in case you ever need them.
One thing to note, however, is that none of it will work unless we have an
up-to-date email address for you in our database. We don't send very much email
that you haven't requested (essentially just subscription reminders) and we
definitely will not share your email address with anyone else, so please
check your address via the My Account page, and
update it if necessary.
Comments (3 posted)
New vulnerabilities
aaa_base: arbitrary file corruption
| Package(s): | aaa_base |
CVE #(s): | CVE-2011-0461
|
| Created: | March 14, 2011 |
Updated: | May 17, 2011 |
| Description: |
From the openSUSE advisory:
The boot.localfs init script wrote a file to /dev/shm
during shut-down. Since local users may create symlinks
there a malicious user could cause corruption of arbitrary
files. |
| Alerts: |
|
Comments (none posted)
asterisk: multiple vulnerabilities
| Package(s): | asterisk |
CVE #(s): | |
| Created: | March 10, 2011 |
Updated: | March 16, 2011 |
| Description: |
From the Fedora advisory:
The release of Asterisk 1.6.2.17 resolves several issues reported by the community and would have not been possible without your participation. Thank you!
|
| Alerts: |
|
Comments (none posted)
build: unsafe use of cpio
| Package(s): | build |
CVE #(s): | CVE-2010-4226
|
| Created: | March 15, 2011 |
Updated: | April 18, 2011 |
| Description: |
From the openSUSE advisory:
The build script uses cpio to extract untrusted rpm
packages for bootstrapping virtual machines. cpio is not
safe to use for this task, therefore the build script now
uses bsdtar instead |
| Alerts: |
|
Comments (2 posted)
cgit: denial of service
| Package(s): | cgit |
CVE #(s): | CVE-2011-1027
|
| Created: | March 16, 2011 |
Updated: | March 16, 2011 |
| Description: |
The cgit server can be thrown into an infinite loop by a remote attacker using a specially crafted URL. |
| Alerts: |
|
Comments (none posted)
chromium-browser: multiple vulnerabilities
| Package(s): | chromium-browser |
CVE #(s): | CVE-2011-1108
CVE-2011-1109
CVE-2011-1113
CVE-2011-1114
CVE-2011-1115
CVE-2011-1121
CVE-2011-1122
|
| Created: | March 10, 2011 |
Updated: | March 16, 2011 |
| Description: |
From the Debian advisory:
CVE-2011-1108: Google Chrome before 9.0.597.107 does not properly implement JavaScript dialogs, which allows remote attackers to cause a denial of service (application crash) or possibly have unspecified other impact via a crafted HTML document.
CVE-2011-1109: Google Chrome before 9.0.597.107 does not properly process nodes in Cascading Style Sheets (CSS) stylesheets, which allows remote attackers to cause a denial of service or possibly have unspecified other impact via unknown vectors that lead to a "stale pointer."
CVE-2011-1113: Google Chrome before 9.0.597.107 on 64-bit Linux platforms does not properly perform pickle deserialization, which allows remote attackers to cause a denial of service (out-of-bounds read) via unspecified vectors.
CVE-2011-1114: Google Chrome before 9.0.597.107 does not properly handle tables, which allows remote attackers to cause a denial of service or possibly have unspecified other impact via unknown vectors that lead to a "stale node."
CVE-2011-1115: Google Chrome before 9.0.597.107 does not properly render tables, which allows remote attackers to cause a denial of service or possibly have unspecified other impact via unknown vectors that lead to a "stale pointer."
CVE-2011-1121: Integer overflow in Google Chrome before 9.0.597.107 allows remote attackers to cause a denial of service or possibly have unspecified other impact via vectors involving a TEXTAREA element.
CVE-2011-1122: The WebGL implementation in Google Chrome before 9.0.597.107 allows remote attackers to cause a denial of service (out-of-bounds read) via unspecified vectors, aka Issue 71960.
|
| Alerts: |
|
Comments (none posted)
chromium-browser: multiple vulnerabilities
| Package(s): | chromium-browser |
CVE #(s): | CVE-2011-0779
CVE-2011-1290
|
| Created: | March 15, 2011 |
Updated: | March 16, 2011 |
| Description: |
From the Debian advisory:
CVE-2011-0779: Google Chrome before 9.0.597.84 does not properly handle a missing key in an extension, which allows remote attackers to cause a denial of service (application crash) via a crafted extension.
CVE-2011-1290: Integer overflow in WebKit allows remote attackers to execute arbitrary code via unknown vectors, as demonstrated by Vincenzo Iozzo, Willem Pinckaers, and Ralf-Philipp Weinmann during a Pwn2Own competition at CanSecWest 2011.
|
| Alerts: |
|
Comments (none posted)
kernel-rt: multiple vulnerabilities
| Package(s): | kernel-rt |
CVE #(s): | CVE-2010-4250
CVE-2010-4648
|
| Created: | March 11, 2011 |
Updated: | September 13, 2011 |
| Description: |
From the Red Hat advisory:
Memory leak in the inotify_init() system call. In some cases, it could
leak a group, which could allow a local, unprivileged user to eventually
cause a denial of service. (CVE-2010-4250)
A logic error in orinoco_ioctl_set_auth() in the Linux kernel's ORiNOCO
wireless extensions support implementation could render TKIP
countermeasures ineffective when it is enabled, as it enabled the card
instead of shutting it down. (CVE-2010-4648) |
| Alerts: |
|
Comments (none posted)
krb5: denial of service
| Package(s): | krb5 |
CVE #(s): | CVE-2011-0284
|
| Created: | March 16, 2011 |
Updated: | April 1, 2011 |
| Description: |
The krb5 key distribution center suffers from a double-free flaw which can be exploited by a remote attacker to cause the daemon to abort. |
| Alerts: |
|
Comments (none posted)
libvpx: denial of service
| Package(s): | libvpx |
CVE #(s): | CVE-2010-4489
|
| Created: | March 14, 2011 |
Updated: | June 19, 2012 |
| Description: |
From the Ubuntu advisory:
Chris Evans discovered that libvpx did not properly perform bounds
checking. If an application using libvpx opened a specially crafted WebM
file, an attacker could cause a denial of service.
|
| Alerts: |
|
Comments (none posted)
openldap: multiple vulnerabilities
| Package(s): | openldap |
CVE #(s): | CVE-2011-1024
CVE-2011-1025
CVE-2011-1081
|
| Created: | March 11, 2011 |
Updated: | September 26, 2011 |
| Description: |
From the Red Hat advisory:
A flaw was found in the way OpenLDAP handled authentication failures being
passed from an OpenLDAP slave to the master. If OpenLDAP was configured
with a chain overlay and it forwarded authentication failures, OpenLDAP
would bind to the directory as an anonymous user and return success, rather
than return failure on the authenticated bind. This could allow a user on a
system that uses LDAP for authentication to log into a directory-based
account without knowing the password. (CVE-2011-1024)
It was found that the OpenLDAP back-ndb back end allowed successful
authentication to the root distinguished name (DN) when any string was
provided as a password. A remote user could use this flaw to access an
OpenLDAP directory if they knew the value of the root DN. Note: This issue
only affected OpenLDAP installations using the NDB back-end, which is only
available for Red Hat Enterprise Linux 6 via third-party software.
(CVE-2011-1025)
A flaw was found in the way OpenLDAP handled modify relative distinguished
name (modrdn) requests. A remote, unauthenticated user could use this flaw
to crash an OpenLDAP server via a modrdn request containing an empty old
RDN value. (CVE-2011-1081)
|
| Alerts: |
|
Comments (none posted)
perl-mail-box: boundary guessing
| Package(s): | perl-Mail-Box |
CVE #(s): | |
| Created: | March 11, 2011 |
Updated: | March 16, 2011 |
| Description: |
From the Fedora advisory:
2.097 now randomizes boundary string to avoid (undemonstrated) security risks with boundary guessing.
|
| Alerts: |
|
Comments (none posted)
php-zendframework: cross-site scripting
| Package(s): | php-ZendFramework |
CVE #(s): | |
| Created: | March 14, 2011 |
Updated: | March 16, 2011 |
| Description: |
From the Zend Framework advisory:
The default error handling view script generated using Zend_Tool failed to escape request parameters when run in the "development" configuration environment, providing a potential XSS attack vector. |
| Alerts: |
|
Comments (none posted)
pidgin: denial of service
| Package(s): | pidgin |
CVE #(s): | CVE-2011-1091
|
| Created: | March 14, 2011 |
Updated: | November 10, 2011 |
| Description: |
From the Red Hat bugzilla:
Multiple NULL pointer dereference flaws were found in the way Yahoo protocol plug-in of the Pidgin instant messaging client handled malformed YMSG packets (SMS messages and notification packets). A remote, authenticated user could use this flaw to cause denial of service (Pidgin crash) via specially-crafted notification message. The SMS messages handling issue is exploitable only via specially-crafted SMS message, sent from remote, malicious Yahoo server.
|
| Alerts: |
|
Comments (none posted)
vsftpd: denial of service
| Package(s): | vsftpd |
CVE #(s): | CVE-2011-0762
|
| Created: | March 10, 2011 |
Updated: | October 11, 2011 |
| Description: |
From the CVE entry:
The vsf_filename_passes_filter function in ls.c in vsftpd before 2.3.3 allows remote authenticated users to cause a denial of service (CPU consumption and process slot exhaustion) via crafted glob expressions in STAT commands in multiple FTP sessions, a different vulnerability than CVE-2010-2632. |
| Alerts: |
|
Comments (none posted)
wireshark: denial of service
| Package(s): | wireshark |
CVE #(s): | CVE-2011-1143
CVE-2011-1138
|
| Created: | March 14, 2011 |
Updated: | April 19, 2011 |
| Description: |
From the CVE entries:
epan/dissectors/packet-ntlmssp.c in the NTLMSSP dissector in Wireshark before 1.4.4 allows remote attackers to cause a denial of service (NULL pointer dereference and application crash) via a crafted .pcap file. (CVE-2011-1143)
Off-by-one error in the dissect_6lowpan_iphc function in packet-6lowpan.c in Wireshark 1.4.0 through 1.4.3 on 32-bit platforms allows remote attackers to cause a denial of service (application crash) via a malformed 6LoWPAN IPv6 packet. (CVE-2011-1138) |
| Alerts: |
|
Comments (none posted)
wordpress: multiple vulnerabilities
| Package(s): | wordpress |
CVE #(s): | CVE-2011-0700
CVE-2011-0701
|
| Created: | March 11, 2011 |
Updated: | September 18, 2012 |
| Description: |
From the Debian advisory:
CVE-2011-0700: Input passed via the post title when performing a "Quick Edit" or "Bulk Edit" action and via the "post_status", "comment_status", and "ping_status" parameters is not properly sanitised before being used.
Certain input passed via tags in the tags meta-box is not properly sanitised before being returned to the user.
CVE-2011-0701: Wordpress incorrectly enforces user access restrictions when accessing posts via the media uploader and can be exploited to disclose the contents of e.g. private or draft posts.
|
| Alerts: |
|
Comments (none posted)
Page editor: Jake Edge
Next page: Kernel development>>