图书介绍

C和C++安全编码 原书第2版 英文版PDF|Epub|txt|kindle电子书版本网盘下载

C和C++安全编码 原书第2版 英文版
  • (美)西科德著 著
  • 出版社: 北京:机械工业出版社
  • ISBN:9787111428046
  • 出版时间:2013
  • 标注页数:569页
  • 文件大小:138MB
  • 文件页数:594页
  • 主题词:C语言-程序设计-英文

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C和C++安全编码 原书第2版 英文版PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

Chapter 1 Running with Scissors1

1.1 Gauging the Threat5

WhatIstheCost?6

Who Is the Threat?8

Software Security11

1.2 Security Concepts12

Security Policy14

Security Flaws14

Vulnerabilities15

Exploits16

Mitigations17

1.3 C and C++17

A Brief History19

What Is the Problem with C?21

Legacy Code24

Other Languages25

1.4 Development Platforms25

Operating Systems26

Compilers26

1.5 Summary27

1.6 Further Reading28

Chapter 2 Strings29

2.1 Character Strings29

StringDataType30

UTF-832

Wide Strings33

String Literals34

Strings in C++36

Character Types37

Sizing Strings39

2.2 Common String Manipulation Errors42

Improperly Bounded String Copies42

Off-by-One Errors47

Null-Termination Errors48

String Truncation49

String Errors without Functions49

2.3 String Vulnerabilities and Exploits50

Tainted Data51

Security Flaw:IsPasswordOK52

Buffer Overflows53

Process Memory Organization54

Stack Management55

Stack Smashing59

Code Injection64

Arc Injection69

Return-Oriented Programming71

2.4 Mitigation Strategies for Strings72

String Handling73

C11 Annex K Bounds-Checking Interfaces73

Dynamic Allocation Functions76

C+++std::basic_string80

Invalidating String Object References81

Other Common Mistakes in basi c_stri ng Usage83

2.5 String-Handling Functions84

gets()84

C9984

C11 Annex K Bounds-Checking Interfaces:gets_s()86

Dynamic Allocation Functions87

strcpy() and strcat()89

C9989

strncpy() and strncat()93

memcpy() and memmove()100

strlen()100

2.6 Runtime Protection Strategies101

Detection and Recovery101

Input Validation102

Object Size Checking102

Visual Studio Compiler-Generated Runtime Checks106

Stack Canaries108

Stack-Smashing Protector(ProPolice)110

Operating System Strategies111

Detection and Recovery111

Nonexecutable Stacks113

W^X113

PaX115

Future Directions116

2.7 Notable Vulnerabilities117

Remote Login117

Kerberos118

2.8 Summary118

2.9 Further Reading120

Chapter 3 Pointer Subterfuge121

3.1 Data Locations122

3.2 Function Pointers123

3.3 Object Pointers124

3.4 Modifying the Instruction Pointer125

3.5 Global Offset Table127

3.6 The.dtors Section129

3.7 Virtual Pointers131

3.8 The atexit() and on_exit() Functions133

3.9 The longjmp() Function134

3.10 Exception Handling136

Structured Exception Handling137

System Default Exception Handling139

3.11 Mitigation Strategies139

Stack Canaries140

W^X140

Encoding and Decoding Function Pointers140

3.12 Summary142

3.13 Further Reading143

Chapter 4 Dynamic Memory Management145

4.1 C Memory Management146

C Standard Memory Management Functions146

Alignment147

alloca() and Variable-Length Arrays149

4.2 Common C Memory Management Errors151

Initialization Errors151

Failing to Check Return Values153

Dereferencing Null or Invalid Pointers155

Referencing Freed Memory156

Freeing Memory Multiple Times157

Memory Leaks158

Zero-Length Allocations159

DR #400161

4.3 C++ Dynamic Memory Management162

Allocation Functions164

Deallocation Functions168

Garbage Collection169

4.4 Common C+++ Memory Management Errors172

Failing to Correctly Check for Allocation Failure172

Improperly Paired Memory Management Functions172

Freeing Memory Multiple Times176

Deallocation Function Throws an Exception179

4.5 Memory Managers180

4.6 Doug Lea's Memory Allocator182

Buffer Overflows on the Heap185

4.7 Double-Free Vulnerabilities191

Writing to Freed Memory195

RtlHeap196

Buffer Overflows(Redux)204

4.8 Mitigation Strategies212

Null Pointers212

Consistent Memory Management Conventions212

phkmalloc213

Randomization215

OpenBSD215

The jemalloc Memory Manager216

Static Analysis217

Runtime Analysis Tools218

4.9 Notable Vulnerabilities222

CVS Buffer Overflow Vulnerability222

Microsoft Data Access Components(MDAC)223

CVS Server Double-Free223

Vulnerabilities in MIT Kerberos 5224

4.10 Summary224

Chapter 5 Integer Security225

5.1 Introduction to Integer Security225

5.2 Integer Data Types226

Unsigned Integer Types227

Wraparound229

