-
Notifications
You must be signed in to change notification settings - Fork 469
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cupsd denial of service attack #75
Comments
CUPS.org User: mike Tim, Have you tested this with 1.1.19? This doesn't seem to hang or otherwise prevent the scheduler from doing its job with the current release - it correctly times out after 300 seconds and does not affect other clients (e.g. other requests are still handled just fine.) |
CUPS.org User: mike Patch for 1.1.19rc4 added to this report; patch for 1.1.18 to follow shortly... |
CUPS.org User: mike OK, there is now an updated 1.1.19rc4 patch (fixes for the SSL timeout support - can't depend on httpWait() knowing when more encrypted data is available, at least not yet - we need to query the SSL library...) as well as a patch against 1.1.18. |
CUPS.org User: mike Updated the 1.1.18 patch to include the SSL library "pending data" check so that timeouts are applied to SSL connections properly. |
CUPS.org User: twaugh.redhat Thanks. The 1.1.19rc4 patch seems to have disappeared though. |
CUPS.org User: mike Yes, we're doing a 1.1.19rc5 release today which contains the fixes (without the announcement - they are bundled with the first bunch of DoS fixes that we made in 1.1.19 prior to your report), so we won't be including the patch for 1.1.19rc4... |
CUPS.org User: mike Closed and made public. |
"cups-1.1.19rc4-str75.patch": Index: cups/http.cRCS file: /development/cvs/cups/cups/http.c,v
if (http->used > 0)
if (http->data_remaining == 0)
if (http->data_encoding != HTTP_ENCODE_CHUNKED) Index: scheduler/client.cRCS file: /development/cvs/cups/scheduler/client.c,v
|
"cups-1.1.18-str65.patch": diff -ur cups-1.1.18/cups/http.c cups-1.1.18.patched/cups/http.c
@@ -261,10 +274,15 @@
@@ -857,7 +875,10 @@
@@ -931,6 +952,9 @@
if (http->used > 0)
if (http->data_remaining == 0)
default : +/**** New in CUPS 1.1.19 ****/ /*
LogMessage(L_DEBUG2, "ShutdownClient: Removing fd %d from InputSet...", diff -ur cups-1.1.18/test/run-stp-tests.sh cups-1.1.18.patched/test/run-stp-tests.sh cat >/tmp/$user/cupsd.conf <<EOF |
"cups-1.1.18-str65v2.patch": diff -ur cups-1.1.18/cups/http.c cups-1.1.18.patched/cups/http.c
@@ -254,6 +267,14 @@ +#ifdef HAVE_LIBSSL
/_
@@ -857,7 +883,10 @@
@@ -931,6 +960,9 @@
if (http->used > 0)
if (http->data_remaining == 0)
default : +/**** New in CUPS 1.1.19 ****/ /*
LogMessage(L_DEBUG2, "ShutdownClient: Removing fd %d from InputSet...", diff -ur cups-1.1.18/test/run-stp-tests.sh cups-1.1.18.patched/test/run-stp-tests.sh cat >/tmp/$user/cupsd.conf <<EOF |
Version: 1.1.17
CUPS.org User: twaugh.redhat
A single client behaving badly can cause the entire server to hang. For example:
$ telnet <your_favorite_cups_server> ipp
POST /printers/<your_favorite_printer> HTTP/1.1
Don't enter the second carriage return to complete the headers, just the POST line and one carriage return. At this point the CUPS server will no longer respond to any other client.
The text was updated successfully, but these errors were encountered: