Domain 8: Software Development Security

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

Worm

A software program written with the intent and capability to copy and disperse itself without the knowledge and cooperation of the owner or user of the particular system, but without needing to modify other programs to contain copies of itself.

Virus

A software program written with the intent and capability to copy and disperse itself without the knowledge and cooperation of the owner or user of the particular system. Researchers of malicious software disagree on a perfect definition of a virus; however, a common definition may be a program that modifies other programs to contain a possibly altered version of itself.

View-Based Access Controls

An access control process that allows the database to be logically divided into pieces (individual records, fields or groups of items) that allow certain sensitive data to be hidden from users that are not authorized to see it or manipulate it. Administrators can set up a view for each type of user and then each user can only access the view assigned to them. Some database views will allow the restrictions to be very granular, for example, of both rows and columns, while others allow for views that can write and update data as well as the capability to only read.

Emerging Properties

An alternate and perhaps more powerful way of looking at systems-level behavior characteristics such as safety and security. This perspective also helps provide a more testable, measurable answer to questions such as "how secure is our system?"

Zero-day, Zero- hour Exploit

Exploit of a hitherto unreported vulnerability in a system, which can potentially be exploited without risk of detection or prevention until the system's owners or developers first detect such an exploit in action. It gets its name from the "zero time" being the time at which the exploit or the vulnerability is first identified by the systems' owners or builders. Also known as zero-hour exploit, zero-day attacks.

Metadata

Information that describes the format or meaning of other data, which can be used to provide a systematic method for describing resources and improving the retrieval of information.

Source Code

Program statements written in human- readable form using a formal programming language's rules for syntax and semantics.

DevSecOps

Provides for a merger of phased review (as in the waterfall SDLC) with the DevOps method, so as to incorporate the needs for security, safety, resilience or other emerging properties in the final system, at each turn of the cycle of development.

Open-Source Software

Software whose source code and other design information is made publicly available for inspection, testing, assessment and use. In many cases, open-source licenses allow modification and refactoring. While many commercial software products protect their source code as proprietary, others include or are licensed, supported reuse of open-source software.

Threat Surface

The total set of penetrations of a boundary or perimeter that surrounds or contains systems elements.

Dynamic Application Security Testing (DAST)

Tools that execute the software unit, application or system under test, in ways that attempt to drive it to reveal a potentially exploitable vulnerability.

Waterfall Software Development Lifecycle (SDLC)

Traditional or classic software development lifecycle model with clearly defined boundaries between each phase. There are many variations on this model, with phases such as concept or mission; needs identification; requirements definition; systems design; software and data systems coding; unit, subsystem and systems testing; acceptance testing; and deployment to operational use. There are many other SDLCs as models and business processes, all different, which are not "waterfall" in concept or use.

Data Mining

An analysis and decision-making technique that relies on extracting deeper meanings from many different instances and types of data; often applied to data warehouse content.

Code Protection or Logic Hiding

Prevents one software unit from reading or altering the source, intermediate or executable code of another software unit.

Blocked and Allowed Lists (software, identities, addresses)

Use of lists of blocked or allowed identities—whether as users, URLs, URIs, web addresses, IP addresses, geographic regions, hardware addresses, files or programs—as a means of controlling (prohibiting or permitting) personnel if the attempt involves a resource not on a pre-approved list. Stand-alone security tools and integrated systems that provide these capabilities are now starting to incorporate anti-malware processes as part of their offerings; similarly, anti- malware products have begun to incorporate these blocked/allowed list management and use capabilities. their access, use or attempt to load and execute. These systems also alert designated IT security. In this course, the term "blocked list" replaces "blacklist" and the term "allowed list" replaces "whitelist."

Query Attack

Use of query tools to access data not normally allowed by the trusted front end, including the views controlled by the query application. Malformed queries using SQL to bypass security controls may be possible as well. There are many other examples of where improper or incomplete checks on queries can be used in a similar way to bypass access controls.

Bypass Attack

Users may attempt to bypass controls at the front end of the database application to access information.

Code Reuse

When programmers reuse, rather than reinvent, units of software (procedures or objects) that have already been demonstrated to be correct, complete, safe and secure.

Polyinstantiation

Creates a new instance (or version copy) of a data item, with the same identifier or key, allowing for each using process to have its own version of that data. Useful for enforcing and protecting different security levels for a shared resource.

Markup Languages

Non-programming languages used to express formatting or arrangement of data on a page or screen. Markup languages are extensible, which allows users to define other operations to be performed. These extend the language into a programming language, such as the way that JavaScript extends HTML.

Configuration Control (CC)

