Tuesday, June 28, 2016

How to Compromise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Enterprise Endpoint

Posted by Tavis Ormandy.


Symantec is a popular vendor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enterprise security market, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir flagship product is  Symantec Endpoint Protection. They sell various products using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same core engine in several markets, including a consumer version under cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Norton brand.

Today we’re publishing details of multiple critical vulnerabilities that we discovered, including many wormable remote code execution flaws.

These vulnerabilities are as bad as it gets. They don’t require any user interaction, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y affect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default configuration, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 software runs at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 highest privilege levels possible. In certain cases on Windows, vulnerable code is even loaded into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel, resulting in remote kernel memory corruption.


As Symantec use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same core engine across cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir entire product line, all Symantec and Norton branded antivirus products are affected by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se vulnerabilities, including:


  • Norton Security, Norton 360, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r legacy Norton products (All Platforms)
  • Symantec Endpoint Protection (All Versions, All Platforms)
  • Symantec Email Security (All Platforms)
  • Symantec Protection Engine (All Platforms)
  • Symantec Protection for SharePoint Servers
  • And so on.


Some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se products cannot be automatically updated, and administrators must take immediate action to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir networks. Symantec has published advisories for customers, available here.


Let’s take a look at a sample of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerabilities we found.


Unpackers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Kernel: Maybe not cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 best idea?


Many developers will be familiar with executable packers like UPX, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y’re tools intended to reduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 size of executables by compressing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. This causes a problem for antivirus products because it changes how executables look.


Antivirus vendors solve this problem with two solutions. First, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y write dedicated unpackers to reverse cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 operation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most common packers, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n use emulation to handle less common and custom packers.


The problem with both of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se solutions is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y’re hugely complicated and prone to vulnerabilities; it’s extremely challenging to make code like this safe. We recommend sandboxing and a Security Development Lifecycle, but vendors will often cut corners here. Because of this, unpackers and emulators continue to be a huge source of vulnerabilities, we’ve written about examples in Comodo, ESET, Kaspersky, Fireeye and many more.


Let’s look at an example from Symantec and Norton Antivirus. This vulnerability has an unusual characteristic: Symantec runs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir unpackers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Kernel!

CVE-2016-2208: Vulnerability Details



ASPack is commercial packing software that’s been around for a long time, and Symantec has dedicated unpackers for a few older versions. Reviewing Symantec’s unpacker, we noticed a trivial buffer overflow when a section’s SizeOfRawData field is greater than SizeOfImage. When this happens, Symantec will allocate SizeOfImage bytes and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n memcpy all available data into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 buffer.


Effectively, we can get Symantec to execute a sequence like this:

   char *buf = malloc(SizeOfImage);

   memcpy(&buf[DataSection->VirtualAddress],
          DataSection->PointerToRawData,
          SectionSizeOnDisk);


All of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se values are attacker controlled, resulting in a very clean heap or pool overflow. To build a test case, I researched how to identify ASPack on OpenRCE’s packer database:


.aspack:00412001                 public start
.aspack:00412001 start           proc near
.aspack:00412001                 pusha
.aspack:00412002                 call    skipBytes
.aspack:00412002
...
.aspack:00412014                 pop     ebp
.aspack:00412015                 mov     ebx, 0FFFFFFEDh
.aspack:0041201A                 add     ebx, ebp
.aspack:0041201C                 sub     ebx, 12000h
.aspack:00412022                 cmp     dword ptr [ebp+422h], 0
.aspack:00412029                 mov     [ebp+422h], ebx
.aspack:0041202F                 jnz     END_OF_PACKER
...
Abbreviated sample ASPack sample code from http://www.openrce.org/reference_library/packer_database_view/17


This was enough for me to make a testcase in NASM that reliably triggered Symantec’s ASPack unpacker. Once I verified this work with a debugger, building a PE header that mismatched SizeOfImage and SizeOfRawData would reliably trigger cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability.


VirtualAddress      equ 0x10000-0x08    ; VirtualAddress of section data, offset where copy starts.
SizeOfImage         equ 0x12000-0x0C    ; Size you want to allocate.
SectionPadding      equ 0x2000          ; SizeOfImage-VirtualAddress

   ; Section Headers
   db ".data", 0, 0, 0                 ; Name
   dd 0                                ; VirtualSize
   dd VirtualAddress                   ; VirtualAddress
   dd 0xffffffff                       ; SizeOfRawData
   dd __data                           ; PointerToRawData
   dd 0                                ; PointerToRelocations
   dd 0                                ; PointerToLinenumbers
   dw 0                                ; NumberOfRelocations
   dw 0                                ; NumberOfLinenumbers
   dd 0                                ; Characteristics
Configuring PE section headers to trigger ASPack overflow.


The full source code is available in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue tracker.


On Linux, Mac and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r UNIX platforms, this results in a clean heap overflow as root in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Symantec or Norton process. On Windows, this results in kernel memory corruption.


Because Symantec uses a filter driver to intercept all system I/O, just emailing a file to a victim or sending cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m a link to an exploit is enough to trigger it - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 victim does not need to open cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file or interact with it in anyway. Because no interaction is necessary to exploit it, this is a wormable vulnerability with potentially devastating consequences to Norton and Symantec customers.


An attacker could easily compromise an entire enterprise fleet using a vulnerability like this. Network administrators should keep scenarios like this in mind when deciding to deploy Antivirus, it’s a significant tradeoff in terms of increasing attack surface.


PowerPoint Stream Stack Buffer Overflow



Parsing PowerPoint and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Microsoft Office files is no simple feat. The data itself is stored in a series of contiguous records documented in [MS-PPT], but just extracting those records requires parsing a series of streams stored in a filesystem-like container called cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Compound File Binary format documented in [MS-CFB].


Symantec has implemented an I/O abstraction layer that exposes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 PowerPoint streams stored in a Compound File via a stdio-like interface. This framework is part of Symantec’s “decomposer” library, and is used for things like extracting document metadata and embedded macros.


As with stdio, I/O to and from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying storage is buffered for performance, so reads can sometimes be satisfied directly from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cache. I noticed that It is possible to force cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cache into a misaligned state with combinations of odd-sized records. When this happens, a bug can cause reads to be incorrectly rounded-up, resulting in a buffer overflow.


By forcing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cache into a misaligned state, we can force a request like this:




When this happens, a bug causes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 size to be rounded up like this:






This bug can result in a buffer overflow. I found an invocation that looked exploitable, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re’s a significant problem: This routine is only called when using what Symantec calls “Bloodhound Heuristics”.


BloodHound Heuristics



Symantec exposes a setting to administrators called “Bloodhound Heuristics”, this is called “Advanced Heuristic Protection” on Norton Antivirus, but is effectively cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same thing.


Symantec has a whitepaper on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir heuristics here. There are three options available to administrators: Low, Automatic and Aggressive. The default setting is Automatic, which increases cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 number of tests run dynamically.


I wrote a simple test case that triggers cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability, and it crashes reliably with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “Aggressive” mode, but didn’t work in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default configuration. Requiring a non-default setting would reduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 severity of this vulnerability significantly, so I looked into what would trigger “Aggressive” heuristics automatically.


I downloaded an archive of powerpoint files from VirusTotal Intelligence to see if any of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m triggered cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 aggressive heuristics by putting a few breakpoints on tests I was interested in. I got lucky, a few of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files did cause aggressive heuristics mode.


Examining cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 files and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir structure, one stream stood out as unusual, containing an ExOleObjStgCompressedAtom. Racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than create my own, I simply extracted cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 compressed object and %incbin’d it into a stream in my testcase.


settings.png

Exploitation



All PROT_EXEC mappings on Norton Antivirus use ASLR on Windows, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decomposer library is part of a 32-bit process. As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 scan service automatically respawns, brute force should be entirely possible.


However, with careful manipulation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cache, we can partially overwrite cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 return address, meaning we don’t have to leak any module address to reliably predict cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 location of code relative to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 return address.
The first stage is to see what we have available, to test this let’s search for an int3 instruction within range.


0:069> s (@eip & 0xffff0000) Lffff cc 1
6cbc9ba3  cc 01 00 00 80 bb 68 46-00 00 00 0f 84 82 00 00  ......hF........


That will do, let’s see if it works….


crashss.png


Perfect! It works every time. The next stage would be to find a sequence of gadgets that extends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 range available, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n turn it into a standard ROP exploitation problem.


The source code for this exploit is available on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue tracker.


It’s a 100% reliable remote exploit, effective against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 default configuration in Norton Antivirus and Symantec Endpoint, exploitable just from email or cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 web. As cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug is in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 core scan engine’s decomposer library, all Symantec and Norton branded products are affected. This includes but is not limited to:


  • Norton Antivirus (Mac, Windows)
  • Symantec Endpoint (Mac, Windows, Linux, UNIX)
  • Symantec Scan Engine (All Platforms)
  • Symantec Cloud/NAS Protection Engine (All Platforms)
  • Symantec Email Security (All Platforms)
  • Symantec Protection for SharePoint/Exchange/Notes/etc (All Platforms)
  • All ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r  Symantec/Norton Carrier, Enterprise, SMB, Home, etc antivirus products.
  • And so on..


On Windows, this results in remote code execution as SYSTEM, and root on all ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r platforms.


Vulnerability Management


As with all software developers, antivirus vendors have to do vulnerability management. This means monitoring for new releases of third party software used, watching published vulnerability announcements, and distributing updates.


Nobody enjoys doing this, but it’s an integral part of secure software development.


Symantec dropped cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ball here. A quick look at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 decomposer library shipped by Symantec showed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were using code derived from open source libraries like libmspack and unrarsrc, but hadn’t updated cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m in at least 7 years.


Dozens of public vulnerabilities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se libraries affected Symantec, some with public exploits. We sent Symantec some examples, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y verified cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y had fallen behind on releases.


Conclusion



As well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerabilities we described in detail here, we also found a collection of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r stack buffer overflows, memory corruption and more.

Thanks to Symantec Security Team for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir help resolving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se bugs quickly.

Monday, June 27, 2016

A year of Windows kernel font fuzzing #1: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results

Posted by Mateusz Jurczyk of Google Project Zero

This post series is about how we used at-scale fuzzing to discover and report a total of 16 vulnerabilities in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handling of TrueType and OpenType fonts in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last year. In part #1 here, we present a general overview of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 font security area, followed by a high-level explanation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fuzzing effort we have undertaken, including cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 overall results and case studies of two bug collisions. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 upcoming part #2, we will share cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specific technical details of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 project, and how we tried to optimize each part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 maximum extent, and go beyond cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current state of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 art in Windows kernel font fuzzing. Read on!

Background

To most readers of this blog, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that fonts are a very significant attack vector does not have to be reiterated. There are a number of different file formats in active use. These formats are extremely complex, both structurally and semantically. As a result, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y are correspondingly difficult to implement correctly, which is furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r amplified by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that a majority of currently used font rasterizers date back to (early) 90's, and were written in native languages such as C or C++. Controlled font files are also deliverable through a variety of remote channels – documents, websites, spool files etc. Last but not least, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two powerful virtual machines executing programs describing glyph outlines in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueType and OpenType formats have proven vastly useful for creating reliable exploitation chains, thanks to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ability to perform arbitrary arithmetic, bitwise and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r operations on data in memory. For all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se reasons, fonts have been an attractive source of memory corruption bugs.

Font processing vulnerabilities were put to use "in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild" on many occasions, ranging from a Duqu malware 0-day TTF exploit for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel (and a number of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r such 0-days patched in emergency fixes), comex' iOS jailbreak via a FreeType Type 1 vulnerability, to successful pwn2own competition entries (Joshua Drake - Java 7 SE - 2013, Keen Team - Windows kernel - 2015). Microsoft alone has released several dozen security bulletins for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir font engine during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last decade, and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r vendors and projects have not been much better in this regard. Security conferences have been filled with talks discussing font fuzzers, or details of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specific bugs cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 researchers had found. From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 perspective of user security, this is a really disadvantageous situation. If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is a family of software so fragile and yet widely deployed and accessible, that most security professionals can just hop in and easily find a convenient 0-day bug and use it in targeted attacks or mass campaigns, something is clearly wrong.

Addressing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 font software security posture problem

As pictured, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 situation felt like it required addressing on a more general level, instead of adding one or two more vulnerabilities to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 global font track record and somehow feeling safer. Let's face it – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 currently used implementations are not going away any time soon, as performance is still a big factor in font rasterization, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code bases have reached a high level of maturity over cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 years. One generic approach is to limit cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 privileges of font processing code in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir respective environments, such as enforcing sandboxing of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeType library, or moving cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 font engine out of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel in Windows (which Microsoft has done starting with Windows 10). However, that is mostly beyond our reach.

What is within our reach, though, is significantly raising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar for finding security bugs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 relevant code, thus increasing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cost of such operations and eliminating some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actors from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 equation entirely. Ever since early 2012, we have been using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 internal fuzzing infrastructure and available resources to fuzz-test cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 FreeType project at scale. Until this day, this has resulted in over 50 bug reports, many of which were likely exploitable memory corruption flaws (see lists on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Savannah and Project Zero bug trackers). Some manual code auditing was also involved in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 discovery of a few of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issues. We hope that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effort has cleared out most or all easily fuzzable, low-hanging fruit.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context of vulnerability hunting, however, FreeType is a relatively easy target – its open-source nature enables very convenient source code manual auditing with full understanding of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 underlying logic, makes it possible to employ static analysis algorithms, and allows us to compile in any kind of instrumentation into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 final binary, with low runtime overhead (as compared to DBI). For example, we have extensively used cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 AddressSanitizer, MemorySanitizer and SanitizerCoverage instrumentations, which drastically improved cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 error detection ratio and provided us with code coverage information, which could be used for coverage-driven fuzzing.

Conversely, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel and its font implementation can be considered a harder than average target. The source code is not available, and debugging symbols are only public for parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 engine (bitmap and TTF handling in win32k.sys, but not Type 1 and OTF handling in ATMFD.DLL). This already makes any manual work more demanding, as it must involve reverse engineering, which may prove especially difficult for parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code operating on font data in an indirect manner (as opposed to code which maps 1:1 to parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specification, such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 glyph outline virtual machine). Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code executes in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel, in one module shared with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 graphical subsystem, which makes any kind of interaction (e.g. instrumentation) non-trivial, to say cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 least. There are of course mechanisms to enhance bug discovery (such as Special Pools), but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also obstacles standing in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 way, like generic exception handling potentially masking some error indicators.

In early 2015, we started off by manually taking apart cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Type 1 / CFF virtual machine in ATMFD, which turned out to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 perfect auditing target. Fully self-contained, sufficiently complex but reasonably limited in size, full of legacy code and seemingly without a proper review in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past – a mixture which cannot be underestimated. The audit resulted in 8 vulnerabilities reported to Microsoft in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel, some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m extremely critical. For a detailed write up on that research and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most interesting BLEND vulnerability, check out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "One font vulnerability to rule cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all" blog post series, starting with part #1.

The CharString implementation could indeed be efficiently audited as a whole, but cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same strategy couldn't be applied to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entire win32k.sys and ATMFD.DLL font-related code base. The volume of code and different program states makes it hardly possible to comprehend cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all, not to mention keeping cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 big picture in mind and thinking of all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 potential misbehaviors and corner cases. The ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r option was of course fuzzing – a method which doesn't provide as much confidence in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results and code / program state coverage, but scales really well, only needs time for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initial set up, and has proven highly effective in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past. In fact, our guesstimate – based on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public track record – is that historically, more than 90% font bugs (similarly to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 entirety of security issues) have been found with fuzzing. This has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 additional advantage that reporting fuzzed-out bugs is in line with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 goal of raising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar for ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r bughunters, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use similar techniques, and wouldn't be able to find cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cleared out low hanging fruit anymore.

With this in mind, we started a Windows kernel font fuzzing effort in May 2015, in an attempt to take what was previously known on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 subject, and push each part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 process a bit forward, optimizing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m or trying to achieve maximum effectiveness. After roughly a year's time and many bulletins released since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel is now fuzz-clean against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 techniques we used, and as we believe that both cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 methods may be interesting for a wider audience, this post series is to wrap up and summarize cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 initiative.

Results

Without furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r ado, below is a list of all vulnerabilities found by fuzzing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 last year:

Tracker ID
Type
Format (driver)
SFNT table(s)
Reported
Fixed
Pool buffer overflow
TTF (win32k.sys)
glyf
21 May 2015
11 August 2015
Pool buffer overflow
OTF (atmfd.dll)
GPOS
21 May 2015
20 July 2015
Pool buffer overflow
TTF (win32k.sys)
hmtx, maxp
21 May 2015
11 August 2015
Pool out-of-bound reads
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Use-after-free
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Use-after-free
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Use of uninitialized memory
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Pool out-of-bound reads
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Pool out-of-bound reads
OTF (atmfd.dll)
CFF
21 May 2015
11 August 2015
Pool buffer overflow
TTF (win32k.sys)
glyf
21 May 2015
11 August 2015
Pool buffer overflow
TTF (win32k.sys)
fpgm, hmtx, maxp
21 May 2015
11 August 2015
Pool buffer overflow
TTF (win32k.sys)
OS/2
18 August 2015
10 November 2015
Pool buffer overflow
TTF (win32k.sys)
glyf
18 August 2015
10 November 2015
Stack buffer overflow
OTF (atmfd.dll)
CFF
22 December 2015
8 March 2016
Pool buffer overflow
OTF (atmfd.dll)
CFF
22 December 2015
8 March 2016
Pool buffer overflow
TTF (win32k.sys)
EBLC, EBSC
22 December 2015
(25 January 2016)
12 April 2016

The linked bug entries include brief descriptions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crashes, example crash logs from Windows 7 x86 with Special Pools enabled, and obligatory proof of concept files. In order to reproduce some of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crashes, it might also be necessary to use a dedicated font loading program, which was provided privately to Microsoft (but is also discussed in detail in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next post).

As shown in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 table, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crashes were reported in three iterations: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first one obviously contained cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bulk of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issues, as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fuzzer was hitting a lot of different states and code paths right from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 start. The second and third iterations were run for a longer time, in order to shake out any crashes which might have been masked by ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, more frequently hitting bugchecks. The time periods between each run (3-4 months) are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 times Microsoft took to release patches for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reported bugs, and are associated with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Project Zero 90-day disclosure deadline (which Microsoft met in all cases). One case (#684) had an updated report time, as we had to figure out with Microsoft cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system settings necessary to reproduce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system crash.

The flaws represented a variety of programming errors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 handling of both TTF and OTF files, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code responsible for processing varied SFNT tables. The vast majority of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issues could be used for local privilege escalation (sandbox escape etc.) and even remote code execution (for applications which pass user-controlled files directly to GDI), which is consistent with Microsoft's "Critical" assessment of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se bugs. Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fuzzing was run on Windows 7, nearly all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 reported bugs were still present in newer versions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system. It's also worth noting that while cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 elevation of privileges scenario is mitigated in Windows 10 by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 architectural shift to performing font rasterization in a user-mode process with restricted privileges, an RCE in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 context of that process is still a viable option (although much more limited than directly compromising cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ring-0 security context).

Collisions

There is no better validation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 value of any particular defensive bug hunting effort, than observing your reported bugs colliding with weaponized exploits used in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild (bonus points for 0-days utilized to harm users). While cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was an extensive track record of such bugs and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir usage in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 past, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 question of whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r any new discoveries would collide with exploits still circulating in 2015 would remain to be answered.

We didn't have to wait long. As it turned out, exactly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two first bugs that we filed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 tracker (issues #368 and #369) very quickly proved to be cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TTF vulnerability used by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Keen Team for privilege escalation during pwn2own 2015, and an OTF vulnerability found in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Hacking Team data leak in July 2015 (with a fully weaponized exploit), subsequently fixed by Microsoft in an emergency bulletin.

Interestingly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two colliding bugs were in fact cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 most trivial ones to find. Our fuzzer was constantly hitting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 corresponding crashes during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first iteration, and upon some brief analysis we determined that both conditions could indeed be triggered by performing trivial changes (single bit flips, single byte swaps) in many legitimate fonts. This appears to align well with our quest to raise cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bar by clearing out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 low hanging fruit, as it confirms that exactly such bugs are typically discovered and exploited by ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers.

The HackingTeam 0-day bug collision

After reporting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first batch of crashes to Microsoft in May 2015 (7 OpenType and 4 TrueType bugs), we patiently waited for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vendor to release corresponding patches. Very soon, we were informed that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y managed to reproduce all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problems, and scheduled cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fixes for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 August Patch Tuesday. However on July 20, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle of my vacation, I noticed that an out-of-band MS15-078 security bulletin was released that day:


Even more interestingly, I was one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 three people credited in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Acknowledgements section:


As it quickly turned out, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a collision of one of our reported crashes (issue #369) with a weaponized exploit discovered by two independent researchers in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Hacking Team leak. As a quick reminder, on July 5 2015, a link to a .torrent file hosting gigabytes of private Hacking Team company data was announced on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir (hacked) Twitter account. Most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security industry rushed to investigate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 suddenly available resources, finding not only cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 source code of surveillance products and controversial information on business operations, but also multiple exploits for 0-day vulnerabilities in software such as Flash Player (4 exploits), Windows kernel (2 exploits), Internet Explorer, SELinux, and so on. Until July 20, however, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was no public knowledge of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 existence of CVE-2015-2426, indicating that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug was reported to Microsoft privately.

The exploit took advantage of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerability to elevate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code's privileges in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 system on Windows platforms up to 8.1. A detailed analysis of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 root cause of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug and exploitation techniques can be found in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 360 Vulcan Team blog post (in Chinese), but in essence, it was caused by an invalid assumption made in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ATMFD.DLL OpenType driver, as illustrated in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pseudo-code below:

LPVOID lpBuffer = EngAllocMem(8 + GPOS.Class1Count * 0x20);
if (lpBuffer != NULL) {
 // Copy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first element.
 memcpy(lpBuffer + 8, ..., 0x20);

 // Copy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remaining Class1Count - 1 elements.
}

Here, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code assumed that Class1Count (a 16-bit field in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GPOS table) would always be non-zero, and copied cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first table item regardless of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual value. As a result, if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 field was equal to 0x0000, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 dynamically allocated buffer was overflown by 32 (0x20) bytes. With proper massaging of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kernel pools, it was possible to place a win32k.sys CHwndTargetProp object directly after cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 overwritten memory region, and have its vtable corrupted with a user-mode address. From cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, it was only a matter of leaking cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 base address of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 win32k.sys module, and constructing a ROP chain to disable SMEP and execute cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 privilege escalation shellcode.

The important point is that in order to trigger cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug through fuzzing, it was sufficient to set just two subsequent bytes at a specific location in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 file (corresponding to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Class1Count field) to 0. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words, it was trivial to discover with a dumb fuzzer, and it's surprising that such a bug could even survive until 2015, with so much work being supposedly put into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 security of font processing.

For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 curious, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original HT exploit was later ported to Windows 8.1 64-bit by Cedric Halbronn of NCC Group (see this article).

The pwn2own bug collision

Three weeks later, on August 11 2015, patches for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crashes from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first batch were released as planned. Again though, I was surprised with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Acknowledgements section, which also gave credit for reporting one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerabilities to ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r researchers:


This time, Keen Team! If you look up CVE-2015-2455, one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 results will be a ZDI-15-388 advisory, referring to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug as "(Pwn2Own)" in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 title, and mentioning that it was related to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "IUP" TrueType instruction. Yes, this is exactly issue #368. The vulnerability was indeed leveraged to achieve a sandbox escape and a full system compromise in one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "Adobe Reader" or "Adobe Flash Player" categories (it's not clear, as two distinct TTF bugs were used during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 competition), during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 pwn2own contest which took place on March 19-20, 2015. For cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 curious, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exploitation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Team Keen's TTF flaw was explained during cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "This Time Font hunt you down in 4 bytes" talk at REcon 2015. Notably, Microsoft took almost 5 months to fix cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bugs since cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were reported through ZDI, but still fit in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 90-day Project Zero disclosure deadline (as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 start date was May 21).

As for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 technical details, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug existed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 implementation of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "IUP" instruction, which translates to Interpolate Untouched Points through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outline in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TrueType instruction set specification:


If you look closely, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is an important note at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 end of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description: Applying IUP to zone 0 is an error. Yes, you guessed it, that was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug. The instruction handler at win32k!itrp_IUP was missing verification that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 current zone was not zone 0, and thus operated on zone 0 as if it was zone 1, ultimately leading to a pool-based buffer overflow with largely controlled contents and length. The three TrueType instructions below were sufficient to trigger a crash:

PUSH[ ]  /* 1 value pushed */
0
SZP2[ ]  /* SetZonePointer2 */
IUP[0]   /* InterpolateUntPts */

More importantly, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crash was also very easy to come by when mutating legitimate fonts – a single bit flip was enough to change cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SZP2 / SZPS instruction argument from 1 to 0. Accordingly, this was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 top 1 hitting crash in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first run of my dumb fuzzing. When I later added a TrueType program generator to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 mix, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 issue also manifested when loading every second test case, which forced us to account for this in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generator and avoid cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 specific construct until cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 bug was fixed.

On an unrelated note, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case is a great example of how just reading cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 official specification carefully may hand you a critical vulnerability with very little effort and no auditing or fuzzing involved whatsoever. :)

Closing thoughts

If nothing else, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 effort and its results are evidence that fuzzing, if done correctly, is still a very effective approach to vulnerability hunting, even with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365oretically "mature" and heavily tested code bases. Furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rmore, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 two bug collisions prove that Windows kernel font bugs are still alive and kicking, or at least were actively used in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wild in 2015. In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second post of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 series, we will discuss cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meaty parts of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 research: how we prepared cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 input corpus, mutated and generated interesting font samples, fuzzed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Windows kernel at scale, reproduced cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 crashes and minimized cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m.

In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 meanwhile, just last week (following last week's Microsoft Patch Tuesday) we opened up issue #785 in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Project Zero tracker, which discusses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 details of an ATMFD.DLL pool corruption vulnerability in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 "NamedEscape" attack surface, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same that Hacking Team's second Windows kernel 0-day (CVE-2015-2387) was located at. Happy reading!