Signed Integer Types231

Signed Integer Ranges235

Integer Overflow237

Character Types240

Data Models241

Other Integer Types241

5.3 Integer Conversions246

Converting Integers246

Integer Conversion Rank246

Integer Promotions247

Usual Arithmetic Conversions249

Conversions from Unsigned Integer Types250

Conversions from Signed Integer Types253

Conversion Implications256

5.4 Integer Operations256

Assignment258

Addition260

Subtraction267

Multiplication269

Division and Remainder274

Shifts279

5.5 Integer Vulnerabilities283

Vulnerabilities283

Wraparound283

Conversion and Truncation Errors285

Nonexceptional Integer Logic Errors287

5.6 Mitigation Strategies288

Integer Type Selection289

Abstract Data Types291

Arbitrary-Precision Arithmetic292

Range Checking293

Precondition and Postcondition Testing295

Secure Integer Libraries297

Overflow Detection299

Compiler-Generated Runtime Checks300

Verifiably In-Range Operations301

As-If Infinitely Ranged Integer Model303

Testing and Analysis304

5.7 Summary307

Chapter 6 Formatted Output309

6.1 Variadic Functions310

6.2 Formatted Output Functions313

Format Strings314

GCC318

Visual C+++318

6.3 Exploiting Formatted Output Functions319

Buffer Overflow320

Output Streams321

Crashing a Program321

Viewing Stack Content322

Viewing Memory Content324

Overwriting Memory326

Internationalization331

Wide-Character Format String Vulnerabilities332

6.4 Stack Randomization332

Defeating Stack Randomization332

Writing Addresses in Two Words334

Direct Argument Access335

6.5 Mitigation Strategies337

Exclude User Input from Format Strings338

Dynamic Use of Static Content338

Restricting Bytes Written339

Cll Annex K Bounds-Checking Interfaces340

iost ream versus stdio341

Testing342

Compiler Checks342

Static Taint Analysis343

Modifying the Variadic Function Implementation344

Exec Shield346

FormatGuard346

Static Binary Analysis347

6.6 Notable Vulnerabilities348

Washington University FTP Daemon348

CDE ToolTalk348

Ettercap Version NG-0.7.2 349

6.7 Summary349

6.8 Further Reading351

Chapter 7 Concurrency353

7.1 Multithreading354

7.2 Parallelism355

Data Parallelism357

Task Parallelism359

7.3 Performance Goals359

Amdahl's Law361

7.4 Common Errors362

Race Conditions362

Corrupted Values364

Volatile Objects365

7.5 Mitigation Strategies368

Memory Model368

Synchronization Primitives371

Thread Role Analysis(Research)380

Immutable Data Structures383

Concurrent Code Properties383

7.6 Mitigation Pitfalls384

Deadlock386

Prematurely Releasing a Lock391

Contention392

The ABA Problem393

7.7 Notable Vulnerabilities399

DoS Attacks in Multicore Dynamic Random-Access Memory(DRAM)Systems399

Concurrency Vulnerabilities in System Call Wrappers400

7.8 Summary401

Chapter 8 File I/O403

8.1 File I/O Basics403

File Systems404

Special Files406

8.2 File I/O Interfaces407

Data Streams408

Opening and Closing Files409

POSIX410

File I/O in C+++412

8.3 Access Control413

UNIX File Permissions413

Process Privileges415

Changing Privileges417

Managing Privileges422

Managing Permissions428

8.4 File Identification432

Directory Traversal432

Equivalence Errors435

Symbolic Links437

Canonicalization439

Hard Links442

Device Files445

File Attributes448

8.5 Race Conditions450

Time of Check,Time of Use(TOCTOU)451

Create without Replace453

Exclusive Access456

Shared Directories458

8.6 Mitigation Strategies461

Closing the Race Window462

Eliminating the Race Object467

Controlling Access to the Race Object469

Race Detection Tools471

8.7 Summary472

Chapter 9 Recommended Practices473

9.1 The Security Development Lifecycle474

TSP-Secure477

Planning and Tracking477

Quality Management479

9.2 Security Training480

9.3 Requirements481

Secure Coding Standards481

Security Quality Requirements Engineering483

Use/Misuse Cases485

9.4 Design486

Secure Software Development Principles488

Threat Modeling493

Analyze Attack Surface494

Vulnerabilities in Existing Code495

Secure Wrappers496

Input Validation497

Trust Boundaries498

Blacklisting501

Whitelisting502

Testing503

9.5 Implementation503

Compiler Security Features503

As-If Infinitely Ranged(AIR)Integer Model505

Safe-Secure C/C+++505

Static Analysis506

Source Code Analysis Laboratory(SCALe)510

Defense in Depth511

9.6 Verification512

Static Analysis512

Penetration Testing513

Fuzz Testing513

Code Audits515

Developer Guidelines and Checklists516

Independent Security Review516

Attack Surface Review517

9.7 Summary518

9.8 Further Reading518

References519

Acronyms539

Index545

热门推荐