Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at...

44
Windows Vista Heap Management Enhancements Adrian Marinescu Development Lead adrmarin at microsoft dot com

Transcript of Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at...

Page 1: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Windows Vista Heap ManagementEnhancements

Adrian MarinescuDevelopment Lead

adrmarin at microsoft dot com

Page 2: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 2

Agenda

• Windows NT Heap Management basicsand evolution

• Windows Vista heap – major milestone– Development principles and guidelines– Security features– Performance features

• Q & A

Page 3: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 3

Introduction

• Security – industry-wide concern• TwC driving multiple security

initiatives• The NT Heap

– Strategic point in defense– Improved to respond to industry trends in

usage

Page 4: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Part I – Basics

Page 5: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 5

Heap Evolution

TimeNT 4 NT 4 / SP4

Windows 2000XP / SP2Windows 2003

WindowsVista

Basics PerformanceOpt-in SMP ScalabilityHeap Mitigations

Enhanced securityPerformanceQuality tool

Industry

Workload Exploitation Parallelism

Page 6: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 6

NT Heap Overview

The NT Memory Manager

Segment Management(for blocks <512K1)

Large blocks management

Optional Front-EndHeap

(lookasides, LowFragmentation Heap)

Kernel

ntdll

Internal heap interfaces

Win32 heap interfaces (Heap*, Local*, Global*)kernel32

1 On 32 bit platforms

Windows applications

Page 7: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 7

16

Segment 3

Segment 2

16

The NT Heap Core Management

HEAP

8

1024

Free lists

> 1KNon-dedicated free list(1 – 512 KBytes)

Segment 1

Segment64

Segmentarray

> 512K

Virtual Blocks List

816

> 512K

Page 8: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 8

Heap Segments

Seg.H B1 B2 Uncommited space Bn … ByUncommited space

Reserved space

Page 9: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 9

Block Entry in prior Windows NT Versions

0:018> dc 04392f8004392f80 00040002 00000001 0442da60 00240e68

Size

Previous block size

tag

unused bytes

flags

segment

F-Link B-Link

Page 10: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 10

Role of Link Entry in Early Exploits

• Arbitrary pointer write

movmov eaxeax, DWORD PTR [, DWORD PTR [ecxecx]]movmov ecxecx, DWORD PTR [ecx+4], DWORD PTR [ecx+4]movmov DWORD PTR [ DWORD PTR [ecxecx], ], eaxeaxmovmov DWORD PTR [eax+4], DWORD PTR [eax+4], ecxecx

Fwd Link

Bk Link

Value to write

Location to write

Page 11: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 11

Lookaside Lists

• Non-blocking single-linked lists

0-8

9 -16

Lookaside lists

1016-1024

Header Link unused

Header Link unused

Page 12: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 12

SMP Unit 1

The Low Fragmentation Heap Architecture

0-8

9 -16

Allocation buckets

1025-1088

15873 - 16384

Allo

catio

n gr

anul

arity

SMP Unit N

SMP Unit 1Segments pool

Segments pool

Segments pool

Page 13: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 13

Low Fragmentation Heap Block Entry

Sub-Segment

Flags

Relative link

Size

LFH Block

Free s-list

Sub-Segment

…8 bytes

User data

Page 14: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 14

Early Heap Mitigations

• Safe List RemovalEntry->FwdLink->BkLink == Entry->BkLink->FwdLink == Entry

• 8-bit cookie tested on free• LFH block entry encoding

F (random number,Block address, heap)

Page 15: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 15

Change in Landscape

• New exploiting methods surfaced• Change in usage outlook

– Memory usage– Increase availability of SMP– Increase relevance of 64 bit computing

• Code quality – higher demand inindustry

Page 16: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 16

Windows Vista Heap ManagerKey Development Directions

• Performance and reliability• Security• Code quality

Page 17: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 17

Windows NT Heap Requirements

Page 18: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 18

Security

• Correctness – like:– Guarantees requested sizes– Lifetime of allocations– Clearing content when requested etc.

•• Defense line in heap based exploits:Defense line in heap based exploits:–– Attempts to mitigate the effect of an attackAttempts to mitigate the effect of an attack

–– Makes difficult hiding heap-based exploitsMakes difficult hiding heap-based exploits

Page 19: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 19

Performance

• Scale from small devices to largeservers

• Optimized for varied usage patterns• Follow the industry trend

– Memory usage– Increase in SMP availability– H/W architecture advances

Page 20: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 20

Compatibility

• Applications may rely on things like:– Realloc returning same pointer– Read/write after releasing a block– Double free– Overruns over unused structures etc.

• Heap changes may have unintendedeffects, such as:– Crashes, leaks or broken functionality in poorly

written applications– Severe performance regressions

Page 21: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Part II - Windows Vista Heap

Page 22: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 22

Windows Vista Heap Security Features

•Block metadata randomization•Integrity check on block entry•Algorithm variation in response tousage pattern

•Random rebasing•Function pointer randomization•Abrupt application termination onerror

Page 23: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 23

Block Metadata Randomization

•A part of the header is XORd with arandom value

•Low performance impact•Should make guessing the rightvalue impractical

•Flexible and contained algorithmand implementation

•Agile in updates

Page 24: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 24

Entry Integrity Check

•Previous 8-bit cookie has beenrepurposed to validate a larger partof the header

•Value may be randomized alongwith the other fields

•Validated during internal operationstoo

Page 25: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Demo – Heap Header Layout

Page 26: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 26

• Automatic tuning– Shift to LFH allocations at arbitrary

