Domain 8: Software Development Security Flashcards
Learn vocabulary related to secure coding, development practices, and software vulnerabilities.
Define:
ACID Transaction
A database transaction type characterized by Atomicity, Consistency, Isolation, and Durability, key for maintaining data integrity.
A concept used in database management to ensure that all database transactions are processed reliably. ACID stands for Atomicity (transactions are all-or-nothing), Consistency (transactions must leave the database in a consistent state), Isolation (transactions are processed independently), and Durability (once a transaction is committed, it is permanently recorded). This framework is crucial for maintaining data integrity across a variety of applications.
For more information, view this lecture on Databases - part 4.. Or visit this Wikipedia page.
Define:
Adversarial Machine Learning
Adversarial Machine Learning studies techniques used by attackers to trick or manipulate machine learning models, highlighting vulnerabilities and guiding defenses against deceptive or disruptive inputs.
In adversarial machine learning, attackers craft inputs designed to exploit model flaws, forcing misclassifications or unintended outcomes. Attack vectors can include poisoning training data, introducing malicious data in real-time, or reverse-engineering model details to generate harmful examples. Defenses involve robust training methods, model interpretability, and continuous monitoring of systems. By studying such strategies, security teams can identify weaknesses and implement effective countermeasures. This field is crucial for protecting AI-driven applications across industries, from healthcare and finance to autonomous systems.
Or visit this Wikipedia page.
Define:
Agile
A flexible and iterative development methodology that values adaptability, customer satisfaction, and rapid, continuous delivery, often incorporating security best practices.
A methodology often used in software development that emphasizes flexibility, collaboration, customer satisfaction, and rapid delivery. Rather than planning the entire project in detail from the start, Agile encourages adaptive planning, evolutionary development, early delivery, and continuous improvement. This approach can significantly benefit security practices by integrating security considerations into the development process from the beginning and enabling rapid response to changing threats.
For more information, view this lecture on Software development methodologies part 1.. Or visit this Wikipedia page.
Define:
API Conflicts
Issues arising from an API’s unexpected behavior due to overlapping functions, inconsistencies, or version incompatibilities, addressed by careful design and testing.
Situations that occur when an API does not operate as expected, potentially due to overlapping functionalities, inconsistencies among different API calls, or version mismatches. Resolving API conflicts often requires careful design, testing, and version control to prevent and address these issues.
Define:
API Endpoints
The specific interaction points between an API and the software that uses it, typically defined by URLs in web APIs for different functions and data operations.
The specific points of interaction or communication between an API and the software components that use it. In the context of a web API, an endpoint typically refers to a specific URL where an API can receive and send data. Each endpoint corresponds to a specific function or data resource, and it can accept certain types of requests (e.g., GET, POST, PUT, DELETE in the case of a RESTful API) to perform operations like retrieving, adding, modifying, or deleting data.
For more information, view this lecture on Software development methodologies part 4..
Define:
Applet
A small program embedded in a web page for interactive experiences, traditionally Java-based but now less common due to security concerns and browser plugin support decline.
A small, client-side program that is typically embedded within a web page to provide interactive features that execute in the context of a user’s browser. Historically, Java applets were common, but due to various security concerns and the phasing out of plugin support by modern web browsers, the use of Java applets has declined significantly. Current web applications now favor using HTML5, JavaScript, or WebAssembly to create dynamic and interactive user experiences directly in the browser without the need for additional plugins.
For more information, view this lecture on Web architecture and attacks.. Or visit this Wikipedia page.
Define:
Application
A program designed to help users perform specific tasks, varying in scope from large systems like enterprise resource planning software to individual productivity tools.
In the context of computing, an application refers to a software program that enables users to perform specific tasks or activities. Applications can range from large systems such as enterprise resource planning (ERP) software to smaller tools such as word processors or games. They are designed to interact with users and can manipulate data to produce desired outcomes based on the user’s input and the application’s own logic.
For more information, view this lecture on Designing security into our software.. Or visit this Wikipedia page.
Define:
Application Acquisition Review
An evaluation of a software application’s security and suitability prior to acquisition, assessing factors like compliance, vulnerabilities, and vendor reliability.
A process or a stage in the software procurement process where the suitability and security aspects of a software application are evaluated before its acquisition. The review can include checks for software’s compliance with security standards, its compatibility with existing systems, potential vulnerabilities, and the reputation and reliability of the software vendor. The goal is to ensure the software meets the organization’s requirements and doesn’t introduce unacceptable risks.
For more information, view this lecture on Buying software from other companies..
Define:
Application Architecture
The structural design of a software application, defining the interaction of components to meet business requirements and ensure functionality, security, and manageability.
The high-level structure of a software application, encompassing the way its components interact and how they serve the user’s needs. It involves designing the components and their relationships based on business requirements and constraints to ensure the application’s functionality, performance, security, and manageability.
Or visit this Wikipedia page.
Define:
Application Benchmarking
Testing an application’s performance to identify any issues and establish a standard for future evaluations, ensuring reliability and efficiency under various conditions.
The practice of testing an application under specific conditions to assess its performance characteristics, such as responsiveness, throughput, and resource usage. It allows the identification of bottlenecks or vulnerabilities in the system and provides a standard of performance against which future changes can be evaluated. This process aids in ensuring the reliability, efficiency, and robustness of the application under various scenarios.
Define:
Application Development Review
Assessing an application during development to ensure it meets requirements and standards, focusing on aspects like design, coding, testing, and security.
The process of assessing an application during its development stage to ensure it meets specified requirements and standards. The review can cover various aspects, including design, coding, testing, and security practices. The aim is to detect and rectify any issues or vulnerabilities early in the development lifecycle, enhancing the quality and security of the final product.
Define:
Application Hardening
The process of securing an application by reducing its attack surface and minimizing potential vulnerabilities through techniques such as removing unused features and regularly updating software.
This is the process of securing an application by reducing its attack surface and minimizing potential vulnerabilities. Techniques include removing unused features, disabling unnecessary services, configuring robust security settings, and regularly updating the software to patch any known security issues. By hardening an application, organizations can better protect their systems and data from unauthorized access or exploitation.
For more information, view this lecture on Asset tracking and hardware hardening.. Or visit this Wikipedia page.
Define:
Application Implementation Review
An assessment to ensure that a newly deployed application meets intended objectives and complies with organizational policies and security standards, examining its configuration and performance.
An assessment conducted to ensure that a newly deployed application meets its intended objectives and adheres to organizational policies and security standards. The review may involve examining the application’s configuration, integration with other systems, and overall performance. This evaluation helps identify any issues or vulnerabilities that may have been introduced during deployment so they can be addressed promptly.
Define:
Application Programming Interface
(API)
A set of protocols and tools for building software applications that specify how different software components should interact, serving as a bridge for program communication.
A set of protocols and tools for building software and applications. An API specifies how software components should interact, serving as an intermediary that allows different programs to communicate with each other. They are often thought of as a translator who sits in between different applications and does not speak the same language.
For more information, view this lecture on Secure system design concepts.. Or visit this Wikipedia page.
Define:
Application Security
Practices aimed at protecting applications from threats by ensuring the confidentiality, integrity, and availability of the data they process and store, using measures like access control and encryption.
The practice of protecting applications from threats and vulnerabilities in order to ensure the confidentiality, integrity, and availability of the information they process and store. It is a crucial aspect of cyber security and involves various measures such as access control, encryption, and vulnerability management. Examples of application security measures include firewalls, intrusion detection systems, and password policies.
For more information, view this lecture on Secure design principles.. Or view this lecture on Web architecture and attacks.. Or visit this Wikipedia page.
Define:
Application Software Tracing and Mapping
The process of examining an application’s structure and behavior to detect vulnerabilities, inefficiencies, or bottlenecks, crucial for maintaining application performance and security.
A process of analyzing and visualizing the behavior and structure of software applications. It helps in understanding the flow and interdependencies within an application, aiding in the detection of vulnerabilities, bottlenecks, or inefficiencies. Given the complexity of modern applications, tracing and mapping can be essential tools for maintaining application performance and security.
For more information, view this lecture on SCA - Software Composition Analysis.
Define:
Application System
A set of cooperating applications that collectively provide a specific function or service, often involving user interfaces, databases, and processes where maintaining security is vital.
This consists of a group of applications working together to deliver a certain function or service, often involving multiple user interfaces, databases, and processes. These systems can be complex and interconnected, making their security crucial. Ensuring the integrity, confidentiality, and availability of data in these systems is a fundamental part of maintaining secure operations.
Define:
Application-Level Encryption
Encrypting data at the application level, rather than at the network or transport level, to protect sensitive information and ensure confidentiality, integrity, and availability.
The process of encrypting data at the application level rather than at the network or transport level. It is used to protect sensitive information and ensure confidentiality, integrity, and availability. Examples include encrypting a password before storing it in a database, encrypting a file before sending it over the Internet, or encrypting credit card information before processing a transaction.
Define:
Approved APIs
Application Programming Interfaces that have been vetted and sanctioned for use within an environment, meeting security, reliability, and performance standards.
These are Application Programming Interfaces that have been vetted and approved for use within a certain environment. They are recognized as meeting certain criteria for security, reliability, and performance. Using approved APIs is important to maintain the security of applications and systems, as unauthorized or malicious APIs can introduce vulnerabilities or cause data breaches.
For more information, view this lecture on Secure system design concepts..
Define:
Assembly Language
A low-level programming language that closely represents a computer’s machine code, allowing for direct control of hardware in a more readable format for humans.
A low-level programming language for a computer or other programmable device in which there is a very strong correspondence between the language and the architecture’s machine code instructions. Each assembly language is specific to a particular computer architecture, in contrast to high-level programming languages, which are generally portable across multiple systems. Assembly language is used in reverse engineering and malware analysis, as it provides more direct control of system processes.
For more information, view this lecture on Programming Concepts - Part 1.. Or view this lecture on Network and Software forensics.. Or visit this Wikipedia page.
Define:
Backdoor
A method of bypassing normal security mechanisms to gain unauthorized system access, potentially inserted intentionally for maintenance or exploited by attackers.
A method, often covert, that bypasses normal authentication or encryption in a system, allowing unauthorized access or control. Typically associated with malicious intent, these can be inserted intentionally for maintenance or troubleshooting but may also be exploited by adversaries to gain unpermitted access, which can lead to information theft, system damage, or other adverse impacts.
For more information, view this lecture on Software vulnerabilities and Attacks.. Or view this lecture on Penetration testing.. Or visit this Wikipedia page.
Define:
Blockchain
A distributed ledger technology securing records with cryptography, facilitating secure and transparent data storage and verification in decentralized systems like digital currencies.
A distributed database that maintains a continuously growing list of records (blocks) secured by cryptography. It is used in digital currencies and distributed systems to provide a secure and transparent way of storing and verifying data. For example, a blockchain network can be used to record and verify transactions in a decentralized manner without the need for a central authority.
For more information, view this lecture on Virtualization, Cloud, and Distributed Computing - Part 5. Or visit this Wikipedia page.
Define:
Buffer
A temporary storage area for data in transit, used to manage differences in processing rates, critical for computing and networking but a potential vulnerability if not managed correctly.
A temporary storage area for data while it is being transferred from one place to another. Typically, this is used when there is a difference between the rate at which data is received and the rate at which it can be processed or forwarded. Buffers are crucial components in many aspects of computing and networking. However, when not properly managed, buffers can become a point of vulnerability, leading to potential exploits such as buffer overflow attacks.
For more information, view this lecture on Software vulnerabilities and Attacks.. Or visit this Wikipedia page.
Define:
Buffer Overflow Attack
An exploit that uses buffer overflow vulnerabilities to inject and execute malicious code, leading to system crashes or unauthorized control, highlighting the need for secure coding.
A form of security exploit that takes advantage of buffer overflow vulnerabilities in a system. By sending more data to a buffer than it can handle, an attacker can overwrite adjacent memory locations and potentially inject and execute malicious code. This can lead to a variety of harmful outcomes, from crashing the system to gaining unauthorized access or control. These attacks underscore the importance of proper memory management and secure coding practices in systems and applications.
For more information, view this lecture on Software vulnerabilities and Attacks.. Or visit this Wikipedia page.