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:26:45
|
I have the fix. Do you have time for testing ? I can send you the tarball Thanks Breno On Tue, Mar 6, 2012 at 7:03 AM, Breno Silva <bre...@gm...> wrote: > 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 >> > > |