Index

Access control

basic description of, 187–208

buffer overflows and, 139, 155

compartmentalization and, 204–207

CORBA and, 55

database security and, 382–396

fine-grained privileges and, 207–208

flags, 155

JDB system for, 58–59

Lists (ACLs), 204

mandatory, 207

modifying ownership, 194–195

modifying file attributes, 190–193

programmatic interface and, 195–197

setuid programming and, 197–202

TOCTOU problems and, 222–225

UNIX and for, 187–202

using views for, 385–387

Windows NT and, 202–204

access() function, 215

ACLs (Access Control Lists), 204

Activation records, 153

ActiveX controls (Microsoft), 11, 272

AES, 276, 449–450

assessing the security of, 301

competition for, 449

cryptography libraries and, 272, 274, 277

database security and, 382

passwords authentication and, 375

Aggregate functions, 392–393

Aiken, Alexander, 184

Aleph One, 135, 180

Algorithms. See also specific algorithms

community resources and, 112–113

false advertising regarding, 112

open-source software and, 69–72, 74–75, 78

publishing, 82

proprietary, 450

Amazon.com, 18, 297, 455–456

American Express, 63. See also Credit cards

American Standard Code for Information Interchange (ASCII). See ASCII (American Standard Code for Information Interchange)

amkCrypt, 274

Analysis. See also Auditing

appropriate timing of, 117

architectural security, 118–126

auditing and, 118–126

as a creative activity, 33

findings, reporting, 125–126

implementation, 117–118, 126–133

security engineers and, 36–37

testing and, relationship of, 42

which goes astray, 41–43

Anna Kournikova worm, 1

Anonymity, as a security goal, 21–22

Anti-debugger measures, 416–418

AOL (America Online)

Instant Messenger for Netscape, 11

marketing techniques, 20

traffic monitoring, 20

APIs (application program interfaces), 52, 101–102, 106

auditing and, 127

in cryptography libraries, 274–280

firewalls and, 433

race conditions and, 214

random number generation and, 260

Applet(s). See also Java

attacks, types of, 91

enforcing protection when running, 53

untrusted, 52

Application proxies, 428

Applied Cryptography (Schneier), 256, 267, 439

Arbaugh, Bill, 16

argc() function, 167, 169

argv() function, 144, 169, 312

Arrays, 318

Art of Computer Programming, The (Knuth), 234

ASCII (American Standard Code for Information Interchange), 147, 171, 182–183, 293–294, 302

database security and, 388

digital signatures and, 464

text, encrypting, 388

ASF Software, 238, 241

“Asleep at the Wheel” (Lake), 3–4

ATH variable, 320

ATMs (automatic teller machines), 66

Attackers, use of the term, 25–27. See also Malicious hackers

Attack trees, 120–125

Attributes, modifying, 190–193

Audio players, 110

Auditing. See also Analysis; Monitoring

architectural security analysis and, 117, 118–126

attack trees and, 120–125

basic description of, 19–20, 115–133

implementation security analysis and, 126–133

logs, 20

open-source software and, 84–85

reports, 125–126

security scanners and, 132–133

security engineers and, 38

as a security goal, 19

tools, source-level, 128–130

using RATS for, 130–132

Authentication

biometric, 64–66

call-level, 57

connect, 57

CORBA and, 55

credit card, 97–98

cryptographic, 66

DCOM and, 56–58

default, 57

defense in depth and, 66–67

design for security and, 37

failure modes and, 97–98

host-based, 61–63

IP spoofing and, 62

levels, 56–58

packet integrity-level, 57

packet-level, 57–58

packet privacy-level, 58

password, 335–380

proxy-level, 432

remote execution and, 414–415

security goals and, 22–23, 440–441

technologies, 61–67

trust management and, 308

of untrusted clients, 415

using physical tokens, 63–65

AutoDesk, 421

AVG() function, 392, 393, 394

Axis Powers, 71. See also World War II

Backdoors, 105, 309–310

Back Orifice 2000, 178

Bacon, Francis, 187

base32 encoding, 402, 408–409

base64 encoding, 226, 349, 387, 401

Base pointers, 163, 169, 172

Battle plans, creating, 121

bcopy() function, 149, 153

Beizer, Boris, 15

Bellovin, Steven M., 1, 86, 427

Berra, Yogi, 267

Best-match policy, 189

Binaries, 192, 206

buffer overflow and, 140, 178–179

client-side security and, 401, 408, 425

extracting secrets from, 109–110

setting suid bits on, 140

trust management and, 307, 309

bind() function, 333

Biometric authentication, 64–66

Birthday attacks, 461

Bishop, Matt, 320

Bit(s), 295, 296–297

Blaze, Matt, 253, 297, 462

Blowfish, 272, 274

ciphers, 283

client-side security and, 408–409

using, in CBC mode, 282

Blumb-Blumb-Shub PRNG, 236–237, 241, 244

Boneh, Dan, 269

Boolean flags, 139

Bounds checking, 141, 148

Brainstorming sessions, 125

Brazil, 381

Brewer, Eric, 136

Browser(s)

attacks, 254–255

CAs and, 299

as consumer-ware, 17

cookies and, 21, 324

firewalls and, 433

license files and, 411

operating systems and, fuzzy boundaries between, 11–13

surfing data collected through, 21

untrusted applets and, 52

Brute-force attacks, 338, 461

BSAFE library, 277–278

BSS (block storage segment), 151

Buffer(s). See also Buffer overflows

attack code and, 177–185

input, 148–149

internal, 147–148

tamperproofing and, 420

UNIX and, 178–185

use of the term, 138

Windows and, 185

Buffer overflow(s), 24, 25, 87–88. See also Buffers

auditing and, 128, 131

basic description of, 135–186

defending against, 141–142

entropy handling and, 256–257

gotchas related to, 141–147

open-source software and, 79–81

securing the weakest link and, 93–94

selecting technologies and, 51, 52

smashing stacks and, 151–155

stack overflows and, 159–177

testing and, 39

tools which address, 150–151

trust management and, 309

Bugs. See also Debugging; Errors

announcing, 88–89

responding to misuse with, 419–420

Bugtraq mailing list, 6, 7

C (high-level language), 8, 50–51, 53, 274, 303

access control and, 201–202

auditing and, 129, 130

buffer overflows and, 94, 138–139, 141, 148–151, 154–156, 159–161, 164–165, 171–174, 177–179, 181

client-side security and, 421

firewalls and, 433

format string attacks and, 329–330

input validation and, 329

libraries, 141

open-source software and, 73–74, 84, 88

passwords authentication and, 339–350

popularity of, 84

race conditions and, 216, 222–223

random number generation and, 261–262

risks of using, 88

trust management and, 317–319

C++ (high-level language), 10, 50, 54

auditing and, 129

buffer overflow and, 137, 148, 154

cryptography libraries and, 275–276

risks of using, 88

Cache poisoning attacks, 63

Caches, 63, 417–418

Caesar, Julius, 231

Callbacks, 412

Cameras, 96, 244

Canada, 44, 46

Canadian Trusted Computer Products Evaluation Criteria, 44

Capabilities, 207–208

Capture/replay attacks, 26, 459

Carnegie Mellon University, 8

Carnivore system (FBI), 21

CAs (certificate authorities), 297–301, 455

Case-sensitivity, 363

CAST ciphers, 283

CBC (cipher block chaining) mode, 270, 282–284, 408, 446, 447

CDs (compact discs), 305, 398, 400–415

CERT/CC (CERT Coordination Center) advisories, 2, 8

regarding buffer overflows, 87, 135, 136–137

regarding character sets, 324

CFB (cipher feedback), 270, 283–284, 447

CGI (Common Gateway Interface), 320–325, 327–329, 333–334

CGI.pm module, 334

Challenge/response systems, 413–315

Character(s)

client-side security and, 402

length of passwords, 358

sets, 324–325, 402

trust management and, 321–322

chdir() function, 222, 224, 225, 333

CHECK option, 386–387

Checksums, 57, 418–420

basic description of, 457

hash functions and, 441, 457, 458

symmetric algorithms and, 447

Cheswick, William, 1, 427

Chipsets, 244–245

chmod() function, 190, 191–192, 195, 333

