[Pound Mailing List] [PATCH] Allow disabling SSL compression
Lubomir Rintel <lubo.rintel-Vz9dX3IBr95Wk0Htik3J/[email protected]>
| Newsgroups | gmane.comp.web.pound.general |
|---|---|
| Message-ID | <[email protected]> |
DEFLATE compression can reveal presence of known substrings with potentially
sensitive contents.
Probably the best explanation so far:
http://security.stackexchange.com/questions/19911/crime-how-to-beat-the-beast-successor/19914#19914
---
config.c | 12 +++++++++++-
pound.8 | 8 ++++++++
2 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/config.c b/config.c
index 6ed8e39..01e3023 100755
--- a/config.c
+++ b/config.c
@@ -78,7 +78,7 @@ static regex_t ListenHTTP, ListenHTTPS, End, Address, Port, Cert, xHTTP, Client
static regex_t Err414, Err500, Err501, Err503, MaxRequest, HeadRemove, RewriteLocation, RewriteDestination;
static regex_t Service, ServiceName, URL, HeadRequire, HeadDeny, BackEnd, Emergency, Priority, HAport, HAportAddr;
static regex_t Redirect, RedirectN, TimeOut, Session, Type, TTL, ID, DynScale;
-static regex_t ClientCert, AddHeader, DisableSSLv2, SSLAllowClientRenegotiation, SSLHonorCipherOrder, Ciphers;
+static regex_t ClientCert, AddHeader, DisableSSLv2, SSLAllowClientRenegotiation, SSLHonorCipherOrder, SSLNoCompression, Ciphers;
static regex_t CAlist, VerifyList, CRLlist, NoHTTPS11, Grace, Include, ConnTO, IgnoreCase, HTTPS, HTTPSCert;
static regex_t Disabled, Threads, CNName, Anonymise;
@@ -1123,6 +1123,14 @@ parse_HTTPS(void)
ssl_op_disable |= SSL_OP_CIPHER_SERVER_PREFERENCE;
ssl_op_enable &= ~SSL_OP_CIPHER_SERVER_PREFERENCE;
}
+ } else if(!regexec(&SSLNoCompression, lin, 4, matches, 0)) {
+ if (atoi(lin + matches[1].rm_so)) {
+ ssl_op_enable |= SSL_OP_NO_COMPRESSION;
+ ssl_op_disable &= ~SSL_OP_NO_COMPRESSION;
+ } else {
+ ssl_op_disable |= SSL_OP_NO_COMPRESSION;
+ ssl_op_enable &= ~SSL_OP_NO_COMPRESSION;
+ }
} else if(!regexec(&Ciphers, lin, 4, matches, 0)) {
has_other = 1;
if(res->ctx == NULL)
@@ -1409,6 +1417,7 @@ config_parse(const int argc, char **const argv)
|| regcomp(&SSLAllowClientRenegotiation, "^[ \t]*SSLAllowClientRenegotiation[ \t]+([012])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&DisableSSLv2, "^[ \t]*DisableSSLv2[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&SSLHonorCipherOrder, "^[ \t]*SSLHonorCipherOrder[ \t]+([01])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
+ || regcomp(&SSLNoCompression, "^[ \t]*SSLNoCompression[ \t]+([01])[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&Ciphers, "^[ \t]*Ciphers[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&CAlist, "^[ \t]*CAlist[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
|| regcomp(&VerifyList, "^[ \t]*VerifyList[ \t]+\"(.+)\"[ \t]*$", REG_ICASE | REG_NEWLINE | REG_EXTENDED)
@@ -1571,6 +1580,7 @@ config_parse(const int argc, char **const argv)
regfree(&SSLAllowClientRenegotiation);
regfree(&DisableSSLv2);
regfree(&SSLHonorCipherOrder);
+ regfree(&SSLNoCompression);
regfree(&Ciphers);
regfree(&CAlist);
regfree(&VerifyList);
diff --git a/pound.8 b/pound.8
index 4c29c2c..4e129ec 100755
--- a/pound.8
+++ b/pound.8
@@ -519,6 +519,14 @@ renegotiation is supported. If the value is 2, insecure renegotiation is suppor
with unpatched clients. \fBThis can lead to a DoS and a Man in the Middle attack!\fR
The default value is 0.
.TP
+\fBSSLNoCompression\fR 0|1
+If this value is 1, the server will disable DEFLATE compression even if both server
+and client supports it. In case compression is enabled an attacker with access to
+encrypted network traffic can conduct a "CRIME" attack by making client issue requests
+with specific character sequences and observing whether they got compressed or not,
+indicating their presence in part of the request that is not under his control (e.g.
+cookie headers). Default value is 0.
+.TP
\fBCAlist\fR "CAcert_file"
Set the list of "trusted" CA's for this server. The CAcert_file is a file containing
a sequence of CA certificates (PEM format). The names of the defined CA certificates
--
1.7.1
--
To unsubscribe send an email with subject unsubscribe to [email protected]
Please contact [email protected] for questions.