Process of controlling modifications to hardware, firmware, software and documentation to protect the information system against improper modifications prior to, during and after system implementation.

Time of Check vs. Time of Use (TOCTOU) Attacks

Takes advantage of the time delay between a security check (such as authentication or authorization) being performed and actual use of the asset.

Database Model

The underlying software design concepts that a DBMS implements; it identifies the specific organization, structure and architecture that the DBMS can provide to users, as they build specific databases to meet business needs.

Ransom Attack

Any form of attack that threatens the destruction, denial or unauthorized public release or remarketing of private information assets. Usually involves encrypting these assets and withholding the decryption key until the ransom is paid by the victim.

Data Contamination

Attackers can attempt to use malformed inputs—at the field, record, transaction or file level—in an attempt to disrupt the proper functioning of the system.

Configuration Management (CM)

A collection of activities focused on establishing and maintaining the integrity of information technology products and information systems, through control of processes for initializing, changing and monitoring the configurations of those products and systems throughout the system development lifecycle.

Data Warehouse

A collection of data sources such as separate internal databases to provide a broader base of information for analysis, trending and reference. May also involve databases from outside of the organization, either by importing a copy or by reference.

Covert Channel or Covert Path

A communications pathway between two or more processes that transfers information in ways that violate some security policy or requirement. These can be created deliberately (wittingly) by the process designer(s), or unwittingly by the hostile process exploiting hitherto unrecognized exposures of information, resources or other characteristics by the target system.

Independent Verification and Validation (IV&V)

A comprehensive review, analysis and test (software and/or hardware) performed by an objective third party to confirm (i.e., verify) that the requirements are correctly defined, and to confirm (i.e., validate) that the system correctly implements the required functionality and security requirements.

Data Lake

A data warehouse incorporating multiple types or streams of unstructured or semi- structured data.

Object-oriented (OO) Database Model

A database model that uses object- oriented programming concepts of classes, instances and objects to organize, structure and store both data and methods. Schemas define the structure of the data (in terms of tables, records and attributes or fields); views establish specific selections of tables, rows and columns to meet user or security needs.

Data Modeling

A design process that identifies all data elements that the system will need to input, create, store, modify, output and destroy during its operational use. Arguably, data modeling should be one of the first steps in systems analysis and design, regardless of whether procedural or OOP approaches will be used to implement it.

Rapid Application Development (RAD)

A development methodology that creates an application more quickly by employing techniques such as the use of fewer formal methodologies and reuse of software components.

Strong Data Typing

A feature of a programming language that prevents data type mismatch errors (such as trying to add amounts of money to dates or times). Strongly typed languages will generate errors at compile time, forcing the programmer to correct a type mismatch or include additional code that performs the correct data type conversion at run time.

Mobile Code (Executable Content)

A file or a set of files sent by one system to one or more other target or client systems, which, when opened by software already installed on that client, will either control the execution of systems and applications software on that client or be directly executed by that client's CPU.

Acceptance

A formal, structured hand-over of the finished software system to the customer organization; typically involves test, analysis and assessment activities.

Software Development Lifecycle (SDLC)

A framework and a systematic process with associated tasks that are performed in a series of steps for building, deploying and supporting software applications. The lifecycle begins with planning and requirements gathering and ends with decommissioning and sunsetting the software. There are many different SDLCs— such as agile, DevSecOps, rapid prototyping—offering different approaches to defining and managing the software lifecycle.

Trapdoor or Backdoor

A hidden mechanism that bypasses access control measures. It is an entry point into an architecture or system that is inserted in software by developers, during the program's development to provide a method of gaining access into the program for modification and support reasons. It can also be inserted by an attacker, bypassing access control measures designed to prevent unauthorized software changes.

Software Capability Maturity Modeling (SW-CMM) and Assessment

A management process to foster the ongoing and continuous improvement of an organization's processes and workflows for developing, maintaining and using software.

Integrated Product and Process Development (IPPD)

A management technique that simultaneously integrates all essential acquisition activities through the use of multidisciplinary teams to optimize the design, manufacturing and supportability processes.

Knowledge Discovery in Database (KDD)

A mathematical, statistical and visualization method of identifying valid and useful patterns in data.

Data-centric Threat Modeling

A methodology and framework for focusing on the authorized movement, locations, execution, input and output of data within, from and into a system. These correspond with the security concepts of protecting data in transit, at rest (or in storage) and in use, and it provides a focus for carrying out the security decisions already made as the organization classifies and categorizes its data.

Botnets