Choke points, 105

Chosen ciphertext attacks, 443

Chosen plaintext attacks, 443, 454

chown() function, 190, 193–196, 200, 333

chroot() function, 200, 204–207, 333

Cigital, 238, 239–240

Cipher(s), 236, 391

3DES, 283, 284

available, list of, 283–284

basic description of, 440

block, 270, 445–446, 448, 449

key length settings for, 284–285

PRNGs and, 233

reusing, 269–270

stream, 233, 269–270, 445–446

symmetric, 444–451

text attacks, 442–443

Civilized Engineer, The (Florman), 115

Class(es)

loading, 12, 91–92

nested, 53

Classifications, of information, 21

Client(s). See also Client/server models

passwords authentication and, 374

proxies, 430–432

-side security, 325–327, 397–426

untrusted, authenticating, 415

Client/server models, 22, 74. See also Clients; Servers

EJB and, 58–59

failure modes and, 99–100

firewalls and, 430

selecting technologies and, 54, 58–59

Clocks, 243, 411

Code

attack, 177–185

atomic, 212

auditing, 127–128

coverage, using, as a metric, 39

good-enough, 127

mobile, 10, 18, 91–92, 102, 107

obfuscation, 74–75, 399, 421–426

reuse of, disadvantages of, 12

reverse engineering, 73–74

untrusted, 127

user-level (user space), 59

Cold Fusion server, 86

Cold War, 397

“Command/response” protocols, 429

Comments

database security and, 388

for stack inspection code, 171–172

Common Criteria, 35, 43–46

Common Evaluation Methodology, 44–46

Community resources, 92, 112–113

Compartmentalization, principle of, 92, 102–104, 204–207

Compiling, 53, 150, 425

comp.lang.java.security newsgroup, 18

ComScire, 243, 257

concat_arguments function, 164–168, 172–176

concat.c, 166, 171, 174, 175–177

concat.s, 174–175

Confidentiality, as a security goal, 20, 440

Congress (United States), 463

connect() function, 333

Constants, 195

Consumer-ware, 17

Containers, 54

Cookies, 18, 62, 293–294, 324

Copy protection schemes, 400–415

CORBA (Common Object Request Broker Architecture), 54–56, 59

Corporate Espionage (Winkler), 25

Counter mode, 446–447

Counterpane Labs, 362

COUNT() function, 392, 393, 394

Crack (program), 356, 363, 367

Cracker, use of the term, 4

Crash(es)

dialog boxes, 72

file locking and, 227

as a sign of an exploitable vulnerability, 72

CREATE VIEW command, 386

Credit card(s)

failure modes and, 97–98

fraud, 40, 97–98

information, storage of, 392–395

password-based schemes and, 66

as physical tokens, 63–64

promoting privacy and, 107–108

Critical section, 213

CRLs (Certificate Revocation Lists), 299

CrypGenRandom() function, 260

Cryptanalysis, 441

crypt() function, 337–338, 343, 349, 351

Cryptix library, 278–279

Cryptlib library, 272–275, 279–280

Crypto++ library, 275–276

Cryptography. See also Public key cryptography

applying, 267–305

attacks on, 442–444

basic description of, 439–464

deriving requirements and, 34

during World War II, 71, 303–304

eavesdropping and, 25

export laws, 271

goals of, 440–442

libraries, 272–279

programming with, 279–295

random number generation and, 232–265

securing the weakest link and, 93–96

Spafford on, 2

types of, 444

writing your own, refraining from, 268–270

Cryptography Research, 444

C Traps and Pitfalls (Koenig), 78

ctx variable, 281

“Current time” technique, 235

Customer support, passwords procured through, 22–23, 94, 111, 355

Cut-and-paste attacks, 270

Daemen, John, 449

Dante, 434

Database(s)

access control for, 381–396

auditing and, 119, 125, 129–132

connection pooling, 54

field protection in, 387–391

password, adding users to, 339–350

promoting privacy and, 107–108

statistical attacks and, 391–395

trust management and, 308, 325–327

Database Security (Castano), 381

Data integrity, 87, 270

DCOM and, 56, 57–58

as a security goal, 21, 441

Data segment, of memory, 152

DCOM (Distributed Component Object Model), 54, 56–58

Debugging, 74, 416–419, 425. See also Bugs; Errors

antidebugger measures and, 416–418

buffer overflows and, 167, 171, 176, 179–180

tamperproofing and, 416–418

Decompilers, 73–74

Decoys, 421

Decryption, 280–286, 440, 451

Defense in depth, principle of, 92, 96–97

Delphi, 239, 272

Demographic data, 20, 392

Denial-of-service attacks, 10, 14–15, 50, 356

Department of Commerce (United States), 449

Department of Defense (United States), 43–44

Department of Defense Trusted Computer System Evaluation Criteria(“Orange Book”), 43–44

Dependability, overall importance of, 13

Depth, defense in, principle of, 92, 96–97

DES (Data Encryption Standard), 71, 74, 282–283, 448–450

passwords authentication and, 337–338

public keys and, 451

Design. See also Development

auditing and, 115, 120

implementation and, complex interrelation of, 18

for security, notion of, 13–14, 37–38

Design of Everyday Things, The (Norman), 106

DESX ciphers, 283

Determinism, 231–265

Development. See also Design

cryptography export laws and, 271

first-to-market pressures and, 17, 24, 29

penetrate-and-patch approach and, 15–16

spiral model of, 30–32

teams, rapid, 41

waterfall model of, 31–32

which goes astray, 41

Device drivers

basic description of, 60

calls to, 60–61

compartmentalization and, 103

Dialog boxes, effectiveness of, 106, 107

Dice rolling technique, for selecting passwords, 358–362, 363

Diceware, 363

Dictionary attacks, 338

DIEHARD, 257

Differential power analysis (DPA), 24, 443

Diffie-Hellman algorithm

cryptography libraries and, 273, 274, 276, 277

used with DSA, 454

Digital cameras. See Cameras

Digital signatures, 410, 413, 459

basic description of, 462–464

DSA (Digital Signature Algorithm) for, 269, 273, 274, 276, 410, 454

PKI and, 463

Directories

backward traversal of, 328

file locking and, 226–227

Disassemblers, 73

Disclosure, full, principle of, 5, 7, 81–82

Disgruntled employees, 110

Disraeli, Benjamin, 397

Distributed object platforms, choosing, 54–59

DLLs (Dynamically Linked Libraries), 185, 317

dlopen() function, 317

DMAC, 276

DNA, 66

DNS (Domain Name Service) names, 61–63

Doctor Faustus (Marlowe), 49

Documentation

auditing and, 120

cryptography libraries and, 273, 275, 276, 277, 278

failure to read, on the part of users, 106

Domain names, 61–63

Dongles, 414

DOS (Disk Operating System), 60

DoubleClick, 20

Double encryption, 449

DPA (differential power analysis), 21, 443

DSA (Digital Signature Algorithm), 269, 273, 274, 276, 410, 454. See also Digital signatures

DVD (digital video disc) viewers, 110

Dynamic allocation, 140

Eavesdropping

basic description of, 25

deriving requirements and, 34

key secrecy and, 109

ECB (electronic code book) mode, 270, 283–284, 447

ECC (elliptic curve cryptography), 273, 277, 279, 454

Echelon, 21

eEye, 72

Efficiency

C programming and, 148–149

cryptography libraries and, 273, 275, 276, 278

entropy handling and, 256

as the justification for a language choice, 50

as a key goal, 27, 29

EGADS (Entropy-Gathering and Distribution System), 225, 226, 256, 259–260, 264

EGID (effective GID), 188, 198

race conditions and, 220

trust management and, 317

EJB (Enterprise Java Beans), 54, 58–59

El Gamal algorithm, 273, 276, 454, 464

Electronic Privacy Information Center, 20

E-mail

announcing security bugs via, 88–89

distribution lists, 88–89

passwords, 70–72, 74

trust management and, 311–314

Employees. See also Personnel, security

disgruntled, 110

trust in, 110

Emulex Corporation, 21

Encryption. See also Cryptography; Keys

AES, 272, 274, 276–277, 301, 375, 382, 449-450

