LWN.net Logo

Security

Using HTTP POST for denial of service

By Jake Edge
December 1, 2010

While it isn't altogether new, the implications of a recently reported denial of service (DoS) attack method against web servers is somewhat eye-opening. The attack itself is similar in many ways to the Slowloris technique. Depending on how the web server is configured, a DoS against it may only require a fairly small number of slow-moving connections. In addition, since it exploits a weakness in HTTP, it is difficult to work around.

Open Web Application Security Project (OWASP) researchers, Wong Onn Chee and Tom Brennan, presented [PDF] on the flaw at the AppSec DC 2010 conference in mid-November. As they point out, most DoS (and distributed DoS or DDoS) attacks target lower layers in the network stack, typically the transport layer, which is layer four in the OSI model. More recent DoS attacks have moved up the stack, with things like Slowloris attacking layer seven, the application layer (e.g. HTTP, FTP, SMTP).

ISPs and internet carriers have gotten much better at thwarting attacks at the transport layer, but for a number of reasons, attacks against applications are more difficult to deal with. It can be difficult to distinguish legitimate application traffic from a DoS attack. Applications tend to have a larger footprint and require more server resources. That means that a smaller number of attacking resources may be needed to perform a DoS at the application versus those required to do it at the transport layer.

Previously, Slowloris and other techniques used the HTTP GET method in conjunction with sending the HTTP headers very slowly to monopolize a connection to the web server. If enough of those "clients" were running, they would consume all of the sockets or other resources at the server end, thus denying any other clients (i.e. legitimate traffic) access to the server. Since that time, various workarounds have been found to reduce the problem from slow HTTP GETs in the Apache web server. Interestingly, Microsoft's IIS web server uses a different mechanism to handle incoming requests and was not vulnerable to GET-based DoS.

What Chee and his team found in September 2009 was that the HTTP POST method could also be used to perform a DoS. By sending a very large value in the Content-Length header, then very slowly sending that amount of data, one byte at a time, a client can consume a connection on the server for a very long time. In addition, because all of the headers have been sent, the mechanism that allowed IIS to avoid the GET-based attack was bypassed, so IIS and Apache are both vulnerable to these POST-based attacks.

So, Apache and IIS web servers that accept any kind of forms—that is to say, nearly all of them—are vulnerable. In addition, the attacks don't even have to reference a valid form on the server as most servers don't check until after the request is received. How many attacker connections are required to shut down a server is variable depending on the configuration of the server. The presentation mentions 20,000 connections for IIS and fewer for Apache because of client or thread limits in httpd.conf. An Acunetix blog post notes that 256 connections can be enough for Apache 1.3 in its default configuration. In any case, neither 256 nor 20,000 is a significant hurdle for an interested attacker.

Both Apache and Microsoft were contacted about this problem, but neither plans to "fix" it, because it is inherent in the protocol. HTTP is meant to allow for slow and intermittent connections, which don't look very different from this kind of attack. Apache has two potential workarounds: the experimental mod_reqtimeout, which allows for timeouts on headers and request bodies, or the LimitRequestBody directive, which allows a maximum request size to be set (by default it is 2GB). Those may provide band-aids but there will be collateral damage as folks with slower, dodgier connections—perhaps from a mobile device—may suffer. It seems likely that most servers could live with maximum request sizes significantly smaller than 2GB, however.

Chee and Brennan also report that botnet operators have started incorporating application layer DDoS into their bag of tricks, so we will likely be seeing more of these kind of attacks. It may mostly be GET-based attacks for the moment, but the botnet "herders" will eventually get around to incorporating POST-based attacks as well. The researchers predict that application layer DDoS will supplant transport layer DDoS sometime in the next ten years.

DoS attacks are probably less of a problem to small-time web site operators as the likely targets are deep-pocketed online retailers and the like. Criminals often target those sites at particularly important points in the calendar, like when holiday shoppers are likely to visit. It isn't too difficult to extract a large payment from such a retailer when it is faced with losing most of its sales at such a critical time. Those kinds of sites should probably be gearing up—hopefully have already geared up—for those kinds of attacks over the next month and beyond.

Comments (7 posted)

Brief items

Security quote of the week

The current security callbacks are absolutely nonsensical random crap slapped all around the kernel. It increases our security complexity and has thus the opposite effect - it makes us _less_ secure.

