The use of a base parent class and defining specific extensions of it
Back
Name the rules for scrubbing output
Front
Encrypt information that is secret; include only what is necessary for the external process; do not assume trust for the external system
Back
Define compiling
Front
The process of translating the high-level language into native machine code or intermediary code that will be used by an interpreter
Back
Name some rules for assessing input
Front
Never allow input over the maximum length to be stored in a variable; process the input one character, word, or byte at a time; never leave extra input on the incoming line
Back
Name several rules that should be followed with any system, but particularly with JIT systems
Front
Never execute user input (executing output is acceptable); keep a layer between your code and user input; handle exceptions
Back
The number one issue with any system
Front
The user
Back
Define ahead-of-time compilation
Front
Used for stand-alone applications and thick clients; will generally be a step in packaging the system for release
Back
Name the defensive techniques used to mitigate buffer overflows
Front
Array bounding; pointer handler indirection; data canaries; strict read and write limits
Back
Name the steps to mitigate vulnerabilities in a function if the function must be used
Front
Research the vulnerability and mitigate your code accordingly; make sure all external systems are running the latest version with all security patches in place; quiet the error logs; heed the compiler
Back
Describe a nonexecutable stack
Front
Some portions of memory are not allocated to contain executable code
Back
Name two methods for preventing stack smashing
Front
Stack canaries; nonexecutable stacks
Back
Describe the technique of strict read and write limits
Front
A mechanism used to digest and discard excess input from the user, such as a character-by-character read that will store to a junk character after it has passed the acceptable limit of input
Back
Define overload
Front
A redefinition of an existing operation for a new class
Back
Describe how a stack smash works
Front
Forcing new calls onto the stack or new information onto the stack to where the size of the stack exceeds the space allotted to the program, leading to a crash. After the system crashes, the malicious code will be executed
Back
Define pseudocode
Front
A mix between programming language structures and pure human language
Back
Describe an interpreted language
Front
A language that has a lower layer of machine code that dynamically reads commands from a higher-level language
Back
Define just-in-time (JIT) compilation
Front
Used by web applications to allow for dynamic instructions that come from other system modules or processing. The system is constantly being recompiled before each execution
Back
Describe the technique of pointer handling indirection
Front
When a pointer variable is being used, it should have a layer of indirection between the pointer update and any input from the user
Back
Describe how overloading could be abused
Front
It can potentially be misused or called in error between two dissimilar classes if there is no strong typing in the language of choice, causing a mismatch that the compiler will not catch
Back
Describe how output scrubbing differs from input scrubbing
Front
You do not need to worry about format and injection unless you are passing user input through your system into another external component
Back
Describe the technique of array bounding
Front
Validate the value of the array index before any call is made to retrieve or store data
Back
The type of buffer overflow that attacks the vulnerable call stack
Front
Stack smash
Back
Define machine code
Front
The set of instructions that is supported by the central processing unit (CPU) of the system for performing tasks; generally a small set of fixed instructions that can be combined for greater versatility and an expanded functionality
Back
Define a regular expression (regex)
Front
A specialized sequence of text that facilitates a quick and descriptive search of a string
Back
Describe the precaution that should be used with inheritance
Front
The child class should never violate the security assertions of the parent class
Back
Describe the technique of data canary
Front
A value located at the end of an assigned buffer length can be checked to verify that an overflow has not occurred. These can be overwritten if the attacker knows the location and value
Back
Define pointer
Front
A data type that contains a reference to a memory location containing a data value
Back
Define programming language
Front
A set of rules, worlds, symbols, and codes used to write computer programs.
Back
Define application programming interface (API)
Front
Created to allow a system to call existing functionality in another module or system through a specified interface
Back
Name the minimum input validation measures
Front
Length, format
Back
Another name for executables
Front
Binaries
Back
Describe a stack canary
Front
A randomly chosen small integer value that is placed in the stack adjacent to the return address for code execution. This makes it so the canary is overwritten instead of the return address. If the canary does not match, the return address cannot be used trusted for execution