auditing and, 119

code obfuscation and, 74–75, 399, 421–426

DES (Data Encryption Standard) and, 71, 74, 282–283, 337–338, 448–451

disabling, 106

double, 449

of program parts, 423–426

security by obscurity and, 45, 69–75, 268, 336

Spafford on, 2

End-of-file (EOF) character, 141

Engineering

methods, 18

reverse, 73–74

Engineering of Software, The (Hamlet), 15

Engineers, security

role of, 32–39

use of the term hacker by, 3–5

Enigma machine, 71

Entropy

EGADS (Entropy-Gathering and Distribution System) and, 225, 226, 256, 259–260, 264

estimating, 241–255

gateways, 259–260

gathering, 225–226, 232, 235, 238, 241–255, 259–260, 264

handling, 255–258

secret Netscape messages and, 254–255

Environment variables, 316–318

Ethernet, 412

EUID (effective UID), 188, 190, 196–201

race conditions and, 215–216, 220

trust management and, 311, 317

Europe, 18, 44–46

eval() function, 333

EVP_bc_cfb() function, 283

EVP_bf_cbc() function, 282, 283

EVP_bf_ecb() function, 283

EVP_bf_ofb() function, 283

EVP_cast_cbc() function, 283

EVP_cast_cfb() function, 283

EVP_cast_ecb() function, 283

EVP_cast_ofb() function, 283

EVP_CIPHER_CTX_ctrl() function, 284–285

EVP_CIPHER_CTX_set_key_length() function, 284

EVP_DecryptFinal() function, 292

EVP_DecryptInit() function, 286

EVP_DecryptUpdate() function, 286

EVP_des_cbc() function, 283

EVP_des_cfb() function, 283

EVP_des_ecb() function, 283

EVP_des_ede_cbc() function, 284

EVP_des_ede_cfb() function, 284

EVP_des_ede() function, 283

EVP_des_ede_ofb() function, 284

EVP_des_ofb() function, 283

EVP_desx_cbc() function, 283

EVP_DigestFinal() function, 287

EVP_DigestUpdate() function, 287

EVP_enc_null() function, 283

EVP_EncryptFinal() function, 285–286, 291

EVP_EncryptInit() function, 282

EVP_EncryptUpdate() function, 285–286, 291

EVP_idea_cbc() function, 284

EVP_idea_cfb() function, 284

EVP_idea_ecb() function, 284

EVP_idea_ofb() function, 284

EVP interface, 279–280

performing hashing with, 286–287

public key encryption with, 287–292

EVP_rc2_40_cbc() function, 284

EVP_rc2_64_cbc() function, 284

EVP_rc2_cbc() function, 284

EVP_rc2_cfb() function, 284

EVP_rc2_ecb() function, 284

EVP_rc2_ofb() function, 284

EVP_rc4_40() function, 284

EVP_rc4() function, 284

EVP_rc5_32_12_16_cbc() function, 284

EVP_rc5_32_12_16_cfb() function, 284

Exception handling, 50. See also Errors

Exclusive OR (XOR), 71, 181, 418, 424–425

applying cryptography and, 268, 270, 283, 302

data integrity and, 270

DES and, 283

one-time pads and, 302

random number generation and, 233, 255, 256

exec() function, 328–329, 332

execl() function, 145, 180–181

execve() function, 201, 312, 314

execv() function, 159, 321

Expiration dates, for licenses, 413

Export laws, 271

Extensible systems, 9, 10, 12–13

Facial features. See Biometric authentication

Factorization, 401–302

Failure

Florman on, 115

modes, 97–100, 196

planning for, 97–100

to read documentation, on the part of users, 106

Fallback schemes, 98–99

Fault trees, 121

FBI (Federal Bureau of Investigation), 18, 110

fchmod() function, 195, 196

fchown() function, 196

fcntl() function, 333

Federal Criteria (United States), 44

Feedback, soliciting, 120

Felten, Ed, 107

fgetc() function, 148, 152

fgets() function, 141–142, 149, 153

Field(s)

hidden input, 322–325

protection, 387–391

File(s). See also Filenames

attributes, modifying, 190–193

deleting, 140, 224–225

descriptors, 315

locking, 226–227

temporary, 225–226

Filename(s)

buffer overflows and, 144

patterns, input validation and, 332

prefixes, 226

restrictions on, 144

timestamps and, 197

FILE object, 220

Fine-grained privileges, 207–208

fingerd, 135

Fingerprints

biometric authentication and, 64–66

cryptographic, 457

FIPS standards, 241, 247, 260

Firewall(s), 2, 4, 56

auditing and, 119, 125

basic description of, 427–437

Common Criteria and, 44–45

defense in depth and, 97

open-source software and, 85

packet-filtering, 428–430, 434

peer-to-peer connectivity and, 435–437

promoting privacy and, 108–109

proxies and, 428–433, 436–437

securing the weakest link and, 94

SOCKS and, 433–435

strategies for, 427–430

toolkits, 85

Firewalls and Internet Security (Cheswick and Bellovin), 1, 427

FIST, 79

Fithen, Bill, 16

Flawfinder, 129

FlexLM, 413

foo, 192

foobar, 330

fopen() function, 226

fork() function, 201

Format string attacks, 329–330

FORTRAN, 50

Foster, Jeffrey, 136

France, 46. See also Europe

FrontPage (Microsoft), 105

Frost, Robert, 427

fscanf() function, 142, 146, 152

fstat() function, 220

FTP (File Transfer Protocol), 430, 458, 460

FUD (fear, uncertainty, and doubt), 62–63, 88, 112

Full disclosure, principle of, 5, 7, 81–82

Functionality

auditing and, 115–116, 117

CORBA and, 55

of cryptography libraries, 273

database security and, 387

as a key goal, 26, 29

mobile code and, 11

of Trojan horses, 39

passwords authentication and, 375–376

PRNGs and, 235

Functions

access() function, 215

argc() function, 168–169

argv() function, 144, 169, 312

AVG() function, 392, 393, 394

bcopy() function, 149, 153

bind() function, 333

chdir() function, 222, 224, 225, 333

chmod() function, 190, 191–192, 195, 333

chown() function, 190, 193–196, 200, 333

chroot() function, 200, 204–207, 333

concat_arguments function, 164–168, 172–177

connect() function, 333

COUNT() function, 392, 393, 394

CrypGenRandom() function, 260

crypt() function, 337–338, 343, 349, 351

dlopen() function, 317

eval() function, 333

EVP_bc_cfb() function, 283

EVP_bf_cbc() function, 282, 283

EVP_bf_ecb() function, 283

EVP_bf_ofb() function, 283

EVP_cast_cbc() function, 283

EVP_cast_cfb() function, 283

EVP_cast_ecb() function, 283

EVP_cast_ofb() function, 283

EVP_CIPHER_CTX_ctrl() function, 284–285

EVP_CIPHER_CTX_set_key_length() function, 284

EVP_DecryptFinal() function, 292

EVP_DecryptInit() function, 286

EVP_DecryptUpdate() function, 286

EVP_des_cbc() function, 283

EVP_des_cfb() function, 283

EVP_des_ecb() function, 283

EVP_des_ede_cbc() function, 284

EVP_des_ede_cfb() function, 284

EVP_des_ede() function, 283

EVP_des_ede_ofb() function, 284

EVP_des_ofb() function, 283

EVP_desx_cbc() function, 283

EVP_DigestFinal() function, 287

EVP_DigestUpdate() function, 287

EVP_enc_null() function, 283

EVP_EncryptFinal() function, 285–286, 291

EVP_EncryptInit() function, 282

EVP_EncryptUpdate() function, 285–286, 291

EVP_idea_cbc() function, 284

EVP_idea_cfb() function, 284

EVP_idea_ecb() function, 284

EVP_idea_ofb() function, 284

EVP_rc2_40_cbc() function, 284

EVP_rc2_64_cbc() function, 284

EVP_rc2_cbc() function, 284

EVP_rc2_cfb() function, 284

EVP_rc2_ecb() function, 284

EVP_rc2_ofb() function, 284

EVP_rc4_40() function, 284

EVP_rc4() function, 284

EVP_rc5_32_12_16_cbc() function, 284