Did no-one think of merging the capabilities checks and the security subsystem callbacks in some easy-to-use manner, which makes the default security policy apparent at first sight?

-- Ingo Molnar

Comments (2 posted)

Savannah.gnu.org compromised

The Savannah front page currently reads: "There's been a SQL injection leading to leaking of encrypted account passwords, some of them discovered by brute-force attack, leading in turn to project membership access." The site is being restored to its state as of November 23; changes committed after that date will need to be redone. (Thanks to Giacomo Catenazzi).

Comments (25 posted)

New vulnerabilities

condor: authentication bypass

Package(s):condor CVE #(s):CVE-2010-4179
Created:December 1, 2010 Updated:December 1, 2010
Description: The Condor management tool trusted its "trusted channel" a bit too much, enabling an attacker to submit jobs as any user (except root).
Alerts:
Red Hat RHSA-2010:0921-01 2010-11-30
Red Hat RHSA-2010:0922-01 2010-11-30

Comments (none posted)

dracut: insecure /dev/systty permissions

Package(s):dracut CVE #(s):CVE-2010-4176
Created:November 25, 2010 Updated:December 3, 2010
Description:

From the Fedora advisory:

It was discovered that /dev/systty device file created by dracut-generated initramfs scripts used an insecure file permissions. This could possibly allow local user to snoop on other user's terminal.

Alerts:
Fedora FEDORA-2010-17912 2010-11-19
Fedora FEDORA-2010-17930 2010-11-19
Fedora FEDORA-2010-17930 2010-11-19

Comments (none posted)

kernel: multiple vulnerabilities

Package(s):kernel CVE #(s):CVE-2010-3448 CVE-2010-3848 CVE-2010-3849 CVE-2010-3850 CVE-2010-3858 CVE-2010-3859 CVE-2010-3873 CVE-2010-3874 CVE-2010-3875 CVE-2010-3876 CVE-2010-3877 CVE-2010-3880 CVE-2010-4072 CVE-2010-4073 CVE-2010-4074 CVE-2010-4078 CVE-2010-4079 CVE-2010-4080 CVE-2010-4081 CVE-2010-4083 CVE-2010-4164
Created:November 29, 2010 Updated:August 9, 2011
Description: From the Debian advisory:

Dan Jacobson reported an issue in the thinkpad-acpi driver. On certain Thinkpad systems, local users can cause a denial of service (X.org crash) by reading /proc/acpi/ibm/video. (CVE-2010-3448)

Nelson Elhage discovered an issue in the Econet protocol. Local users can cause a stack overflow condition with large msg->msgiovlen values that can result in a denial of service or privilege escalation. (CVE-2010-3848)

Nelson Elhage discovered an issue in the Econet protocol. Local users can cause a denial of service (oops) if a NULL remote addr value is passed as a parameter to sendmsg(). (CVE-2010-3849)

Nelson Elhage discovered an issue in the Econet protocol. Local users can assign econet addresses to arbitrary interfaces due to a missing capabilities check. (CVE-2010-3850)

Brad Spengler reported an issue in the setup_arg_pages() function. Due to a bounds-checking failure, local users can create a denial of service (kernel oops). (CVE-2010-3858)

Dan Rosenberg reported an issue in the TIPC protocol. When the tipc module is loaded, local users can gain elevated privileges via the sendmsg() system call. (CVE-2010-3859)

Dan Rosenberg reported an issue in the X.25 network protocol. Local users can cause heap corruption, resulting in a denial of service (kernel panic). (CVE-2010-3873)

Dan Rosenberg discovered an issue in the Control Area Network (CAN) subsystem on 64-bit systems. Local users may be able to cause a denial of service (heap corruption). (CVE-2010-3874)

Vasiliy Kulikov discovered an issue in the AX.25 protocol. Local users can obtain the contents of sensitive kernel memory. (CVE-2010-3875)

Vasiliy Kulikov discovered an issue in the Packet protocol. Local users can obtain the contents of sensitive kernel memory. (CVE-2010-3876)

Vasiliy Kulikov discovered an issue in the TIPC protocol. Local users can obtain the contents of sensitive kernel memory. (CVE-2010-3877)

Nelson Elhage discovered an issue in the INET_DIAG subsystem. Local users can cause the kernel to execute unaudited INET_DIAG bytecode, resulting in a denial of service. (CVE-2010-3880)

