Failed assertion in the Unreal engine

2009.08.24
Risk: Low
Local: No
Remote: Yes
CWE: CWE-399


CVSS Base Score: 4/10
Impact Subscore: 2.9/10
Exploitability Subscore: 8/10
Exploit range: Remote
Attack complexity: Low
Authentication: Single time
Confidentiality impact: None
Integrity impact: None
Availability impact: Partial

####################################################################### Luigi Auriemma Application: Unreal engine http://www.unrealtechnology.com Versions: the games which have been tested and resulted vulnerable are Unreal Tournament 3 1.3, Unreal Tournament 2003 and 2004, Dead Man's Hand, Pariah, WarPath, Postal2, Shadow Ops and possibly others. instead those which "seem" to be not vulnerable (using their default configuration) are: Fuel of War, America's Army, Men of Valor, Star Wars Republic Commando, SWAT4 and some older gamess based on the Unreal engine 1 (like UT'99) Platforms: Windows, Linux, Mac Bug: server termination caused by failed assertion Exploitation: remote, versus server Date: 16 Sep 2008 Thanx to: Luigi "Gioggiolo" Author: Luigi Auriemma e-mail: aluigi (at) autistici (dot) org [email concealed] web: aluigi.org ####################################################################### 1) Introduction 2) Bug 3) The Code 4) Fix ########## =============== 1) Introduction =============== The Unreal engine is the game engine developed by Epic Games (http://www.epicgames.com) and used in many famous commercial games of which the main example is just the lucky Unreal Tournament series. ########## ====== 2) Bug ====== Exists an assert() in the Unreal engine which shuts down the engine if the "Closing" flag in UnChan.cpp is set, probably referred to the closed state of output channel: "Assertion failed: !Closing [File:.\UnChan.cpp] [Line: XXX]" The only way I have found for exploiting this vulnerability is through the request of downloading two or more files from the server, which means that the attacker must join the target server because doesn't seem possible to use the File channel from outside. I'm not aware of other easiest or alternative ways for exploiting this specific vulnerability. ########## =========== 3) The Code =========== http://aluigi.org/fakep/unrealfp.zip unrealfp -d all SERVER PORT ########### ====== 4) Fix ====== No fix Exist at least 2 easy work-arounds for this vulnerability: - setting "AllowDownloads=false" in the INI file of the game. naturally this method can't solve the problem if exist other ways (of which I'm not aware at the moment) to exploit this vulnerability - disabling the "!Closing" assertion (tests performed on the Windows and Linux servers of some games), the list of the bytes to modify with a hex editor is available here: http://aluigi.org/patches/unrealoadfix.txt - there is a "strange" way that has avoided the termination of the server (and I report it here only for thoroughness) through the enabling of the map voting (like [xVoting.xVotingHandler] and bMapVote=True in the INI of UT2003 and UT2004) ########## --- Luigi Auriemma http://aluigi.org

References:

http://www.securityfocus.com/bid/31205
http://www.securityfocus.com/archive/1/archive/1/496399/100/0/threaded
http://osvdb.org/48293
http://archives.neohapsis.com/archives/fulldisclosure/2008-09/0321.html


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top