Re: [Mod-security-developers] [ModSecurity 2.6.3] Session collection broken
Brought to you by:
victorhora,
zimmerletw
|
From: Breno S. <bre...@gm...> - 2012-03-06 13:04:09
|
Hi Jeroen,
Looks like we have a bug in the code. I will work to fix it in the next
2.6.4 release.
Thanks
On Tue, Mar 6, 2012 at 4:20 AM, Jeroen De Ridder <
voe...@gm...> wrote:
> I'm currently encountering some trouble with the optional
> modsecurity_crs_16_session_hijacking.conf ruleset (v.2.2.4) in
> ModSecurity 2.6.3. An initial uncookied request sent to the server is
> accepted, but every subsequent request is blocked by rule 981059
> because of an IP hash mismatch:
>
> SecRule TX:IP_HASH "!@streq %{SESSION.IP_HASH}"
>
> "phase:1,id:'981059',t:none,block,setvar:tx.sticky_session_anomaly=+1,msg:'Warning
> - Sticky SessionID Data Changed - IP Address
>
> Mismatch.',setvar:'tx.msg=%{rule.msg}',setvar:tx.anomaly_score=+%{tx.notice_anomaly_score},setvar:tx.%{
> rule.id}-WEB_ATTACK/SESSION_HIJACK-%{matched_var_name}=%{tx.0}"
>
> (I'm running in traditional mode, so the "block" action equals "deny").
>
> I understand the logic of these rules, and I've poured over the debug
> logs to see what's going on. The logic itself seems fine; all the
> values being passed around are correct, but the problem seems to be
> that subsequent requests fail to load the session collection data that
> was saved in the initial request that created it. I've confirmed this
> by inserting an adding the following rule inbetween rules 981055 and
> 981056 to print the loaded session collection data:
>
> SecAction "phase:1,t:none,pass,log,logdata:'_DEBUG_ Initialized
> session using key %{tx.sessionid};
> session.sessionid=%{session.sessionid};
> session.valid=%{session.valid}; session.ip_hash=%{session.ip_hash};
> session.ua_hash=%{session.ua_hash};'"
>
> The tx.sessionid value is correct (ie. the same as was used to the
> setsid call in the initial request), but the session collection seem
> to be completely empty. This naturally causes tx.ip_hash to not match
> session.ip_hash, resulting in the block. Note that this debug rule is
> not reached unless the client sent a session cookie and the session
> collection was hence initialized by setsid:%{matched_var} in rule
> 981054, whose value I've also confirmed to be correct.
>
> To isolate and demonstrate the problem, I've created a very minimal
> testcase and ran them on both ModSecurity 2.5.11 and 2.6.3. No other
> rulesets were loaded, not even crs_10_config. The machine running
> 2.5.11 is a somewhat older box running Apache 2.0.63 on RHEL4, the
> machine running 2.6.3 is running Apache 2.2.21 on RHEL5.
>
> SecRuleEngine On
> SecDebugLogLevel 9
> SecDataDir config/modsecurity/data
> SecRequestBodyAccess On
> SecAction "phase:1,pass,log,setsid:'abcd1234',logdata:'Reading session
> variable session.foo=%{session.foo}'"
> SecAction "phase:1,pass,log,setsid:'abcd1234',logdata:'Incrementing
> session variable session.foo=%{session.foo}',setvar:session.foo=+1"
>
> After cleaning out the ModSec data dirs and rebooting the Apache
> servers, here's the apache error log output for three subsequent
> requests to the same page from ModSecurity 2.5.11:
>
> [Tue Mar 06 11:07:49 2012] [notice] caught SIGTERM, shutting down
> [Tue Mar 06 11:07:50 2012] [notice] ModSecurity for Apache/2.5.11
> (http://www.modsecurity.org/) configured.
> [Tue Mar 06 11:07:51 2012] [notice] Apache/2.0.63 (Unix)
> mod_ssl/2.0.63 OpenSSL/0.9.7m configured -- resuming normal operations
> [Tue Mar 06 11:08:03 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "31"] [data "Reading session variable session.foo="] [hostname
> "10.151.49.29"] [uri "/"] [unique_id "N-YWGX8AAAEAACcGTWUAAAAA"]
> [Tue Mar 06 11:08:03 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "32"] [data "Incrementing session variable session.foo=1"]
> [hostname "10.151.49.29"] [uri "/"] [unique_id
> "N-YWGX8AAAEAACcGTWUAAAAA"]
> [Tue Mar 06 11:08:08 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "31"] [data "Reading session variable session.foo=1"] [hostname
> "10.151.49.29"] [uri "/"] [unique_id "OEU9jX8AAAEAACcGTWYAAAAA"]
> [Tue Mar 06 11:08:08 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "32"] [data "Incrementing session variable session.foo=2"]
> [hostname "10.151.49.29"] [uri "/"] [unique_id
> "OEU9jX8AAAEAACcGTWYAAAAA"]
> [Tue Mar 06 11:08:11 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "31"] [data "Reading session variable session.foo=2"] [hostname
> "10.151.49.29"] [uri "/"] [unique_id "OHLo4X8AAAEAACcGTWcAAAAA"]
> [Tue Mar 06 11:08:11 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/lk7/modsec/active/config/httpd_front_poc_apache_web.conf"]
> [line "32"] [data "Incrementing session variable session.foo=3"]
> [hostname "10.151.49.29"] [uri "/"] [unique_id
> "OHLo4X8AAAEAACcGTWcAAAAA"]
>
> And the same for ModSecurity 2.6.3:
>
> [Tue Mar 06 11:04:25 2012] [notice] caught SIGTERM, shutting down
> [Tue Mar 06 11:04:27 2012] [notice] ModSecurity for Apache/2.6.3
> (http://www.modsecurity.org/) configured.
> [Tue Mar 06 11:04:27 2012] [notice] ModSecurity: APR compiled
> version="1.4.5"; loaded version="1.4.5"
> [Tue Mar 06 11:04:27 2012] [notice] ModSecurity: PCRE compiled
> version="5.0"; loaded version="5.0 13-Sep-2004"
> [Tue Mar 06 11:04:27 2012] [notice] ModSecurity: LUA compiled version="Lua
> 5.1"
> [Tue Mar 06 11:04:27 2012] [notice] ModSecurity: LIBXML compiled
> version="2.6.26"
> [Tue Mar 06 11:04:28 2012] [notice] Apache/2.2.21 (Unix) configured --
> resuming normal operations
> [Tue Mar 06 11:04:38 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "24"] [data "Reading session variable session.foo="] [hostname
> "10.151.49.35"] [uri "/"] [unique_id "T1XhNn8AAAEAABcJAu0AAAAA"]
> [Tue Mar 06 11:04:38 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "25"] [data "Incrementing session variable session.foo=1"]
> [hostname "10.151.49.35"] [uri "/"] [unique_id
> "T1XhNn8AAAEAABcJAu0AAAAA"]
> [Tue Mar 06 11:04:38 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "24"] [data "Reading session variable session.foo="] [hostname
> "10.151.49.35"] [uri "/"] [unique_id "T1XhNn8AAAEAABcJAu4AAAAA"]
> [Tue Mar 06 11:04:38 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "25"] [data "Incrementing session variable session.foo=1"]
> [hostname "10.151.49.35"] [uri "/"] [unique_id
> "T1XhNn8AAAEAABcJAu4AAAAA"]
> [Tue Mar 06 11:04:39 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "24"] [data "Reading session variable session.foo="] [hostname
> "10.151.49.35"] [uri "/"] [unique_id "T1XhN38AAAEAABcJAu8AAAAA"]
> [Tue Mar 06 11:04:39 2012] [error] [client 10.245.26.55] ModSecurity:
> Warning. Unconditional match in SecAction. [file
> "/code/dev/modsec/2.3/config/modsecurity/modsecurity_common.conf"]
> [line "25"] [data "Incrementing session variable session.foo=1"]
> [hostname "10.151.49.35"] [uri "/"] [unique_id
> "T1XhN38AAAEAABcJAu8AAAAA"]
>
> I've made sure the modsecurity data dir has full 0777 access to see if
> perhaps that's the problem, but no dice. I can see it create the
> default_SESSION.(dir|pag) files, and I can spot some of the saved
> values in there, but they just don't seem to get reloaded on the next
> request. I've actually tried this both on a 2.6.3 instance with PCRE
> linked statically against Apache's bundled distro, as well as on an
> instance linked against a system libpcre, but it occurs on both.
>
> Can anyone confirm and/or advise? I'll be happy to provide debug logs,
> but in the interest of not cluttering up this report I'll leave them
> for another reply (if needed).
>
>
> ------------------------------------------------------------------------------
> Keep Your Developer Skills Current with LearnDevNow!
> The most comprehensive online learning library for Microsoft developers
> is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
> Metro Style Apps, more. Free future releases when you subscribe now!
> http://p.sf.net/sfu/learndevnow-d2d
> _______________________________________________
> mod-security-developers mailing list
> mod...@li...
> https://lists.sourceforge.net/lists/listinfo/mod-security-developers
> ModSecurity Services from Trustwave's SpiderLabs:
> https://www.trustwave.com/spiderLabs.php
>
|