EVP_rc5_32_12_16_cfb() function, 284

exec() function, 328–329, 332

execl() function, 144, 180–181

execve() function, 201, 312, 314

execv() function, 159, 321

fchmod() function, 195, 196

fchown() function, 196

fcntl() function, 333

fgetc() function, 148, 153

fgets() function, 142, 149, 153

fopen() function, 226

fork() function, 201

fscanf() function, 143, 144, 152

fstat() function, 220

generate_raw_response() function, 375

getc() function, 148, 153

getchar() function, 148, 153

getenv() function, 132, 149, 319

geteuid() function, 198, 223

getopt() function, 148, 153

getopt_long() function, 153

getpass() function, 148, 153

getrlimit() function, 316

gets() function, 136, 142, 148, 152

getuid() function, 198

glob() function, 332

ioctl() function, 333

kill() function, 206, 333

ksg() function, 391

link() function, 222, 333

lstat() function, 220

main() function, 152, 159–160, 162–163, 172, 176

malloc() function, 138, 140, 147, 154, 369, 375, 402

MAX() function, 392

memcpy() function, 149, 153

MIN() function, 392

mkdir() function, 222, 333

mknod() function, 222

munlock() function, 344

open() function, 220, 226–227, 327, 329, 328, 332, 333

popen() function, 206, 300, 318–319

printf() function, 157, 177, 330

print() function, 328

println() function, 211, 213

putenv() function, 319

Raccept() function, 434

rand() function, 234, 241, 303, 363

random() function, 231, 234–235

randomize() function, 239, 240

Rbind() function, 434

rc5_32_12_16_ofb() function, 284

Rconnect() function, 434

read() function, 148, 153

realpath() function, 148, 152

Rgetpeername() function, 434

Rgetsockname() function, 434

rmdir() function, 222, 333

Rread() function, 434

Rrecvfrom() function, 434

Rrecv () function, 434

Rsend() function, 434

Rsendmsg() function, 434

Rsendto() function, 434

Rwrite() function, 434

scanf() function, 136, 142, 146, 152

setpriority() function, 206, 333

setrlimit() function, 316

snprintf() function, 81, 145, 149, 153

socket() function, 333

socketpair() function, 333

sprintf() function, 81, 129, 136, 142, 144–145, 152

sscanf() function, 142, 146, 152

stat() function, 220

stderr function, 315

stdin function, 315

stdio function, 132

stdout function, 315

strcadd() function, 149, 153

strcat() function, 132, 137, 142, 144, 152

strccpy() function, 149, 153

strcpy() function, 77, 80, 128, 136, 141–143, 149, 152, 166, 168

streadd() function, 143, 146, 152

strecpy() function, 142–144, 146, 152

strlen() function, 143

strncat() function, 144

strncpy() function, 81, 143, 148, 153, 184

strtrns() function, 143, 147, 152

SUM() function, 392

symlink() function, 222, 333

syscall() function, 333

syslog() function, 148, 152

sysopen() function, 334

system() function, 206, 319–321, 332

test() function, 160, 161, 163

truncate() function, 333

unlink() function, 222, 224–226, 333

unmask() function, 333

unmount() function, 222

unsetenv() function, 319

utime() function, 197, 222

vfscanf() function, 143, 146, 152

vscanf() function, 143, 152

vsprintf() function, 142, 144, 152

vsscanf() function, 143, 152

FUZZ (program), 50

Gambling programs, 238–241

Game software, 397–398, 413–315

Garbage

collection, 253

input validation and, 330

trust management and, 314

Geiger counters, electronic, 243

generate_raw_response() function, 375

Genetics, 66

Germany, 46, 71. See also Europe

getc() function, 148, 153

getchar() function, 148, 153

getenv() function, 132, 149, 319

geteuid() function, 198, 223

getopt() function, 148, 153

getopt_long() function, 153

getpass() function, 147, 153

getrlimit() function, 316

gets() function, 136, 141–142, 148, 152

getuid() function, 198

GIDs (group IDs), 187–190, 196, 198

input validation and, 333

race conditions and, 222, 224

trust management and, 311, 317

Gilliam, Terry, 381

Global Identifier, 21

glob() function, 332

GNU

debuggers, 179

Mailman, 84–85

GNU C compilers, 150

Goals

project, 25–27, 40–41

security, 18–24, 40–41

Goldberg, Ian, 254

Government(s). See also Legislation

export laws, 271

intelligence secrets, 21

security clearance systems, 100–101

tracking systems, which degrade privacy, 20

U.S. Congress, 463

U.S. Department of Commerce, 449

U.S. Department of Defense, 43–44

U.S. Federal Bureau of Investigation, 18, 110

U.S. National Security Agency, 43, 448, 449

U.S. Securities and Exchange Commission, 19

GRANT command, 383–385

GUIs (graphical user interfaces), 55, 127, 240

Gutmann, Peter, 225, 246, 272, 400, 414

Hacker(s). See also Malicious hackers

open-source software and, 81–82

and the principle of full disclosure, 7, 27, 81–82

use of the term, 3–5

Hamlet, Dick, 15

Handsard (Disraeli), 397

Hanssen, Richard P., 110–111

Hardware

client-side security and, 414

solutions for entropy gathering, 242–245

Hash(es). See also Hashing algorithms

additional uses for, 295–297

basic description of, 441

cryptography libraries and, 272, 276, 278

database security and, 387–391

functions, 256–258, 457–462

passwords authentication and, 336–337, 350, 367

Hashing algorithms. See also Hashes; specific algorithms

basic description of, 286–287, 457–462

recommended types of, 461–462

Header files, 279–280

Heap(s)

allocation, 154

overflows, 139–140, 150, 155–159

Herd, following the, 111–112

Hiding secrets, difficulties involved with, 109–111

Hijacking attacks, 57, 63

basic description of, 26

passwords authentication and, 366

promoting privacy as a defense against, 107

HMAC (Hash Message Authentication Code), 270, 273, 274, 277, 278, 294–295. See also Hashes; Hashing algorithms

Hollebeek, Tim, 71

hostname command, 412

HP/UX, 217

HTML (HyperText Markup Language), 323, 328, 329

HTTP (HyperText Transfer Protocol), 293, 297, 324. See also HTTPS (Secure HTTP)

daemon, 333

firewalls and, 429, 431, 435

input validation and, 333

HTTPS (Secure HTTP), 429, 436. See also HTTP (HyperText Transfer Protocol)

IBM (International Business Machines), 449

iD Software, 399

IDEA (International Data Encryption Algorithm), 272, 274, 284

IEEE Computer (journal), 16

IFS variable, 318–320

IIOP (Internet Inter-Orb Protocol), 54–55, 59

IIS (Microsoft Internet Information Server), 72–73

IMAP (Internet Message Access Protocol), 300, 460

iMode devices, 23

Impersonation, 58

Implementation

auditing and, 116–120, 126–127

design and, complex interrelation of, 17–18

risk management and, 24, 38

security analysis, 117–118, 126–133

trust management and, 309

Industry Standard, The, 3

Information

conflicting, discovery of, 120

-gathering phase, of architectural security analysis, 118–120

hiding mechanisms, 52–53

personal, storage of, 392–395

Information Technology Security Evaluation Criteria (ITSEC), 44

Initialization vectors (IVs), 282, 291

Input validation

basic description of, 307–334

client-side security and, 325–327

detecting problems related to, 331–334

format string attacks and, 329–330

invoking other programs safely and, 319–320

protection from hostile callers and, 314–319

INSERT statement, 383

Integrity of data, 87, 270

DCOM and, 56, 57–58

as a security goal, 23, 441

Intel, 182, 244–245

Intellectual property, 69

Internet

risks specific to, 7, 14

Service Providers (ISPs), 21

“time,” phenomenon of, 15, 19, 27

worm of 1988, 135

Invisible Computer, The (Norman), 29

ioctl() function, 333

IP (Internet Protocol)

firewalls and, 428–429, 431

spoofing, 61–63, 295

Stunnel and, 300

ISO (International Standards Organization), 325, 388

ISPs (Internet Service Providers), 21

IV (initialization vectors), 282, 291