Kees Cook discovered an issue in the System V shared memory subsystem. Local users can obtain the contents of sensitive kernel memory. (CVE-2010-4072)

Dan Rosenberg discovered an issue in the System V shared memory subsystem. Local users on 64-bit system can obtain the contents of sensitive kernel memory via the 32-bit compatible semctl() system call. (CVE-2010-4073)

Dan Rosenberg reported issues in the mos7720 and mos7840 drivers for USB serial converter devices. Local users with access to these devices can obtain the contents of sensitive kernel memory. (CVE-2010-4074)

Dan Rosenberg reported an issue in the framebuffer driver for SiS graphics chipesets (sisfb). Local users with access to the framebuffer device can obtain the contents of sensitive kernel memory via the FBIOGET_VBLANK ioctl. (CVE-2010-4078)

Dan Rosenberg reported an issue in the ivtvfb driver used for the Hauppauge PVR-350 card. Local users with access to the framebuffer device can obtain the contents of sensitive kernel memory via the FBIOGET_VBLANK ioctl. (CVE-2010-4079)

Dan Rosenberg discovered an issue in the ALSA driver for RME Hammerfall DSP audio devices. Local users with access to the audio device can obtain the contents of sensitive kernel memory via the NDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctl. (CVE-2010-4080)

Dan Rosenberg discovered an issue in the ALSA driver for RME Hammerfall DSP MADI audio devices. Local users with access to the audio device can obtain the contents of sensitive kernel memory via the SNDRV_HDSP_IOCTL_GET_CONFIG_INFO ioctl. (CVE-2010-4081)

Dan Rosenberg discovered an issue in the semctl system call. Local users can obtain the contents of sensitive kernel memory through usage of the semid_ds structure. (CVE-2010-4083)

Dan Rosenberg discovered an issue in the X.25 network protocol. Remote users can achieve a denial of service (infinite loop) by taking advantage of an integer underflow in the facility parsing code. (CVE-2010-4164)

Alerts:
Ubuntu USN-1244-1 2011-10-25
Ubuntu USN-1204-1 2011-09-13
Ubuntu USN-1202-1 2011-09-13
Ubuntu USN-1187-1 2011-08-09
Ubuntu USN-1186-1 2011-08-09
Ubuntu USN-1167-1 2011-07-13
Ubuntu USN-1164-1 2011-07-06
Debian DSA-2264-1 2011-06-18
Scientific Linux SL-kern-20110601 2011-06-01
Red Hat RHSA-2011:0836-01 2011-06-01
Debian DSA-2240-1 2011-05-24
SUSE SUSE-SA:2011:017 2011-04-18
openSUSE openSUSE-SU-2011:0346-1 2011-04-18
Ubuntu USN-1105-1 2011-04-05
Ubuntu USN-1111-1 2011-05-05
SUSE SUSE-SA:2011:019 2011-04-28
Ubuntu USN-1093-1 2011-03-25
SUSE SUSE-SA:2011:015 2011-03-24
Mandriva MDVSA-2011:051 2011-03-18
SUSE SUSE-SA:2011:012 2011-03-08
Ubuntu USN-1083-1 2011-03-03
Ubuntu USN-1080-2 2011-03-02
Ubuntu USN-1081-1 2011-03-02
Ubuntu USN-1080-1 2011-03-01
Ubuntu USN-1074-2 2011-02-28
openSUSE openSUSE-SU-2011:0399-1 2011-04-28
Ubuntu USN-1119-1 2011-04-20
Ubuntu USN-1074-1 2011-02-25
Ubuntu USN-1073-1 2011-02-25
Ubuntu USN-1072-1 2011-02-25
Ubuntu USN-1071-1 2011-02-25
Mandriva MDVSA-2011:029 2011-02-17
SUSE SUSE-SA:2011:008 2011-02-11
SUSE SUSE-SA:2011:007 2011-02-07
Ubuntu USN-1057-1 2011-02-03
CentOS CESA-2011:0162 2011-01-27
SUSE SUSE-SA:2011:005 2011-01-25
Red Hat RHSA-2011:0162-01 2011-01-18
SUSE SUSE-SA:2011:004 2011-01-14
Red Hat RHSA-2011:0007-01 2011-01-11
Ubuntu USN-1041-1 2011-01-10
CentOS CESA-2011:0004 2011-01-06
openSUSE openSUSE-SU-2011:0048-1 2011-01-19
Red Hat RHSA-2011:0004-01 2011-01-04
openSUSE openSUSE-SU-2011:0003-1 2011-01-03
openSUSE openSUSE-SU-2011:0004-1 2011-01-03
Fedora FEDORA-2010-18983 2010-12-17
Mandriva MDVSA-2010:257 2010-10-29
SUSE SUSE-SA:2010:060 2010-12-14
openSUSE openSUSE-SU-2010:1047-1 2010-12-10
Red Hat RHSA-2010:0958-01 2010-12-08
Fedora FEDORA-2010-18506 2010-12-03
Fedora FEDORA-2010-18493 2010-12-03
Red Hat RHSA-2011:0017-01 2011-01-13
Fedora FEDORA-2010-18432 2010-12-02
Ubuntu USN-1023-1 2010-11-30
Debian DSA-2126-1 2010-11-26
SUSE SUSE-SU-2012:0153-1 2012-02-06
SUSE SUSE-SU-2012:0153-2 2012-02-06
openSUSE openSUSE-SU-2012:0206-1 2012-02-09
openSUSE openSUSE-SU-2012:0236-1 2012-02-09
SUSE SUSE-SU-2012:0364-1 2012-03-14
openSUSE openSUSE-SU-2012:0799-1 2012-06-28
openSUSE openSUSE-SU-2012:1439-1 2012-11-05
SUSE SUSE-SU-2013:0786-1 2013-05-14