points on runtime– Triggers on various patterns– Involves also de-commit / commit

policies

Runtime Algorithm Variation

Page 27: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 27

More Heap Randomizations

•Heap base randomization – things toconsider:–Fragmentation of the application addressspace affecting large server applications

–Possible performance issues if higherrandomization is used

•Heap function pointer randomization

–Takes away a known place to facilitatethe code execution along with rebasing

Page 28: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Demo

Page 29: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 29

Abrupt Termination on Error

•Any data inconsistency or invalid heapfunction usage detected may trigger it

•The scope is process-wide (any heap inthe process has the same behavior)

•The process is terminated via WindowsError Reporting

•Detailed info is available in the dump file•No function provided to disable it•On by default for 64 bit platforms & apps

Page 30: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 30

Termination on Errors (cont.)

• Programmatic opt-In method (new HeapEnableTerminationOnCorruption class defined)

BOOL HeapSetInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength);

• Large number of components withWindows Vista are opted in

• The information is available in adebugger extension

Page 31: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

Demo

Page 32: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 32

NT Heap Manager – Improves Code Quality

Benefits to app developers•Early error detection•Improved debugging aid to reduce costof investigating corruptions

•Reduced tolerance to misusage•Windows Vista apps will be moreresilient to future heap changes

Page 33: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 33

Known Attack Vectors & Windows Vista

•Removed lookaside list and array of liststargeted by previous exploits

• Integrity check on block metadata significantobstacle to brute force attacks

•Most Windows processes terminate onmemory errors

•Dynamic (runtime) change in heapalgorithms obstacle to consistent exploits

•Heap structures and memory mgmt changeslimit portability of exploits

Page 34: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 34

Security enhancements are a journey

•Mitigations are not substitute forgood development practices

•Windows Vista is just a milestone incontinual heap improvements

Page 35: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 35

Windows Vista Heap Perf & Reliability

•Improved scenarios by default for:• SMP scalability• External fragmentation• Large heaps

•Improved reference locality on 64bit platforms

•Reduced Virtual Addressexhaustion

•Increased resilience to patternsinvolving long-term allocations

Page 36: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 36

Key Performance Enhancements

•Automatic tuning•Lower granularity of control policies toswitch to the Low Fragmentation Heap

•Use of lazy initialization•Redesigned segment management•Improved internal lookup algorithms•Addressed fragmentation in problematicscenarios

•Lower overhead on 64 bit

Page 37: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 37

Random Allocation Benchmark (0-1K)

0

5

10

15

20

25

30

1 2 3 4 5 6 7 8

Mill

ions

Threads

Ops

./ se

c.

WindowsServer 2003

RecentWindowsVista

Random Allocation Benchmark (4-8k)

0

2

4

6

8

10

12

14

16

18

20

1 2 3 4 5 6 7 8

Mill

ions

Threads

Ops

./ se

c. WindowsServer 2003

RecentWindowsVista

Page 38: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 38

Fragmentation Test (512 blocks / 80 bytes)Virtual address Cost

0

1000

2000

3000

4000

5000

6000

7000

8000

Run time (sec)

By

tes

pe

r le

ak

ed

blo

ck

RecentWindowsVista

WindowsServer2003

Committed memory cost

0

100

200

300

400

500

600

700

800

Run time (sec)

By

tes

pe

r le

ak

ed

blo

ck

RecentWindowsVista

WindowsServer2003

Heap performance on heap expansion pattern 1 (512 blocks) (70x)

0

100000

200000

300000

400000

500000

600000

700000

800000

Run time (sec)

Op

s./s

ec.

RecentWindowsVista

WindowsServer2003

Page 39: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 39

Fragmentation Scenario II

PatternPattern

Ops/secOps/sec(Recent(Recent

WindowsWindowsVista)Vista)

Ops/secOps/sec(Windows(Windows

Server 2003Server 2003SP 1)SP 1)

ImprovementImprovementxx

256 2576004 388 6639

512 927709 151 6144

1024 403774 51 7917

2048 194180 25 7767

4096 82534 12 6878

Page 40: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 40

Memory footprint on 2 GBytes heap expansion

0

500

1000

1500

2000

2500

3000

3500

4000

4500

32 64 128 256 512 1024 2048 4096

Block size

Mb

yte

s

me

mo

ry

ReservedMemory InRecentWindows Vista

CommitedMemory InRecentWindows Vista

ReservedMemory InWindowsServer 2003

CommitedMemory InWindowsServer 2003

Page 41: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 41

Summary

• Attacks get more sophisticated …• But so does the heap management – and not

only for security• We laid the foundation for increased agility in

heap improvements with reduced compatibilityrisks

• Improved scenarios for SMP and large memoryusage

• Designed to enhance the code quality forapplications

• We are not yet done … we are looking forward forfurther enhancements as needed

• Come see me with your ideas!

Page 42: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 42

Resources

• Feedback on Heap: [email protected]

• Debugging tools:http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx

• Application Verifier:http://www.microsoft.com/downloads/details.aspx?FamilyID=bd02c19c-1250-433c-8c1b-2619bd93b3a2&DisplayLang=en

Page 43: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 43

Still to Come!

Tony ChorCase Study: The Secure DevelopmentLifecycle and Internet Explorer 7

16:45 – 18:30

Page 44: Adrian Marinescu Development Lead - Black Hat · Adrian Marinescu Development Lead adrmarin at microsoft dot com. August 3, 2006 2 Agenda •Windows NT Heap Management basics and

August 3, 2006 4444

[email protected]

This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.