Java, 50, 52–54. See also JVM (Java Virtual Machine)

access control and, 206–207

advantages of, 88

attack applets, 91

basic description of, 58–59

Beans, Enterprise (EJB), 54, 58–59

buffer overflows and, 136, 150

class-loading mechanism, 12

client-side security and, 421–422

Crypto API, 278

Cryptography Extension (JCE) package, 278

cryptography libraries and, 279–280

decompilers and, 73

misconceptions about, 83

newsgroups, 18

Noting Interface (JNI), 278

open-source software and, 70, 73, 88

race conditions and, 210–213, 228–229

random number generation and, 263–265

Remote Method Invocation (RMI), 54, 99

sandboxing solution, 207, 229

stack inspection in, 56

Java Cryptography (Knudsen), 264

JavaScript, 323

java.security.SecureRandom class, 263–265

java.util.Random class, 263

JCE (Java Cryptography Extension) package, 278

JNI (Java Noting Interface), 278

JVM (Java Virtual Machine), 9, 52–53

access control and, 207

client-side security and, 421

open-source software and, 73

race conditions and, 212–213, 228–239

Kaner, Cem, 15

Karst disaster, 102

Kerberos, 57, 270, 305

Kerberos: A Network Authentication System (Tung), 305

Kernel, 10, 59, 61, 203

entropy gathering and, 253

input validation and, 329

Key(s). See also Public key cryptography

advertising related to, 112

basic description of, 66–67

creating, 280

license, for CDs, 398, 400–415

maintaining the secrecy of, 109

master, 450

one-time pads and, 301–305

as physical tokens, 63–64

private, 415, 451

securing the weakest link and, 93–94

session, 450–451

Keyboards, 247, 264

Keywords, 212–213, 384

kill() function, 206, 333

KISS (Keep It Simple, Stupid!) principle, 104–107

Known ciphertext attacks, 442–443

Known plaintext attacks, 443

Knudsen, Jonathan, 264

Knuth, Donald, 234

Kocher, Paul, 443–444

Koenig, Andrew, 78

ksg() function, 391

Lake, David, 3–4

Lamps, 244

Languages. See Programming languages

LAN Manager, 57, 58

LANs (local area networks), 27

Lava Lite lamps, 244

Lavarand, 244

LD_LIBRARY_PATH environment variable, 317

LD_PRELOAD environment variable, 318

Least privilege, principle of, 92, 100–102

Legislation, 20, 271

Millennium Digital Commerce Act, 463–464

Software Piracy Act, 398

Levy, Elias, 135

LFSR (linear feedback shift register), 256, 258

libcrypto.a, 279–280

Libraries, 128, 130, 141, 272–279

License(s)

files, 410–411

information, hiding, 400

keys, for CDs, 398, 400–415

open-source, 79

schemes, challenge-based, 413–315

site, 412–413

Life cycle(s)

auditing and, 115

compression of, by Internet time, 18–19

design for security and, 37

model for system vulnerabilities, 16

risk management and, 30–32, 33, 34–39

security personnel and, 32, 33, 34–39

trust management and, 308

link() function, 222, 333

Linus’ Law, 76

Linux, 77, 109, 150, 172, 182

access control and, 201, 207

applying cryptography and, 282, 293, 296

heap overflows and, 155–159

passwords authentication and, 343

race conditions and, 227

random number generation and, 260–261

LISP, 50

Locking files, 226–227

Logical ANDs, 123

Logical ORs, 123, 394

Login. See also Passwords

attempts, bad, 355

counters, 355

two-password, 356

Logs

buffer overflows and, 140

monitoring, 20

start-up, 198–200

Love Bug virus, 1

ls command, 192

lstat() function, 220

MAC (message authentication code), 62, 107, 293–294

basic description of, 459–460

cryptography libraries and, 273, 276, 278

data integrity and, 270

input validation and, 324

license files and, 411

stream ciphers and, 446

McHugh, John, 16

Macintosh, 263

MacLennan, Bruce, 96

Macros, 316

Macrovision, 414

Mailing lists, 7–8

main() function, 151, 161–162, 163–164, 174, 177

Malicious hackers. See also Hackers

black box testing and, 42

character sets and, 324–325

goal of, 4

open-source software and, 72–74, 82

principle of least privilege and, 101

promoting privacy and, 108

red teaming and, 42–43

reverse engineering by, 73–74

use of the term, 3–5

malloc() function, 138, 140, 147, 154, 369, 375, 402

Man-in-the-middle attacks, 124, 366, 454–456

“Many-eyeballs phenomenon,” 76–82, 87

Marketing techniques, invasive, 20

Marlowe, Christopher, 49

Marsaglia, George, 257

MasterCard, 97. See also Credit cards

Mature threat model, 46

MAX() function, 392

MAXPATHLEN, 146

MD2 hash algorithm, 286–287

MD4 hash algorithm, 286–287, 461–462

MD5 hash algorithm, 237, 274, 277

appropriate uses for, 461–462

EVP interface and, 286–287

passwords authentication and, 337

trust management and, 310

Melissa virus, 1, 21

memcpy() function, 149, 153

Memory. See also Memory heaps

allocation, 154

checksums and, 418–419

client-side security and, 399, 402, 418–420

code obfuscation and, 399

encryption keys and, 67

managers, 53

passwords authentication and, 344, 351

pointers, 157

process space protection and, 60

regions, that are almost always present, 151

static, 151, 154

swapping, 53

tamperproofing and, 420

Memory heap(s)

allocation, 154

overflows, 139–140, 150–151, 155–159

Mending Wall (Frost), 427

Message digest, 457

Microprocessor(s), 247, 296–297

entropy gathering and, 253

instruction caches, 417–418

tamperproofing and, 416–418

Microsoft

ActiveX controls, 11, 272

certificates, forged, 299

fallacy regarding, 82–83

FrontPage, 105

Global Identifier, 21

Internet Explorer browser, 11–13

Internet Information Server (IIS), 72–73

Office, 18, 317, 398, 400

Outlook, 72

SQL Server, 382

Visual Studio, 130

VPN (Virtual Private Network), 269

Word, 83, 317

Military secrets, 18, 71, 303–304

Millennium Digital Commerce Act, 463–464

MIME (Multipurpose Internet Mail Extensions), 293

MIN() function, 392

Mind share, 17

Misuse, responding to, 419–421

MIT (Massachusetts Institute of Technology), 3

Mitchell, Don, 253

Mitnick, Kevin, 444

mkdir() function, 222, 333

mkkey, 415

mknod() function, 222

mlock(), 53, 225, 344

Mobile code, 11, 18, 91–92

dialog boxes and, 107

principle of least privilege and, 102

Monitoring. See also Auditing

as a security goal, 20

taint mode and, 52

variables, 52

Mouse events, reading, 247

Mozilla, 70

MSIE (Microsoft Internet Explorer), 11–13

Multilevel security, as a security goal, 21

munlock() function, 344

MySQL, 382

Named pipes, 201

Napster, 435

NAT (network address translation), 429, 434–435

National Security Agency (NSA), 43, 448, 449

N-bit collisions, 295, 296–297

“Need to know,” notion of, 100–101

Netrek, 415

Netscape, 10, 70

architecture, 12, 41

Directory Server, 159

license files and, 411

mail passwords, 70–72, 74

messages, secret, 254–255

public key cryptography and, 455–456

random number generation and, 299

Network and Distributed Systems Security 2000 conference, 136

Network cards, 62

Neumann, Peter, 8

newline character, 142, 325

new operator, 154

Newsgroups, 8–9, 18, 388

Nielson, Jakob, 106

NIST (National Institute of Standards and Technology), 44, 260, 449–450

NNTP (Network News Transfer Protocol), 297

Nondisclosure agreements, 431

Nonrepudiation, of data, 441

Norman, Donald, 29

NSA (National Security Agency), 43, 448, 449

NullPointerExceptions, 50

number_matches variable, 152

NVLAP (National Voluntary Laboratory Accreditation Program), 44, 45

Obfuscation, code, 74–75, 399, 421–426

Object-oriented languages, 52–53

Obscurity, security by, 45, 69–75, 268, 336

ODBC (Open Database Connectivity), 326

O_EXCEL flag, 226, 227