Comments (none posted)

krb5: authentication bypass

Package(s):krb5 CVE #(s):CVE-2010-1323 CVE-2010-1324 CVE-2010-4020
Created:December 1, 2010 Updated:December 24, 2010
Description: Due to a series of checksum flaws, Kerberos protocol packets can be crafted by a remote attacker in a way which could bypass authentication mechanisms in some configurations.
Alerts:
SUSE SUSE-SR:2010:024 2010-12-23
openSUSE openSUSE-SU-2010:1053-1 2010-12-13
Fedora FEDORA-2010-18425 2010-12-01
Ubuntu USN-1030-1 2010-12-09
Fedora FEDORA-2010-18409 2010-12-01
SUSE SUSE-SR:2010:023 2010-12-08
Debian DSA-2129-1 2010-12-01
CentOS CESA-2010:0926 2010-12-01
Mandriva MDVSA-2010:246 2010-11-30
CentOS CESA-2010:0926 2010-12-01
Red Hat RHSA-2010:0925-01 2010-11-30
Red Hat RHSA-2010:0926-01 2010-11-30
SUSE SUSE-SU-2012:0010-1 2012-01-05
SUSE SUSE-SU-2012:0042-1 2012-01-05
Gentoo 201201-13 2012-01-23

Comments (none posted)

krb5: privilege escalation

Package(s):krb5 CVE #(s):CVE-2010-4021
Created:December 1, 2010 Updated:December 24, 2010
Description: From the Mandriva advisory: An authenticated remote attacker that controls a legitimate service principal could obtain a valid service ticket to itself containing valid KDC-generated authorization data for a client whose TGS-REQ it has intercepted. The attacker could then use this ticket for S4U2Proxy to impersonate the targeted client even if the client never authenticated to the subverted service. The vulnerable configuration is believed to be rare.
Alerts:
SUSE SUSE-SR:2010:024 2010-12-23
openSUSE openSUSE-SU-2010:1053-1 2010-12-13
Ubuntu USN-1030-1 2010-12-09
SUSE SUSE-SR:2010:023 2010-12-08
Mandriva MDVSA-2010:246 2010-11-30
Gentoo 201201-13 2012-01-23

Comments (none posted)

mono: privilege escalation

Package(s):mono CVE #(s):CVE-2010-4159
Created:November 25, 2010 Updated:May 3, 2011
Description:

From the Mandriva advisory:

Untrusted search path vulnerability in metadata/loader.c in Mono 2.8 and earlier allows local users to gain privileges via a Trojan horse shared library in the current working directory (CVE-2010-4159).

Alerts:
SUSE SUSE-SR:2011:008 2011-05-03
Fedora FEDORA-2011-3393 2011-03-15
Fedora FEDORA-2011-3393 2011-03-15
Mandriva MDVSA-2010:240 2010-11-24
Gentoo 201206-13 2012-06-21

Comments (none posted)

openconnect: information leak

Package(s):openconnect CVE #(s):CVE-2010-3902
Created:November 30, 2010 Updated:December 1, 2010
Description: From the Red Hat bugzilla:

OpenConnect before 2.26 places the webvpn cookie value in the debugging output, which might allow remote attackers to obtain sensitive information by reading this output, as demonstrated by output posted to the public openconnect-devel mailing list.

Alerts:
Fedora FEDORA-2010-18032 2010-11-22
Fedora FEDORA-2010-18053 2010-11-22
Fedora FEDORA-2010-18055 2010-11-22

Comments (none posted)

openjdk-6: information leak

Package(s):openjdk-6 CVE #(s):CVE-2010-3860
Created:November 30, 2010 Updated:April 15, 2011
Description: From the Ubuntu advisory:

It was discovered that certain system property information was being leaked, which could allow an attacker to obtain sensitive information.

Alerts:
CentOS CESA-2011:0176 2011-04-14
Red Hat RHSA-2011:0176-01 2011-01-25
Ubuntu USN-1024-2 2010-12-13
SUSE SUSE-SR:2010:023 2010-12-08
openSUSE openSUSE-SU-2010:1017-1 2010-12-03
Fedora FEDORA-2010-18393 2010-12-01
Ubuntu USN-1024-1 2010-11-30

Comments (none posted)

openslp: denial of service

Package(s):openslp CVE #(s):CVE-2010-3609
Created:November 30, 2010 Updated:April 10, 2013
Description: From the openSUSE advisory:

the openslp daemon could run into an endless loop when receiving specially crafted packets

Alerts:
Ubuntu USN-1118-1 2011-04-20
openSUSE openSUSE-SU-2010:0992-1 2010-11-30
Mageia MGASA-2012-0227 2012-08-18
Mandriva MDVSA-2012:141 2012-08-21
Mandriva MDVSA-2013:111 2013-04-10

Comments (none posted)

php: insufficiently random number generation

Package(s):php CVE #(s):CVE-2010-1128
Created:November 30, 2010 Updated:December 2, 2010
Description: From the Red Hat advisory:

It was discovered that the PHP lcg_value() function used insufficient entropy to seed the pseudo-random number generator. A remote attacker could possibly use this flaw to predict values returned by the function, which are used to generate session identifiers by default. This update changes the function's implementation to use more entropy during seeding.

Alerts:
Gentoo 201110-06 2011-10-10
CentOS CESA-2010:0919 2010-12-01
CentOS CESA-2010:0919 2010-11-30
Red Hat RHSA-2010:0919-01 2010-11-29

Comments (1 posted)

phpmyadmin: cross-site scripting

Package(s):phpmyadmin CVE #(s):CVE-2010-4329
Created:November 30, 2010 Updated:December 31, 2010
Description: From the Mandriva advisory:

It was possible to conduct a XSS attack using spoofed request on the db search script.

Alerts:
Debian DSA-2139-1 2010-12-31
Fedora FEDORA-2010-18343 2010-11-30
Fedora FEDORA-2010-18371 2010-11-30
Mandriva MDVSA-2010:244 2010-11-30

Comments (none posted)

wireshark: code execution

Package(s):wireshark CVE #(s):CVE-2010-4300
Created:November 29, 2010 Updated:April 19, 2011
Description: From the Mandriva advisory:

Heap-based buffer overflow in the dissect_ldss_transfer function (epan/dissectors/packet-ldss.c) in the LDSS dissector in Wireshark 1.2.0 through 1.2.12 and 1.4.0 through 1.4.1 allows remote attackers to cause a denial of service (crash) and possibly execute arbitrary code via an LDSS packet with a long digest line that triggers memory corruption.

Alerts:
Gentoo 201110-02 2011-10-09
SUSE SUSE-SR:2011:007 2011-04-19
openSUSE openSUSE-SU-2011:0010-2 2011-01-12
SUSE SUSE-SR:2011:001 2011-01-11
SUSE SUSE-SR:2011:002 2011-01-25
openSUSE openSUSE-SU-2011:0010-1 2011-01-04
Red Hat RHSA-2010:0924-01 2010-11-30
Mandriva MDVSA-2010:242 2010-11-28

Comments (none posted)

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

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