A network of automated systems or processes (robots, or for short, bots) performing a specific function together, usually malicious. Botnets have greatly magnified the power and speed of malicious operations because they all work together toward achieving a malicious goal, and they have allowed for tuning and directing of operations in a way that was not possible with malicious programs in the past.

Refactoring

A partial or complete rewrite of a set of software to perform the same functions, but in a more straightforward, more efficient, or more maintainable form.

Malware

A program that is inserted into a system, usually covertly, with the intent of compromising the confidentiality, integrity or availability of the victim's data, applications or operating system or of otherwise annoying or disrupting the victim.

Software Libraries

A repository of pre-written code, classes, procedures, scripts and other programming elements. These may be provided by systems or applications vendors, from trustworthy third-party developers, developed in-house by the organization's programmers or available from various open-source sites.

Extensible Markup Language (XML)

A set of extensions to HTML that provide for data storage and transport in networked environments. XML is frequently used to interface web pages at the front end of a system (as they are displayed and used on client endpoint devices) with databases on back-end servers. XML is often embedded in the HTML files that make up the elements of web pages.

Integrated Development Environments (IDEs)

A set of software applications, their control procedures, supporting databases, libraries and toolsets that provide a programmer or a team of programmers what they need to specify designs; translate designs into source code; and then compile, test and integrate that code into a finished software product. Many IDEs support multiple programming languages and facilitate their use on the same project.

Common Object Request Broker Architecture (CORBA)

A set of standards that addresses the need for interoperability between hardware and software products residing on different machines across a network. CORBA provides for object location and use across a network.

Representational State Transfer (REST)

A software architectural style for synchronizing the activities of two (or more) applications running on different systems on a network. REST facilitates these processes exchanging state information, usually via HTTP or HTTPS.

Buffer Overflow

A source code vulnerability, which allows attempts to access data locations outside of the storage space to be allocated to the buffer. It can be triggered by attempting to input data that is larger than the input buffer being used.

Database Management System (DBMS)

A suite of application programs that typically manages databases and their environments. The heart of the DBMS is the database engine, a core application that performs and manages the basic functions of create, read, update and delete (CRUD) of data to and from the database, while also making data available for display or export to users, endpoints and other systems. The DBMS provides the structure for the data and some type of language and architecture for accessing and manipulating the data. The primary objective is to store data and allow users to interact with the data, but of course, in a secure way from a confidentiality, integrity and availability perspective.

DevOps

A systems development approach based on lean and agile principles in which business owners and the development, operations and quality assurance departments collaborate and work together to deliver software in a continuous manner that enables the business to more quickly react to market opportunities and reduce the time to include customer feedback into products that need to be developed.

Integrated Product Team (IPT)

A team of stakeholders and individuals that possess various different skills and who work together to achieve a defined process or product.

Sandbox

A testing environment which is logically, physically or virtually isolated from other environments, and in which applications or systems can be evaluated. Sandboxes can be used as part of development, integration or acceptance testing (so as to not interact with the production environments), as part of malware screening or as part of a honeynet.

Software (Quality) Assurance

A variety of formal and informal processes that attempt to determine whether a software application or system meets all of its intended functions, does not perform unwanted functions, is free from known security vulnerabilities and is free from insertion of other errors in its design, code, form, function and data.

Memory or Object Reuse

All systems must allocate memory or other resources as objects to requesting processes, which involves one process reusing such resources after the first using process has finished with them. Any data remaining in the object when it is reused is a potential security violation (i.e., a data remanence issue).

Agile Development

Agile development focuses on small team environments and focuses on collaborative, iterative learning, building, testing and deployment of capabilities to operational use. Agile is used to address the need for rapid software development and deployment cycles, perhaps many cycles per day. Agile development follows patterns of activities such as "scrum," "sprint" or "safe" to manage change and develop and deploy working, reliable and verifiable function.

Polymorphism

Allowing an object to "take many forms" based on how it is used means that changes to an object do not have to ripple out into every application's program that uses that object.

Static Application Security Testing (SAST)

Also known as static source code analysis, these are tools which examine the source code for a variety of errors such as data type errors, loop and structure bounds violations and unreachable code. Since SAST tools do not attempt to execute or simulate the execution of the code being analyzed, it is a bit of a misnomer to call them "testing" tools.

Arbitrary Code

Alternate sets of instructions and data that an attacker attempts to trick a processor into executing.

Advanced Persistent Threats (APTs)

An agent or organization of agents that plans, organizes and carries out a highly sophisticated attack against a target person, organization or industry over a period of months or possibly even years (thus "persistent"). APTs usually have a strategic goal in mind, which requires many steps in a concerted attack plan to achieve. The term APT may refer to the organization conducting the attack, to specific steps in such an attack as observed by a target or the entire attack sequence. An APT usually involves a phased set of activities, each of which may use dozens of different attack vectors in sequence or in tandem.

Modified Prototype Model

An approach to designing and building a system, which starts by building a simplified version of the entire application; this is released for review, with the feedback from the stakeholders used to improve the design of a second, much better version. This is repeated until the owner and stakeholders are satisfied with the final product.

"Living-Off- the-Land" Non-malware based Ransom Attack

An attack on a system in which illicit access to a system is then used to misuse systems capabilities in the pursuit of the attacker's agenda. The attacker does not use malware in such attacks, hence anti-malware defenses will not detect and prevent it.

Bots

An emerging and special class of mobile code. These employ limited machine- learning capabilities to assist with user requests for help or assistance, automation of or assistance with workflows, data input quality validation and other similar tasks.

Object

An encapsulation of a set of data and the methods that can be used to manipulate that data.

Secure Coding Guidelines and Standards

Best practices identified by a variety of software and security professionals, that when used correctly can dramatically reduce the number of exploitable vulnerabilities introduced during development that remain in the operationally deployed system.

Functional Requirements

Describes a finite task or process the system must perform. These are often directly traceable to specific elements in the final system's design and construction; formal configuration item audits should, for example, be able to identify a given unit of software with the specific functional requirements that dictated it be written and included into the product build.

ACID Test

Data integrity provided by means of enforcing atomicity, consistency, isolation and durability policies.

Network Database Model

Database model in which data elements and records are arranged in arbitrary linked fashion, such as lists, clusters or other network forms.

Hierarchical Database Model

Database model in which data elements and records are arranged in parent-child structures such as trees.

Relational Database Model

Database model in which data elements and records arranged in tables, and tables, are related (linked) to each other to implement a business logic needed to use data records of different structures or types together in the same activity.

Reputation Monitoring

Defensive tactic that uses the trust reputation of a website or IP address as a means of blocking an organization's users, processes or systems from connecting to a possible source of malware or exploitations. Possibly one's only effective defense against zero-day exploits. This involves monitoring URLs, domains, IP addresses or other similar information in an attempt to separate the trustworthy sites from the less-than-trustworthy. Dark web addresses, for example, would almost invariably be non-trustworthy.

Object-oriented Programming (OOP)

Defines an object to be a set of software that offers one or more methods, internal to the object, that software external to that object can request be performed. Each method may require specific inputs and resources and may produce a specified set of outputs.

Spiral Method

Improved waterfall development process, which provides for a cycle of Plan, Do, Check and Act (PDCA) sub-stages at each phase of the SDLC.

Procedural Programming

Emphasizes the logical sequence or flow of steps to be performed. A "procedure" is a set of software that performs a particular function, requires specific input data (and possibly other resources) and produces a specific set of outputs. Outputs may include error signals when appropriate. Procedures can invoke ("call") other procedures.

Encapsulation

Enforcement of data hiding and code hiding during all phases of software development and operational use. Bundling together data and methods is the process of encapsulation; its opposite process may be called unpacking or revealing. Also used to refer to taking any set of data and packaging it or hiding it in another data structure, as is common in network protocols and encryption.

Intermediate Code

Expressing a program's required function in a form that is somewhere between human- readable source code and binary sets of values that can be loaded into memory and executed by a CPU. The most common use of intermediate code is to provide machine independence or portability for a program, such as Java does.

Accreditation (also Security Accreditation)

Formal declaration by a designated accrediting authority (DAA) that an information system is approved to operate at an acceptable level of risk, based on the implementation of an approved set of technical, managerial and procedural safeguards.

Level of Abstraction

How close the description (in source code, design documents or any other form) represents one-to-one the details of the underlying object, system or component. Lower-level abstractions generally have far more fine-grain detail than higher level ones.

Data Type Enforcement

How well (or how poorly) a language protects the programmer from trying to perform operations on dissimilar types of data, or in ways that would lead to erroneous results.

Nonfunctional Requirements

Identifies broad characteristics of the system as a whole. These usually do not align with a clearly identified subset of systems elements. Typically, many safety, security, privacy and resiliency needs have been deemed nonfunctional by their systems' analysts and engineers, and as such, configuration audits cannot identify whether any given software unit contributes to such nonfunctional requirements, or indeed if any of them do.

Logic Bombs

Malware inserted into a program which will activate and perform functions that suit an attacker's needs at some later date or when certain conditions are met.

Trojans

Malware that inserts backdoors or trapdoors into other programs or systems. The malware may or may not be disguised as some useful or entertaining application.

Ransomware