OFB (output feedback) mode, 270, 283–284, 447

Office (Microsoft), 21, 317, 398, 400

OMG (Object Management Group), 54

One-time pad, 268, 301–305

open() function, 220, 226–227, 327, 329, 328, 332, 333

OpenBSD, 85

OpenPGP, 269

Open-source software

advantages/disadvantages of, 86–87

basic description of, 69–89

buffer overflows and, 87–88

economic incentives for, 76–77

“many-eyeballs phenomenon” and, 76–82, 87

OpenSSL, 267, 408–409

embedding, into your application, 298

IVs and, 282

key length settings, 285

library, 274–275

passwords authentication and, 375

public key encryption with, 287–292

simple program using, 280–286

threading and, 293

tunneling mechanisms and, 299–300

use of, in this book, 279

Operating systems. See also specific operating systems

compartmentalization and, 104

browsers and, fuzzy boundaries between, 11–13

process space protection and, 59–60

Oracle, 381, 382

Oracle Security (Theriault), 381

Orange Book (Department of Defense Trusted Computer System Evaluation Criteria), 43–44

ORB (object request broker), 54–55

OR clause, 395

Osiris, 87

otp-common.c, 378–379

otp-common.h, 374–375

otp-server.c, 376–377

Outlook (Microsoft), 72

Over-the-shoulder attacks, 324

Ownership, modifying, 194–195

Packet(s)

-filtering, 428–430, 434

sniffing, 255

Pairgain Technologies, 23

Palm Pilot, 60

Parallel ports, 243

Pascal, 239

passwd file, 216–219

Password(s)

advice for selecting, 356–365

authentication, 23, 335–380

buffer overflows and, 155

character length of, 358

collecting, with Trojan horses, 9

databases and, 339–350, 382, 387

design for security and, 37

dice rolling technique for selecting, 358–362, 363

encryption algorithms, 70–72

input validation and, 324, 329, 332

mail, 70–72, 74

one-time, 365–379

pass phrases as, 362–363

procured through social engineering attacks, 22–23, 94, 111, 355

race conditions and, 215, 216–219

resetting, 155

security by obscurity and, 70–75

storage of, 20, 336–339

use of, with credit cards, 66

users who forget, 94–96

PasswordSafe, 362

Patches, problems with, 15–16

PATH variable, 318–319, 320, 331

PCs (personal computers), 10, 37. See also Windows (Microsoft)

entropy gathering and, 243, 244

PRNGs and, 236

as single-user devices, 60

Peer-to-peer connectivity, 435–437

Penetrate-and-patch approach, 15–16

Pentium processors, 244, 296–297

Perl, 50, 206

auditing and, 129

input validation and, 321, 327–329, 331–334

security manpage (perlsec), 334

Permissions. See also Privileges

compartmentalization and, 103–104

how they work, 189–190

principle of least privilege and, 101

root, 101

setting, 189–190

taint mode, 52, 331–334

trust management and, 311–319

UNIX and, 189–190

Windows NT and, 202–204

Personal information, storage of, 392–395

Personnel, security. See also Employees

qualifications of, 32–33

risk management and, 32–39

role of, 32–33

PGP (Pretty Good Privacy), 261, 272, 279, 310

PGPsdk, 279

Physical tokens, 63–65

PIDs (process identifiers), 254, 333, 328

PIN (personal identification number) numbers, 66, 366, 369

Piracy, 398–400, 411–412

PKIs (public key infrastructures), 298, 453–455, 459

pLab, 257

Plaintext

attacks, 443

use of the term, 440

Playback attacks, 459–460

Policies

authentication and, 22–23

enforcement of, security as, 14

race conditions and, 228–229

Polling, 246

POP (Post Office Protocol), 70, 74, 460

popen() function, 206, 300, 318–319

POSIX, 207, 319, 337

PPTP (Point-to-Point Tunneling Protocol), 269

Prefixes, 226, 327

Prevention, as a security goal, 19

printf() function, 157, 177, 330

print() function, 328

println() function, 211, 213

Privacy

database security and, 391–395

invasion of, issues related to, 412

laws, 20

least, principle of, 92, 100–102

passwords authentication and, 336

promoting, principle of, 92, 107–109

as a security goal, 20

Privacy Foundation, 20

Private keys. See also Keys

basic description of, 451

untrusted clients and, 415

Privileges. See also Permissions

buffer overflows and, 139–141, 155–159

database security and, 383–385

fine-grained, 207–208

firewalls and, 431

heap overflows and, 155–159

root, 103, 110–111, 140–141, 189–190, 200–201

trust management and, 311–319

Windows NT and, 202–204

PRNGs (pseudorandom number generators). See also Random number generation

attacks against, 238–241

basic description of, 231, 232–237

Blumb-Blumb-Shub, 236–237, 241, 244

entropy handling and, 255–258

examples of, 234–236

password authentication and, 343

SSL and, 254–255

testing, 241, 257–258

Tiny, 237–241, 259–260

using data from, as IVs, 282

Yarrow, 237, 260, 368, 391

Process space protection, 59–61

Processor(s), 247, 296–297

entropy gathering and, 253

instruction caches, 417–418

tamperproofing and, 416–418

Programmatic interface, 195–197

Programming languages. See also specific languages

choosing, 49–54, 88

type-safe, 150

program_name buffer, 80

Proprietary algorithms, 450

Protection

modifiers, 53

process space, 59–61

profiles, 44–45, 46

Protocol(s)

FTP (File Transfer Protocol), 430, 458, 460

HTTP (HyperText Transfer Protocol), 293, 297, 324, 333, 429, 431, 435

HTTPS (Secure HTTP), 429, 436

IIOP (Internet Inter-Orb Protocol), 54–55, 59

IMAP (Internet Message Access Protocol), 300, 460

NNTP (Network News Transfer Protocol), 297

POP (Post Office Protocol), 70, 74, 460

PPTP (Point-to-Point Tunneling Protocol), 269

SMTP (Simple Mail Transport Protocol), 101, 200, 432

SOAP (Simple Object Access Protocol), 94

SSH (Secure Shell Protocol), 122–124, 269, 366

TCP (Transmission Control Protocol), 7–8, 85–86, 433

WAP (Wireless Application Protocol), 23

Prototypes, 31, 229

Proxies, 428–433, 436–437

Pruning node, of attack trees, 122

pthread.h, 252

Pthreads, 252, 293

ptrace, 206

Public key cryptography. See also Cryptography

basic description of, 451–456

cryptography libraries and, 273, 274, 276

license files and, 410

mathematical problems and, 301

with OpenSSL, 287–292

untrusted clients and, 415

PUBLIC keyword, 384

Purify (Rational Software), 149

putenv() function, 319

Python, 50, 54, 84, 206

applying cryptography and, 274

auditing and, 129

trust management and, 322

Quake, 110, 399

raccept() function, 434

Race conditions, 22, 328

basic description of, 209–229

broken passwd files and, 216–219

file locking and, 226–227

temporary files and, 225–226

RAM (random-access memory), 344. See also Memory

ramdisks, 225

rand() function, 234, 241, 303, 363

random() function, 231, 234–235

randomize() function, 239, 240

Random number generation, 24, 231–265, 299, 343, 368. See also PRNGs (pseudorandom number generators)

Java and, 263–265

Linux and, 260–261

Ranum, Marcus, 27, 85, 431

Rapid development teams, 41

RATS (Rough Auditing Tools for Security), 129–132

Raymond, Eric, 76, 85

RBG 1210 (Tundra), 244

rbind() function, 434

RC2 algorithm, 113, 284

RC4 algorithm, 93, 113, 272, 274, 277, 284

RC5 algorithm, 272, 274, 277

rc5_32_12_16_ofb() function, 284

rconnect() function, 434

read() function, 148, 153

realpath() function, 148, 152

Red Hat Linux, 84, 87, 296. See also Linux

Red Hat Package Manager, 87

Red Hat Secure Web Server, 84

Red teaming, 42–43, 119

Redundancy, 92, 105

Related-key attacks, 443

Reliability, 13–15, 50

Remote execution, 414–415

Requirements

auditing and, 120

deriving, 34–35

documents, 31

