XBOX Security -= Security Advisory =-
Advisory: XBOX Dashboard local vulnerability
Release Date: 2003/07/04
Last Modified: 2003/07/04
Author: Stefan Esser [se nopiracy.de]
Application: Microsoft XBOX Dashboard (up to today)
Severity: A vulnerability within the XBOX Dashboard allows to totally compromise the security features of the XBOX.
Vendor Status: Vendor is not willing to talk about XBOX vulnerabilities.
The XBOX Dashboard is what appears when you turn the XBOX on without a disc in the DVD drive. It will let you adjust system settings, manage your save games, play and rip audio CDs and configure your XBOX Live account. It is the heart of the XBOX and its most vulnerable point, because it lacks several security restrictions which are enforced on games. This includes the lack of the reboot-on-eject-button “feature”, which is obligatory for all games.
The existance of an exploitable vulnerability within the dashboard could totally compromises the XBOX security system. It will make the box independent from Microsoft signed code and therefore this information is released to the public now on the 4th of July 2003, the day of the XBOX Independence.
Microsoft knows that a vulnerability within the XBOX dashboard could have serious impact. This is underlined by the fact that the dashboard checks most of its files against an internal stored SHA1 hash value before it uses them.
For an unknown reason this check is not performed on the audio (.wav) and font (.xtf) files. Unfourtunately for Microsoft there exists an exploitable integer underflow vulnerabilitiy within the font file loader which can be exploited with a malformed font file. When the XTF header is processed the dashboards reads a 4 byte blocksize field from the font file. This is expected to represent the size of some datablock including the 4 bytes of the size field itself. The blocksize is then allocated and the sizefield is copied into the beginning of the buffer. This is already a possible overflow bug when the field contains the values 0…3.
Due to memory alignment this is not exploitable. But then the blocksize is decreased by 4 because the dashboard wants to read the rest of the block into memory. Obviously values of 0…3 will underflow when decreased by 4 and this results in the dashboard wanting to read up to ~4 gigabytes of data from the font file in a f.e. 3 bytes buffer.
Because the XBOX malloc()/free() implementation is also storing control information inbound and is similiar to the Windows 2000/XP heap allocators this bug is exploitable and allows execution of arbitrary code. The attached proof of concept code shows that exploiting is possible with offsets that are equal on all dashboards and XBOX versions known.
BTW: the dashboard loads its font files directly after the XBOX start animation. This means the exploit does not need any user interaction and when the code is executed only part of the dashboard background is on screen.
Proof of Concept:
Attached you will find a proof of concept exploit which will start linux. To install it you have to rename the 2 XBOX font files within the font directory of the dashboard partition and then copy ernie.xtf and bert.xtf into this directory. (If you have an XBOX with an older dashboard the font directory does not exist and you must do the renaming and file adding work in the main directory). Once the new fonts are in place you copy the default.xbe (which is a copy of xbeboot) into the main directory and add your favourite linux to it.
Q1: How do I get the files onto the harddisk?
A1: There are several ways. You could f.e. install the files with the\ Mechassault or 007 hacks. This requires one of the games and the files on a memorycard. The other way is to open the box and do the harddisk swap trick which is described all over the net.
Q2: This vulnerability is in the dashboard, isn’t it? So Microsoft can simply update the dashboard with XBOX Live or with the help of new games.
A2: Yes Microsoft could try to upgrade the dashboard and fix the vulnerability with such an update, but keep in mind that this vulnerability is like a “local root” hole. You can do nearly everything with it and this includes redirecting reads and writes to the xboxdash.xbe file. Additionally people who do not play games on their box will not be reachable with such updates. And groups who pirate games can always disable the update feature.
Q3: Well but MS can make the kernel block the vulnerable dashboard.
A3: Indeed they can. But until boxes with new kernels reach the market we will have the end of this year (You can still get 1.0 boxes in shops over here) and they can only fix the bugs they know about.
Q4: Is it possible to play “backed-up” games with this?
A4: Yes it is possible to play pirated games by using this vulnerability but my proof of concept code will not allow this. You have to change the exploit to patch the kernel in memory. This is not very hard and I am not going to help you with this.
Q5: Can I go “Live” with this hack?
A5: You have full control over the box with this vulnerability. You can modify the exploit to allow XBOX Live playing but this will only start a cat & mouse game with Microsoft.
Q6: I have read that I can solder my mainboard with this hack…
A6: This exploit has nothing to do with soldering, It will just run everything you want on unmodded (and even unopened) XBOXes. Infact when this hack is installed you do not need to solder anything to get your homebrew or whatever applications to run.