Malware used for the purpose of facilitating a ransom attack.

Malformed Input Attack

Many of the common source code errors in software can lead to that software failing to correctly handle input data, singly or in combination, that exceeds logical range checks, is contradictory or inconsistent, or is unauthorized. This can result in an arbitrary code execution, a misdirection of the program to other resources or locations or otherwise reveal additional information useful to an attacker.

Citizen Programmers

Members of the organization who codify work-related knowledge, insights and ideas into varying degrees of reusable software- like forms, often using extensibility features found in most commercial software apps. The very ad hoc nature of these pieces of functionality is extremely difficult to manage, control, verify or assess. In almost all cases, these are beyond the reach and visibility of the organization's software quality, configuration management or security assessment processes. Such "citizen programming" is often done with little regard to security requirements and can pose a significant risk to some organizations.

Application Programming Interfaces (APIs)

Mobile code mechanisms that provide ways for applications to share data, methods or functions over a network. Usually implemented either in XML or JavaScript Object Notation (JSON). A reference to a software access point or library function with a well-defined syntax and well-defined functionality.

Inheritance

Provides mechanisms by which objects that are members of a class (a higher level grouping of like objects) can make use of specific characteristics of the class. Files in a read-only folder, for example, generally will also inherit the folder's read-only attribute.

Data Protection or Data Hiding

Restricts or prevents one software unit from reading or altering the private data of another software unit.

Runtime Application Security Protection (RASP)

Security agents (small code units) built into an application by the developer, which can detect a given set of security violations; upon such detection, the RASP agents can cause the application to terminate, or take other protective actions.

Commercial Off- the-Shelf (COTS)

Software elements, usually applications, that are provided as finished products not intended for alteration by the end user. Most COTS applications are available as host-based, endpoint-based or platform- based services, and support user extensibility by means of non-programming tools, scripts, macros and configuration parameters. COTS can also include firmware and hardware elements.

Scanners (Anti- malware)

Software that examines a suspected file or set of files for the presence of malware, by signature analysis, activity monitors, heuristics and machine-learning techniques or change analysis.

Spyware and Adware

Software that performs a variety of monitoring and data gathering functions. Also known as potentially unwanted programs or applications (PUPs or PUAs), these may be used in monitoring employee activities or their use of systems resources (spyware); adware facilitates advertising efforts. Both may be legitimate and authorized by systems owners to be in use or may be unwanted intruders in these systems.

Object-oriented Security

Systems security designs that make use of object-oriented programming characteristics such as encapsulation, inheritance, polymorphism and polyinstantiation.

Regression Testing

Testing of a system to ascertain whether recently approved modifications have changed its performance of other approved functions or has introduced other unauthorized behaviors.

Interactive Application Security Testing (IAST)

Testing that combines or integrates SAST and DAST to improve testing and provide behavioral analysis capabilities to pinpoint the source of vulnerabilities.

Security Assessment

Testing, inspection and analysis to determine the degree to which a system meets or exceeds the required security posture. This may assess whether an as- built system meets the requirements in its specifications, or whether an in-use system meets the current perception of the real-world security threats the system may be facing.

Aggregation

The ability to combine non-sensitive data from separate sources to create sensitive information.

Executable Code, Object Code

The binary representation of the machine language instruction set that the CPU and other hardware of the target computer directly execute.

Trusted Computing Base (TCB)

The collection of all the hardware, software and firmware components within an architecture that is specifically responsible for security and the isolation of objects. TCB is a term that is usually associated with security kernels and the reference monitor.

Certification

The comprehensive technical security analysis of the system to ensure that it meets all applicable security requirements.

Knowledge Management

The efficient and effective management of information and associated resources in an enterprise to drive business intelligence and decision-making. It may include workflow management, business process modeling, document management, databases and information systems and knowledge-based systems.

Defensive Programming

The style of program design and coding that translates the business logic about acceptable and harmful input into code, which allows processing of acceptable inputs, but safely blocks attempts to input (or inject) harmful inputs. The lack of adequate defensive programming measures can result in an arbitrary code execution, a misdirection of the program to other resources or locations or otherwise reveal more information useful to an attacker.

Continuous Integration and Continuous Delivery (CI/CD)

Workflow automation processes and tools that attempt to reduce, if not eliminate, the need for manual communication and coordination between the steps of a software development process.


Set pelajaran terkait

Chapter 3 - Analyzing Business Transactions Using T Accounts

View Set

Starting Out in C# - Chapter 3 Questions

View Set

Digital Email Marketing Strategies

View Set

Intermediate Accounting - Chapter 5

View Set

ACT study guide Math: Equation of a Line

View Set