risk management and, 30–32

Reuse, of code, disadvantages of, 14

REVOKE command, 385

rgetpeername() function, 434

rgetsockname() function, 434

Rijndael algorithm, 449

RIPEMD-160, 272, 273, 274, 278

appropriate uses for, 462

EVP interface and, 286–287

Risk(s). See also Risk management

assessment/identification of, 35–37

getting people to think about security and, 40

ranking, in order of severity, 121, 126

technical trends and, 9–13

two main types of, 24

Risk management. See also Risks

auditing and, 116

basic description of, 3, 29–48

Common Criteria and, 35, 43–46

deriving requirements and, 34–35

design for security and, 37–38

Internet time and, 19

open-source software and, 79

practice of, 40–43

security personnel and, 32–33

security pitfalls and, 24–26

selecting technologies and, 50

RISKS Digest forum, 8–9

rmdir() function, 222, 333

RMI (Java Remote Method Invocation), 54, 99

Robustness, 15, 30, 209, 273

Root

permissions, 103, 110–111, 140–141, 189–190, 200–201

shells, 139

Rosencrantz and Guildenstern Are Dead (Stoppard), 307

RPM (Red Hat Package Manager), 87

rread() function, 434

rrecvfrom() function, 434

rrecv () function, 434

RSA algorithm, 93, 236, 269. See also RSA Security

basic description of, 452–454

client-side security and, 410

cryptography libraries and, 273, 276

digital signatures and, 464

factorization and, 301–302

keys, using hashes to protect, 295

untrusted clients and, 415

RSA Security, 82, 113. See also RSA algorithm

BSAFE library, 277–278

SecurID, 366

rsend() function, 434

rsendmsg() function, 434

rsendto() function, 434

rwrite() function, 434

safe_dir, 223

SafeDisk, 414

SafeWord, 366

Samba, 87

Sandboxing, 52, 102, 206–207, 228

scanf() function, 137, 142, 146, 152

Scanners, security, 132–133

Schneider, Fred, 69

Schneier, Bruce, 7–8, 13, 40, 256, 267, 439, 442, 448

sci.crypt newsgroup, 388

Scripting, cross-site, 325

Script kiddies, 5

<script> tag, 324

Secrets and Lies (Schneier), 13, 40, 439

Secure Computing, 366

SecurID, 366

Securing Java (McGraw), 52

Securities and Exchange Commission (SEC), 19

Security

goals, 18–24

notices, 88–89

pitfalls, 24–26

relative character of, 18

reliability and, comparison of, 15

reviews, 41–42, 85, 117

technical trends affecting, 9–13

use of the term, 14

securityfocus.com, 7

Security of Data and Transaction Processing (Atluri), 381

Security personnel

qualifications of, 32–33

risk management and, 32–39

role of, 32–33

Seed, use of the term, 232

SELECT statement, 383–386

Sendmail, 101

Server(s). See also Client/server models

auditing and, 119, 125

buffer overflows and, 141

callbacks to, 412

client-side security and, 325–327

defense in depth and, 97

disabling encryption and, 106

firewalls and, 428

open-source software and, 74, 86

passwords and, 74, 374, 375–376

promoting privacy and, 107

proxies, 432–433

SSL-enable IMAP, 300

trust management and, 309, 325–327

Session keys, 450–451. See also Keys

setgid, 188, 197, 314

setpriority() function, 206, 333

setrlimit() function, 316

setuid, 163, 188, 197–202, 314, 319

SHA algorithms, 237, 260, 263, 264, 273

appropriate uses for, 462

basic description of, 458

cryptography libraries and, 272, 274, 276, 278

EVP interface and, 286–287

finding a collision using, 296–297

passwords authentication and, 337, 349, 350

trust management and, 326–327

Shopping carts, 105

SHOW TABLES command, 387

Shrink-wrapped software, 75, 121, 125

Side-channel attacks, 443–444

SIDs (security IDs), 202

Signal-to-noise ratios, 7

Signatures, digital, 410, 413, 459. See also Signatures, handwritten

basic description of, 462–464

DSA (Digital Signature Algorithm) for, 269, 273, 274, 276, 410, 454

PKI and, 463

Signatures, handwritten, 64–66. See also Signatures, digital

Simplicity, as a key goal, 27, 29, 92, 104–107

Skepticism, advantages of, 112

S/Key, 366–369

smap, 432

Smart cards, 21, 43–46, 443

Common Criteria and, 44, 45–46

as physical tokens, 63–64

Smart Card Security User’s Group, 43, 45–46

Smashing stacks, 135, 139, 150–155, 182. See also Stacks

Smashing the Stack for Fun and Profit (Levy and One), 135, 182

Smith, David L., 21

SMTP (Simple Mail Transport Protocol), 101, 200, 432

Snake Oil FAQ, 112

Sniffing-based attacks, 324

snprintf() function, 81, 145, 149, 153

SOAP (Simple Object Access Protocol), 94

Social engineering attacks, 22–23, 94, 111, 355

socket() function, 333

socketpair() function, 333

SOCKS, 433–435

Software

key role of, 2–3

project goals, 26–27, 40–41

security pitfalls, 24–26

security, technical trends affecting, 9–13

Software Engineering Institute, 8

Software Security Group, 238

Software Testing Techniques (Beizer), 15

Solaris, 109, 293

access control and, 193, 207

buffer overflow and, 150, 182

South Park: Bigger, Longer, and Uncut, 335

SPA (Software Piracy Act), 398

Spafford, Gene, 2

SPARC Solaris, 182

SPARC SunOS, 182–183

Specification(s)

formality of, 35

risk assessment and, 36

vague, problems caused by, 17–18

Spiral model, of development, 30–32

Spoofing attacks, 22, 23, 62–63, 295

spool directory, 203

sprintf() function, 81, 129, 137, 142, 144–145, 152

SQL (Structured Query Language), 325–327, 392

92 standard, 383, 386

INSERT statement, 383

SELECT statement, 383–386

UPDATE statement, 383

SQL Server (Microsoft), 382

src parameter, 143

sscanf() function, 142, 146, 152

SSH (Secure Shell Protocol), 122–124, 269, 366

SSL (Secure Socket Layer), 21–22, 93, 382

applying cryptography and, 270, 297–301

data integrity and, 270

failure modes and, 99–100

firewalls and, 430

functionality provided by, 267

implementations, in cryptography libraries, 277

Netscape’s early implementations of, 254–255

problems with, 456

session keys, 254–255

TLS and, 297–301

tunneling, 298, 299–300

use of hybrid cryptography by, 452

version 2, flaws in, 269, 298

Stack(s)

allocation, 131, 154–185

decoding, 160–165

inspection, 56

nonexecutable, 150

overflows, 159–177

smashing, 135, 139, 150, 151–155

Stackguard tool, 150–151

stat() function, 220

Statistical attacks, 391–395

stderr function, 315

stdin function, 315

stdio function, 132

stdout function, 315

Sticky bits, 190

Stock(s)

price manipulation, 23

quotes, Web portals which provide, 107

transactions, capture of, 26

Stoppard, Tom, 307

strcadd() function, 149, 153

strcat() function, 132, 137, 142, 144, 152

strccpy() function, 149, 153

strcpy() function, 77, 80, 128, 137, 141, 142, 149, 152, 160, 168–169

streadd() function, 143, 146–147

strecpy() function, 143–145, 146, 152

strlen() function, 143, 285

strncat() function, 144

strncpy() function, 81, 143, 149, 153, 184

strtrns() function, 143, 147, 152

str variable, 156–157, 158

Stunnel, 299–300

suid root programs, 140

SUM() function, 392

SunOS, 182–184, 216

super_user variable, 156–157, 158

symlink() function, 222, 333

Symmetric algorithms

basic description of, 444–451

cryptography libraries and, 272, 274, 276, 277, 278

security of, 447–451

types of, 445–447

Symptoms of problems

fixing, without addressing underlying causes, 16

searching for, 127–128

syscall() function, 333

syslog() function, 148, 152

sysopen() function, 334

system() function, 206, 319–321, 332

Tables. See also Databases

filtering, 385–387

virtual, 385–387

Taint mode (Perl), 52, 331–334

