Index[SYMBOL] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z] C programming language arithmetic boundary conditions binary encoding bit fields bitwise shift operators byte order character types data storage floating types format strings function invocations implementation defined behavior integer types macros numeric wrapping objects operands, order of evaluation operators 2nd right shift size pointers arithmetic vunerabilities precedence preprocessor security signed integers, boundaries standards stdio file interface string handling structure padding switch statements type conversions assignment operators comparisons conversion rules default type conversions explicit type conversions floating point types function prototypes implicit type conversions integer promotions narrowing sign extensions simple conversions typecasts usual arithmetic conversions value preservation vunerabilities widening types typos unary + operator unary operator unary operator undefined behavior unsigned integers, boundaries C Programming Language, The C Rationale document C++ programming language, EH (exception handling) Cache-Control header field (HTTP) calling conventions, functions canary values candidate points canonicalization, files, Windows NT capabilities, Linux carry flags (CFs) CAS (code access security) case sensitivity, Windows NT filenames CBC (cipher block chaining) mode cipher CC (code comprehension) strategies, code audits algorithm analysis black box hit traces class analysis module analysis object analysis trace malicious input CER (Canonical Encoding Rules), ASN.1 (Abstract Syntax Notation) Certificate Payload Integer Underflow in CheckPoint ISAKMP listing (16-2) certificate payloads, ISAKMP (Internet Security Association and Key Management Protocol) certificate request payloads, ISAKMP (Internet Security Association and Key Management Protocol) CFML (ColdFusion Markup Language) CFs (carry flags) CGI (Common Gateway Interface) 2nd environment variables indexed queries chain of trust relationships Challenge-Response Integer Overflow Example in OpenSSH 3.1 listing (6-3) change monitoring Character Black-List Filter listing (8-22) character equivalence, Unicode Character Expansion Buffer Overflow listing (8-4) character expansion, text strings character sets character stripping vulnerabilities, metacharacters, filtering character types, C programming language Character White-List Filter listing (8-23) Charge-To header field (HTTP) checked build application access checkForAnotherInstance( ) function checksum, IP (Internet Protocol) child processes, UNIX processes chroot jails cipher block chaining (CBC) mode cipher circular linked lists clarity, software design Clarke, Arthur C. class diagrams, UML (Unified Markup Language) classes analyzing, CC (code comprehension) IP addresses vulnerabilities design vunerabilities implementation vunerabilities operational vunerabilities vunerabilities cleanup( ) function cleanup_exit( ) function Cleaton, Nick client IP addresses, maintaining state with client tier (Web applications) clients client control pipe squatting visibility close( ) function close-on-exec file descriptor, UNIX CloseHandle( ) function closing files, studio file system TCP connections Clowes, Shaun CLR (Common Language Runtime) CLSIDs, mapping to applications, COM (Component Object Model) code auditing 2nd 3rd binary navigation tools CC (code comprehension) strategies CP (candidate point) strategies 2nd debuggers dependency alnalysis desk checking DG (design generalization) strategies 2nd fuzz testing tools internal flow analysis OpenSSH case study rereading code running code scorecard SDLC (Systems Development Life Cycle) source code navigators subsystem alnalysis test cases memory, finding in reuse source code, profiling typos, C programming language code access security (CAS) [See CAS (code access security).] code naigation external flow sensitivity tracing code page assumptions, Unicode Code Page Mismatch Example listing (8-31) code paths code review application review phase 2nd 3rd bottom-up approach hybrid approach iterative process peer reviews planning reevaluation status checks top-down approach working papers code auditing 2nd 3rd binary navigation tools CC (code comprehension) strategies CP (candidate point) strategies 2nd debuggers dependency alnalysis desk checking DG (design generalization) strategies 2nd fuzz testing tools internal flow analysis OpenSSH case study rereading code scorecard source code navigators subsystem alnalysis test cases code navigation external flow sensitivity tracing documentation and analysis phase 2nd findings summary preassessment phase application access information collection scoping process outline remediation support phase 2nd Code Surfer code-auditing situations CoInitializeEx( ) function ColdFusion ColdFusion Markup Language (CFML) ColdFusion MX collecttimeout( ) function collisions, Windows NT object namespaces COM (Component Object Model), Windows NT access controls Active X security application audits application identity 2nd application registration ATL (Active Template Library) automation objects 2nd CLSID mapping components DCOM Configuration utility impersonation interface audits interfaces IPC (interprocess communications) MIDL (Microsoft Interface Definition Language) OLE (Object Linking and Embedding) proxies stubs subsystem access permissions threading type libraries COMbust tool Common Gateway Interface [See CGI (Common Gateway Interface).] Common Language Runtime (CLR) common real types Communications of the ACM Comparison Vulnerability Example listing (6-20) comparisons, type conversions, C programming language compensating controls, operational vunerabilities component diagrams, UML (Unified Markup Language) Component Object Model (COM) [See Component Object Model (COM).] Computer Security: Art and Science concurrent programming APCs (asynchronous procedure calls) deadlocks multithreaded programs process synchronization interprocess synchronization lock matching synchronization object scoreboard System V synchronization Windows NT synchronization race conditions reentrancy repetition shared memory segments signals asynchronous-safe function 2nd 3rd default actions handling interruptions 2nd jump locations non-returning signal handlers 2nd 3rd sending signal handler scoreboard signal masks vunerabilities 2nd starvation threads deadlocks PThreads API race conditions starvation Windows API condition variables, PThreads API conditions, ACC logs, unanticipated conditions confidentiality encryption algorithms block ciphers common vunerabilities exchange algorithms IV (initialization vector) stream ciphers expectations of configuration files OpenSSH UNIX configuration settings ASP ASP.NET Java servlets PHP CONNECT method Connection header field (HTTP) connection points, objects connections RPCs (Remote Procedure Calls) TCP (Transmission Control Protocol) 2nd blind connection spoofing connection tampering establishing fabrication flags resetting states ConnectNamedPipe( ) function constraint establishment, test cases, code audits Content-Encoding header field (HTTP) Content-Language header field (HTTP) Content-Length header field (HTTP) Content-Location header field (HTTP) Content-MD5 header field (HTTP) Content-Range header field (HTTP) Content-Transfer-Encoding header field (HTTP) Content-Type header field (HTTP) CONTENT_LENGTH (environment variable) CONTENT_TYPE (environment variable) context handles, RPCs (Remote Procedure Calls) contexts, Windows NT sessions, access tokens control flow, auditing flow transfer statements looping constructs switch statements control-flow sensitive coide navigation Controller component (MVC) controlling terminals, UNIX conversion rules, type conversions, C programming language ConvertSidToStringSid( ) function ConvertStringSidToSid( ) function cookies stack cookies COPY method core files CoRegisterClassObject( ) function Correct Use of GetFullPathName( ) listing (8-13) corruption (memory) buffer overflows global overflows heap overflows off-by-one errors process memory layout SHE (structured exception handling) attacks stack overflows static overflows protection mechanisms ASLR (address space layout randomization) assessing function pointer obfuscation heap hardening nonexecutable stack SafeSEH stack cookies shellcode Cost header field (HTTP) counter (CTR) mode cipher CP (candidate point), code audits 2nd application-specific CPs automated source analysis tools black box generated CPs general approach simple binary CPs simple lexical CPs crackaddr( ) function CRC (cyclic redundancy check) routines Create*( ) functions CreateEvent( ) function CreateFile( ) function 2nd 3rd 4th 5th 6th CreateHardLink( ) function CreateMutex( ) function 2nd CreateNamedPipe( ) function 2nd CreateNewKey( ) function CreatePrivateNamespace( ) function CreateProcess( ) function 2nd CreateRestrictedToken( ) function CreateSemaphore( ) function CreateWaitableTimer( ) function credentials, authorization, untrustworthy credentials critical sections, Windows API cross-site scripting ASP ASP.NET Java servlets Perl PHP XSS cryogenic sleep attacks crypto subsystem, SSH server, code audits CRYPTO_realloc_clean( ) function cryptographic hash functions cryptographic signatures cryptography cryptographic data integrity cryptographic signatures hash functions originator validation salt values encryption algorithms block ciphers common vunerabilities exchange algorithms IV (initialization vector) stream ciphers Cscope source code navigator Ctags source code navigator CTR (counter) mode cipher Cutler, David cyclic redundancy check (CRC) routines |