Tampering. See also Tamper-proofing

basic description of, 25

key secrecy and, 109

Tamper-proofing. See also Tampering

anti-debugger measures and, 416–418

basic description of, 416–421

checksums and, 418–420

responding to misuse and, 419–420

“Tao of Windows Buffer Overflow” (Dildog), 185

TCP (Transmission Control Protocol)

CERT advisory regarding, 8

firewalls and, 433

wrappers, 85–86

Technical support, passwords procured through, 22–23, 94, 111, 355

TELNET, 23, 108–109, 311, 366, 460

Temporary files, 225–226

Terrorism, 271

test() function, 160–161, 163

Testing

basic description of, 38–39

black box, 42

first-to-market pressures and, 17

functional, 39

Internet time and, 27

measuring the effectiveness of, 39

PRNGs, 241, 257–258

recommended books on, 15

scheduling, 17

security engineers and, 38–39

Testing Computer Software (Kaner), 15

Texas Hold ’em Poker, 239–241

Text segment, of memory, 152

Thompson, Ken, 309

Threading, 293

Tickets, basic description of, 62. See also Cookies

Time

current, technique, 235

Internet, 18, 19, 24

-of-check race condition, 128, 196, 214–222

-of-use race condition, 128, 196, 214–222

stamps, 246, 251

-to-market pressures, 27, 29

zones, setting, 318

Tiny Entropy Gateway, 252

Tiny PRNG, 237–241, 259–260

TOCTOU race conditions, 128, 196, 213–222

Tokens, 63–65, 202–204

to_match variable, 152–154

Topology, 25

Traceability, as a security goal, 19

Trade secrets, 18, 113

Transactions. See also Credit cards

authentication and, 23

open-source systems for, 78

promoting privacy and, 107–108

symmetric cryptography and, 446

Trend analysis, 98

Triple DES, 272, 274, 375, 449–450

Tripwire, 87

Trojan horses, 9, 39, 458

FBI security breaches and, 111

open-source software and, 85–86, 87

trust management and, 309–310

TrueRand, 253

truncate() function, 333

Trust, 18, 102. See also Trust management

community resources and, 113

in employees, 110

extension of, problems with, 61, 110, 111–112

principle of least privilege and, 100–102

relationships, basic description of, 308–311

as transitive, 112, 311–314

Trusted Mach, 61

Trusted Solaris, 103, 207–208

Trust management. See also Trust

basic description of, 307–334

client-side security and, 325–327

invoking other programs safely and, 319–320

Perl and, 327–329

problems from the Web and, 322–325

protection from hostile callers and, 314–319

“Try-each-key-out” approach, 442

Tundra, 244

Tung, Brian, 305

Tunneling mechanisms, 298, 429–431

Turing, Alan, 71

Turing Award, 309

“Twenty Years of Attacks Against the RSA Cryptosystem” (Boneh), 269

Type confusion attack, 91

Type-safe languages, 150. See also Java

Type safety verification attacks, 91

TZ variable, 318

Ubiquitous networks, 9–13

UIDs (user IDs), 187–190, 193, 196, 198, 201, 203–204

input validation and, 333

race conditions and, 215, 218, 222–223

umask command, 194–195, 197, 226, 314

United Kingdom, 46. See also Europe

UNIX

access control and, 187–202, 204–208

attack code and, 177–185

auditing and, 129

browsers and, 11

buffer overflows and, 140, 141, 178–185

client-side security and, 412

CORBA and, 56

database security and, 385

design for security and, 37

device drivers and, 60

entropy gathering and, 253

FBI security breaches and, 110–111

firewalls and, 431, 434

kernel, 329

open-source software and, 80

passwords authentication and, 339, 344

permissions, 189–190

principle of least privilege and, 101

privilege model, 103

PRNGs and, 259–260

process space protection and, 60

race conditions and, 217

random number generation and, 259–260, 263

representation of, in vulnerability data, 4

selecting technologies and, 52, 56, 60–61

trust management and, 311, 317, 329

use of the term hacker and, 25

unlink() function, 222, 224–226, 333

unmask() function, 333

unmount() function, 222

unsetenv() function, 319

Untrusted applets, 52. See also Applets

UPDATE statement, 383

URLs (Uniform Resource Locators), 22, 323, 324

Usability, 105–106, 358, 367–368

client-side security and, 399

as a key goal, 26–27, 29

Usability Engineering (Nielson), 106

Usenet newsgroups, 8, 18, 388

User(s)

space, 59

-specific information, 410–411

User IDs (UIDs), 187–190, 193, 196, 198, 201, 203–204

input validation and, 333

race conditions and, 215, 218, 222–223

utime() function, 197, 222

Validation, input

basic description of, 307–334

client-side security and, 325–327

detecting problems related to, 331–334

format string attacks and, 329–330

invoking other programs safely and, 319–320

protection from hostile callers and, 314–319

Variables. See also Variables (listed by name)

buffer overflows and, 151–152, 159–160, 162–165, 172

environment, 316–318

heap overflows and, 155–159

monitoring, 52

private, 53

renaming, 74–75

tamperproofing and, 420

Variables (listed by name). See also Variables

ATH variable, 320

ctx variable, 281

IFS variable, 318–320

LD_LIBRARY_PATH variable, 317

LD_PRELOAD variable, 318

number_matches variable, 152

PATH variable, 318–319, 320, 331

str variable, 156–157, 158

super_user variable, 156–157, 158

to_match variable, 152–154

TZ variable, 318

Vectors, initialization (IVs), 282, 291

Verisign, 298, 300, 455

vfscanf() function, 143, 146, 152

Viega, John, 71, 78, 84

Views, using, for access control, 385–387

Viruses, 1, 21

Visa International, 35, 45–46, 97. See also Credit cards

Visual Studio (Microsoft), 130

vscanf() function, 143, 152

vsprintf() function, 142, 144, 152

vsscanf() function, 143, 152

Vulnerability

data, 6–9

detection, difficulties involved with, 79–81

life cycle model for, 16

windows of, 100–102, 210

Wagner, David, 135, 136, 254

WAP (Wireless Application Protocol), 23

Waterfall model, of development, 31–32

Weakest link, securing the, 92, 93–86, 97

Web browser(s). See also Web sites

attacks, 254–255

CAs and, 299

as consumer-ware, 17

cookies and, 21–22

firewalls and, 433

license files and, 411

operating systems and, fuzzy boundaries between, 11–13

surfing data collected through, 22

untrusted applets and, 52

Web site(s). See also Web browsers

attacks, 22, 322–325

cross-site scripting and, 325

public key crytography and, 455–456

Web Spoofing (Felten), 23

WHERE clause, 386–387

white board, 125

white space, 318

Windows (Microsoft). See also Windows NT (Microsoft)

access control and, 202

API, 101–102

applying cryptography and, 272, 276, 293

auditing and, 129

browsers and, fuzzy boundaries between, 11

buffer overflows and, 178, 184–185

crash dialog, 72

DCOM and, 57

design for security and, 37

firewalls and, 431, 434

kernel, 11

open-source software and, 70, 72

process space protection and, 60

race conditions and, 214

random number generation and, 260

registry, 70

software, representation of, in vulnerability data, 4

trust management and, 317–318

Windows NT (Microsoft). See also Windows (Microsoft)

access control, 202–204

kernel, 11

process space protection and, 60

random number generation and, 260

“Windows of Vulnerability: A Case Study Analysis” (Arbaugh, Fithen, and McHugh), 16

Winkler, Ira, 22–23

Word (Microsoft), 83, 317

wordencode.c, 369–374

wordlist.dat, 364

WORLD privileges, 56

World War II, cryptography during, 71, 303–304

wrapconcat.c, 166–167

wu-ftpd, 79–81

x86 platform, 155, 160, 162, 172, 260, 417

XOR (Exclusive OR), 71, 181, 418, 424–425

applying cryptography and, 268, 270, 283, 302

data integrity and, 270

DES and, 283

one-time pads and, 302

random number generation and, 233, 255, 256

XP (extreme programming), 35

xterm, 140

X Windows, 247

Yahoo!, 10, 20

Yarrow PRNG, 237, 260, 368, 391

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.217.206.10