Learn Secure Software Requirements (CSSLP) with Interactive Flashcards
Master key concepts in Secure Software Requirements through our interactive flashcard system. Click on each card to reveal detailed explanations and enhance your understanding.
Functional Security Requirements and Use Cases
In the CSSLP Secure Software Requirements domain, functional security requirements define what the software must do to protect confidentiality, integrity, and availability, as opposed to non-functional requirements that describe how well it performs. They are derived from business objectives, regulatory mandates, risk assessments, and organizational policies, and they are expressed as testable statements. Typical functional security requirements include authentication (verifying user identity through passwords, multi-factor methods, or certificates), authorization (enforcing role-based or attribute-based access control and least privilege), auditing and logging (recording security-relevant events for accountability and forensics), session management (secure tokens, timeouts, and re-authentication), data protection (encryption at rest and in transit, key management, and secure disposal), input validation and output encoding (preventing injection and cross-site scripting), and error handling (failing securely without leaking sensitive information). Each requirement should be specific, measurable, achievable, relevant, and time-bound so that it can be traced through design, implementation, and testing.
Use cases are a requirements-gathering technique that describes how legitimate actors interact with the system to achieve goals. A use case identifies the actor, preconditions, the main success scenario, alternate flows, and postconditions. Security use cases extend this by capturing the protective behavior the system must exhibit, such as a user logging in with multi-factor authentication or an administrator reviewing audit logs. Their counterpart, misuse or abuse cases, model how a hostile actor might attempt to subvert the system, for example, brute-forcing credentials or tampering with a session token. By pairing use cases with misuse cases, requirements analysts expose threats early, define mitigating controls, and translate them into additional functional security requirements. This approach supports traceability, improves communication between stakeholders and developers, and ensures that security is built into the software from the start rather than bolted on later, reducing cost and vulnerability exposure throughout the lifecycle.
Non-Functional Security Requirements
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, Non-Functional Security Requirements (NFSRs) define how a system should behave securely rather than what specific security functions it performs. While functional security requirements describe explicit features such as login mechanisms, access control lists, or encryption of a particular field, non-functional security requirements express quality attributes, constraints, and operational expectations that the software must satisfy to remain secure throughout its lifecycle.
Key categories of NFSRs include confidentiality, integrity, and availability targets (the CIA triad), expressed as measurable properties. For example, an availability requirement might state that the system must maintain 99.9% uptime and resist denial-of-service conditions, while an integrity requirement may mandate tamper-evident logging. Other important categories are authentication and authorization strength (e.g., password complexity, multi-factor support, session timeout limits), auditing and accountability (retention periods, non-repudiation of transactions), and session management rules.
NFSRs also cover performance and scalability under security load, such as acceptable latency when encryption is enabled, and resilience or recoverability expectations like Recovery Time Objective (RTO) and Recovery Point Objective (RPO). Maintainability and configurability requirements ensure security settings can be updated without redeploying code, supporting secure defaults and least privilege. Compliance and regulatory constraints, including PCI DSS, HIPAA, GDPR, or FIPS 140-3, are frequently expressed as non-functional requirements because they impose standards, certifications, and processes rather than discrete features. Usability and privacy requirements, including data minimization and consent handling, also fall into this group.
From a CSSLP perspective, NFSRs must be elicited early through stakeholder interviews, threat modeling, misuse and abuse cases, and policy decomposition. They should be specific, measurable, attainable, realistic, and traceable (SMART), documented in a requirements traceability matrix, and validated through testing such as performance, penetration, and compliance testing. Well-defined NFSRs reduce costly rework, guide architectural decisions, and ensure the final product meets organizational risk tolerance and legal obligations.
Regulatory and Legal Compliance Requirements
In the CSSLP domain of Secure Software Requirements, Regulatory and Legal Compliance Requirements refer to the obligations that software must satisfy because of laws, regulations, industry standards, and contractual agreements. These requirements are externally imposed rather than chosen by the development team, and failing to meet them can result in fines, lawsuits, loss of certifications, reputational damage, or even criminal liability for the organization.
Security professionals must identify which regulations apply based on the industry, geography, data types handled, and customer base. Common examples include GDPR for personal data of EU residents, HIPAA for protected health information in the United States, PCI DSS for payment card data, SOX for financial reporting integrity, GLBA for financial institutions, FISMA for US federal systems, and COPPA for children's data. Each imposes specific controls such as encryption, access control, audit logging, breach notification, data retention limits, and consent management.
The key practice is translating these high-level legal mandates into concrete, testable software requirements. For instance, a GDPR obligation for 'the right to erasure' becomes a functional requirement to securely delete a user's personal data upon request, including from backups and third-party processors. Requirements should be traceable from the regulation to design, implementation, and verification artifacts, which supports audits and demonstrates due diligence.
Compliance requirements also address privacy by design, data classification, cross-border data transfer restrictions, export controls on cryptography, intellectual property and licensing of third-party and open-source components, and accessibility laws. Organizations often map multiple overlapping regulations into a unified control framework to avoid duplication.
Importantly, CSSLP emphasizes that compliance is a minimum baseline, not a guarantee of security. Software can be fully compliant yet still vulnerable. Therefore, regulatory requirements should be integrated with risk-based security requirements early in the lifecycle, continually reviewed as laws evolve, and validated through testing, legal review, and documented evidence to prove ongoing adherence.
Industry-Specific Compliance Requirements
Within the CSSLP Secure Software Requirements domain, industry-specific compliance requirements are the legal, regulatory, and contractual obligations imposed on software because of the sector in which it operates or the type of data it processes. Unlike general security best practices, these mandates are externally enforced, carry penalties for non-conformance, and must be captured early as explicit, testable security requirements rather than discovered late as costly defects.
Key examples include: PCI DSS for any application that stores, processes, or transmits payment card data, which drives requirements such as encryption of cardholder data, strong access control, secure coding practices, and regular vulnerability testing; HIPAA/HITECH for healthcare software handling protected health information, requiring confidentiality, integrity, audit logging, and breach notification controls; Sarbanes-Oxley (SOX) for financial reporting systems, emphasizing integrity of financial data, change management, and segregation of duties; GLBA for financial institutions protecting customer nonpublic personal information; FISMA and NIST SP 800-53 for U.S. federal systems, mandating categorized security controls; GDPR and other privacy laws for personal data, imposing data minimization, consent, right to erasure, and privacy by design; and sector frameworks such as NERC CIP for energy, FERPA for education, and FDA guidance for medical device software.
For the CSSLP, the practical workflow is: identify applicable regulations during requirements gathering (often with legal and compliance stakeholders), decompose them into functional and non-functional security requirements (e.g., 'passwords must be hashed with a salted, approved algorithm'), map each requirement to a control and a verification method, and maintain traceability so auditors can demonstrate compliance. Requirements should also address data classification, retention, residency, and reporting duties. Because regulations evolve and may conflict across jurisdictions, teams should treat compliance as a minimum baseline, not the ceiling of security, and periodically reassess requirements throughout the software lifecycle.
Company-Wide Development Requirements
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, Company-Wide Development Requirements refer to the organization-level security mandates that apply uniformly to every software project, regardless of team, platform, or business unit. Rather than allowing each project to define security from scratch, the enterprise establishes a baseline that all development efforts must inherit. These requirements typically originate from corporate security policy, risk appetite, regulatory obligations, and lessons learned from past incidents. Key elements include: (1) Secure coding standards, such as mandated use of approved languages, frameworks, and libraries, prohibition of dangerous functions, and adherence to guidelines like OWASP or CERT; (2) Authentication and authorization standards, requiring integration with enterprise identity providers, single sign-on, multifactor authentication, and role-based access control; (3) Cryptographic requirements, specifying approved algorithms, key lengths, key management practices, and prohibition of deprecated ciphers; (4) Data protection and privacy rules, defining classification schemes, encryption at rest and in transit, data retention, and handling of personally identifiable information; (5) Logging, auditing, and monitoring requirements that ensure security events are captured in a consistent format and forwarded to centralized security operations; (6) Secure configuration and deployment baselines, including hardened build environments, dependency and third-party component vetting, and software composition analysis; (7) Process requirements such as mandatory threat modeling, static and dynamic testing, code review, and security gate approvals before release; and (8) Compliance mappings to regulations like PCI DSS, HIPAA, GDPR, or SOX that affect the whole organization. The value of company-wide requirements lies in consistency, reduced duplication of effort, measurable governance, and a shared security culture. Security professionals must ensure these requirements are documented, traceable to individual project requirements, communicated through training, and periodically reviewed so they evolve with emerging threats and business changes.
Data Ownership, Owners and Custodians
In the CSSLP Secure Software Requirements domain, data ownership addresses the question of who is accountable for the information a software system processes, stores, and transmits. Establishing ownership early in the lifecycle ensures that security requirements such as classification, access control, retention, and privacy are driven by business accountability rather than left to developers to guess.
A data owner is typically a senior business stakeholder, not an IT or development person, who is ultimately responsible and accountable for a specific set of data. The owner determines the data's classification level (for example, public, internal, confidential, or restricted), defines who may access it and under what conditions, approves exceptions, decides on retention and disposal rules, and accepts residual risk. Because ownership carries accountability, it cannot be delegated away even if the day-to-day tasks are performed by others. In requirements engineering, the owner's decisions become the basis for confidentiality, integrity, and availability requirements, as well as regulatory and contractual obligations tied to the data.
A data custodian, by contrast, is responsible for the technical and operational protection of the data according to the owner's direction. Custodians are usually IT operations, database administrators, cloud providers, or system administrators. Their duties include implementing access controls, encryption, backups, patching, logging, monitoring, and secure disposal. Custodians execute controls; they do not decide policy. Developers and the software itself often act in a custodial capacity when handling data at rest, in transit, or in use.
Separating these roles supports separation of duties and clear accountability. During requirements gathering, the CSSLP professional should identify each data element, document its owner, map the custodial responsibilities, and translate the owner's protection needs into verifiable security requirements. This alignment reduces ambiguity, supports compliance with laws such as GDPR or HIPAA, and ensures that security controls reflect the true business value and sensitivity of the data.
Data Labeling by Sensitivity and Impact
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, data labeling by sensitivity and impact is the practice of classifying and tagging data based on how confidential it is and how severe the consequences would be if it were disclosed, altered, or made unavailable. This classification is a foundational requirement activity because it drives nearly every downstream security control decision in the software lifecycle.
Sensitivity labeling categorizes data according to confidentiality needs. Common schemes include Public, Internal, Confidential, and Restricted (or government-style Unclassified, Confidential, Secret, Top Secret). Each label implies handling rules: for example, Restricted data might require encryption at rest and in transit, strict access control, and audit logging, while Public data may need only integrity protection.
Impact labeling evaluates the potential harm from a loss of confidentiality, integrity, or availability (the CIA triad). Frameworks such as FIPS 199 define impact levels as Low, Moderate, or High. Low impact means limited adverse effects; Moderate means serious adverse effects; High means severe or catastrophic effects on operations, assets, individuals, or the organization. Impact assessment considers regulatory exposure (GDPR, HIPAA, PCI DSS), financial loss, reputational damage, and safety consequences.
Together, sensitivity and impact labels help the software team derive concrete security requirements. They determine data retention and disposal rules, masking and tokenization needs, encryption strength, logging requirements, and privacy controls like data minimization. Labels also support separation of duties, least privilege enforcement, and secure defaults in design.
From a CSSLP perspective, labeling must be performed early, documented in a data classification policy, and consistently applied through metadata or tagging so that controls can be automated and verified. Data owners are responsible for assigning labels, while custodians implement protection. Proper labeling ensures resources are proportionate to risk, avoids over-protecting trivial data or under-protecting critical data, and provides traceability from requirements to testing and compliance evidence.
Data Lifecycle Requirements
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, Data Lifecycle Requirements define how data must be protected at every stage of its existence, from creation to final disposal. The premise is that data is the primary asset software handles, and its protection needs change as it moves through different states and phases. Security requirements must therefore be elicited and documented for each phase rather than treated as a single, static control.
The data lifecycle is typically described in phases: creation or collection, storage, use or processing, sharing or transmission, archival, and destruction. At creation, requirements address classification, labeling, data minimization, and consent or lawful basis for collection. During storage, requirements specify encryption at rest, access control, integrity protection, and secure configuration of repositories. In the usage phase, requirements cover authorization, least privilege, masking or tokenization, logging, and prevention of unauthorized modification. For sharing and transmission, requirements define encryption in transit, secure protocols, data loss prevention, and controls on third-party disclosure. Archival requirements address long-term confidentiality, integrity verification, media protection, and retention schedules driven by legal, regulatory, or business obligations. Finally, destruction requirements mandate secure deletion, sanitization, degaussing, or physical destruction so that data cannot be recovered once it is no longer needed.
Data classification underpins all of these requirements, because the sensitivity of data determines the strength of controls applied. Retention requirements balance the need to keep data for compliance, auditing, or forensics against the risk and cost of holding it longer than necessary. Privacy regulations such as GDPR, HIPAA, and PCI DSS strongly influence these requirements, especially around minimization, purpose limitation, and the right to erasure.
For the CSSLP, the key takeaway is that security and privacy requirements must be mapped to each lifecycle stage, documented early in the SDLC, and verified through testing so that confidentiality, integrity, and availability are maintained from cradle to grave.
Handling PII and Publicly Available Information
In the CSSLP domain of Secure Software Requirements, handling Personally Identifiable Information (PII) and publicly available information is about defining data protection requirements early so that privacy is designed into the software rather than bolted on later.
PII is any data that can identify an individual directly (name, Social Security number, biometric identifiers) or indirectly when combined with other data (date of birth, ZIP code, IP address, device identifiers). Because PII carries legal, regulatory, and reputational risk, requirements must address its entire lifecycle: collection, use, storage, transmission, retention, and disposal. Key requirement considerations include data minimization (collect only what is necessary), purpose limitation (use data only for the stated purpose), consent and notice, encryption at rest and in transit, strict access controls, anonymization or pseudonymization where feasible, logging of access, breach notification capabilities, and secure deletion at end of retention. Regulatory drivers such as GDPR, HIPAA, CCPA, GLBA, and PCI DSS translate into specific functional and non-functional requirements, so data classification is a prerequisite activity.
Publicly available information is data lawfully accessible to anyone, such as public records, published directories, or content on open websites. While it may seem harmless, requirements analysts must recognize the aggregation risk: combining individually public data points can reconstruct a profile that becomes sensitive PII. Therefore, requirements should still govern how public data is sourced, validated, combined, and shared, and should respect terms of use and jurisdictional laws that may restrict reuse.
From a CSSLP perspective, the software requirements phase should produce clear data classification schemes, privacy impact assessments, traceable privacy requirements, and acceptance criteria that can later be verified through testing. Treating PII with confidentiality, integrity, and availability controls proportional to its sensitivity, and treating public data with awareness of aggregation and provenance, ensures the resulting software meets both security and privacy obligations.
Data Collection Scope and Minimization
Data Collection Scope and Minimization is a foundational privacy and security principle within the CSSLP Secure Software Requirements domain. It dictates that software should collect, process, and retain only the personal or sensitive data that is strictly necessary to fulfill a clearly defined, legitimate business purpose—nothing more. This principle, often summarized as 'collect only what you need, keep it only as long as you need it,' directly reduces the attack surface and the potential impact of a breach: data that was never collected cannot be stolen, leaked, or misused.
Defining the collection scope begins during requirements gathering. Analysts work with stakeholders, privacy officers, and legal teams to identify each data element, justify why it is needed, classify its sensitivity, and document its purpose. Any data lacking a defensible purpose should be eliminated from the design. This process often involves creating data flow diagrams and data inventories that trace where information enters the system, how it is transformed, where it is stored, and when it is destroyed.
Minimization extends beyond initial collection to include limiting the number of copies, restricting access to the fewest roles possible, applying anonymization or pseudonymization where full identifiers are unnecessary, and establishing retention schedules that trigger secure deletion. For example, an e-commerce application may need a shipping address but not a date of birth; a payment system should tokenize card numbers rather than store them.
Regulatory frameworks such as GDPR (Article 5(1)(c)), CCPA, HIPAA, and PCI DSS explicitly mandate or strongly encourage data minimization, making it both a compliance and a security requirement. Failing to minimize increases liability, storage costs, and breach notification obligations.
For the CSSLP practitioner, embedding minimization into requirements ensures privacy by design, supports the principle of least privilege, simplifies secure architecture decisions, and demonstrates due diligence. It should be captured as explicit, testable security requirements that are verified through design reviews, code analysis, and privacy impact assessments throughout the software lifecycle.
Anonymization and Pseudonymization Requirements
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, anonymization and pseudonymization requirements address how personal and sensitive data must be protected throughout the software lifecycle so that privacy obligations are met by design rather than retrofitted later.
Anonymization is the irreversible process of altering personal data so that an individual can no longer be identified, directly or indirectly, by any party using reasonable means. Techniques include data masking, generalization, suppression, aggregation, noise addition, and k-anonymity models. Once data is truly anonymized, it typically falls outside the scope of privacy regulations such as GDPR, which makes anonymization attractive for analytics, testing, and research datasets. However, requirements must specify re-identification risk thresholds, because combining anonymized data with external sources can sometimes reveal identities.
Pseudonymization replaces identifying fields with artificial identifiers, tokens, or hashes while retaining a separately stored mapping that allows re-identification under controlled conditions. It is reversible, so the data remains personal data under most regulations, but it significantly reduces risk and is explicitly encouraged by GDPR Article 32 as a security measure. Requirements should define how pseudonyms are generated (e.g., keyed hashing or tokenization), where the key or lookup table is stored, who may access it, and how it is rotated and destroyed.
From a requirements engineering perspective, a CSSLP should ensure that functional and non-functional requirements explicitly state: which data elements require de-identification, the method to apply, the stage at which it occurs (collection, storage, transfer, processing, or disposal), legal and contractual drivers (GDPR, HIPAA, CCPA, PCI DSS), acceptable re-identification risk, logging and auditing of re-identification events, and use of de-identified data in non-production environments such as development and testing. These requirements must be traceable to data classification policies, threat models, and privacy impact assessments, and they should be verifiable through testing so that privacy by design and data minimization principles are demonstrably satisfied.
User Rights, Preferences and Right to Be Forgotten
Within the CSSLP Secure Software Requirements domain, User Rights, Preferences, and the Right to Be Forgotten are privacy-driven requirements that must be identified early and translated into functional and non-functional specifications. They originate from regulations such as GDPR, CCPA, and similar data-protection laws, and from organizational privacy policies.
User Rights refer to the entitlements individuals hold over their personal data. These typically include the right to be informed about collection and processing, the right of access (obtaining a copy of their data), the right to rectification (correcting inaccuracies), the right to restrict or object to processing, and the right to data portability (receiving data in a machine-readable format). Secure software must therefore include features such as authenticated self-service data access, export functions, audit trails documenting requests, and strong identity verification so that rights are exercised only by legitimate data subjects.
User Preferences concern consent and choice. Software should capture explicit, granular, revocable consent for specific processing purposes, such as marketing communications, analytics tracking, or data sharing with third parties. Requirements include preference centers, opt-in defaults where mandated, privacy-by-default configurations, cookie and tracking controls, and reliable persistence and enforcement of those choices across all system components and integrations.
The Right to Be Forgotten, also called the right to erasure, allows individuals to request deletion of their personal data when it is no longer necessary, consent is withdrawn, or processing is unlawful. From a requirements perspective, this demands data inventories and data-flow mapping so all copies—including backups, logs, caches, replicas, and third-party processors—can be located; secure deletion or cryptographic erasure mechanisms; defined retention schedules; handling of legal-hold exceptions; and verifiable confirmation of completion within legally prescribed timeframes.
Capturing these requirements during the requirements phase ensures privacy is engineered into the design rather than retrofitted, reducing regulatory, reputational, and security risk throughout the software lifecycle.
Data Retention Requirements
Data Retention Requirements, within the CSSLP Secure Software Requirements domain, define how long an application must store data, in what form, where, and how it must be disposed of once it is no longer needed. They are a critical subset of the broader data classification and privacy requirements that a secure software lifecycle must capture early, because retention decisions directly affect architecture, storage design, access control, logging, and compliance.
These requirements are driven by several sources. Legal and regulatory mandates such as HIPAA, SOX, GDPR, PCI DSS, and industry-specific record-keeping rules often prescribe minimum or maximum retention periods. Business needs, like analytics, auditing, dispute resolution, or forensic investigation, may require retaining logs and transaction records for a defined time. Conversely, privacy principles such as data minimization and storage limitation require that personal data not be kept longer than necessary for its stated purpose.
A well-written retention requirement specifies the data type and classification, the retention period, the trigger that starts the clock (creation, last access, contract end), the storage location and protection level (encryption at rest, integrity controls), archival procedures, legal hold handling, and secure disposal methods such as cryptographic erasure, overwriting, or media destruction aligned with standards like NIST SP 800-88. It should also address backups, replicas, and third-party or cloud storage so that data is not inadvertently retained beyond its lifecycle.
From a security standpoint, retention requirements reduce the attack surface: data that no longer exists cannot be breached. They also support non-repudiation and incident response by ensuring audit logs survive long enough to be useful. Developers must implement these requirements through automated purge jobs, retention tags, and tamper-evident logs, while testers verify that deletion actually occurs across all data stores.
Ultimately, defining data retention requirements during the requirements phase ensures that software is designed to retain exactly what is needed, protect it appropriately, and securely dispose of it, balancing compliance, business value, privacy, and risk.
Cross-Border Data and Data Residency
In the CSSLP domain of Secure Software Requirements, cross-border data and data residency address where data is physically stored, processed, and transmitted, and which laws govern it. Cross-border data flow refers to the movement of data across national boundaries, such as when a cloud application hosted in one country collects personal information from users in another, or when backups, logs, or analytics are replicated to data centers worldwide. Data residency refers to legal or contractual requirements that specific data remain within a defined geographic jurisdiction. A related concept, data sovereignty, means that data is subject to the laws of the country in which it resides, regardless of the owner's location.
For the software security practitioner, these concepts translate directly into requirements that must be captured early in the lifecycle. Regulations such as the EU GDPR restrict transfers of personal data to countries lacking adequate protection, requiring mechanisms like Standard Contractual Clauses or adequacy decisions. Other nations, including Russia, China, India, and Australia for certain sectors, impose localization mandates. Industry rules such as HIPAA, PCI DSS, and financial regulations add further constraints. Failure to comply can result in fines, loss of market access, and reputational harm.
Secure requirements engineering therefore involves identifying data classification and the jurisdictions of data subjects, defining storage and processing location constraints, specifying encryption in transit and at rest with jurisdiction-aware key management, enforcing geo-fencing and region-locked cloud configurations, and ensuring logging, monitoring, and disaster recovery sites honor residency rules. Requirements should also address third-party and subprocessor data handling, data retention and deletion across regions, and auditability to demonstrate compliance.
Ultimately, the CSSLP must ensure legal, privacy, and architectural stakeholders collaborate so that cross-border and residency obligations are explicit, testable requirements traced through design, implementation, deployment, and operations, not afterthoughts discovered during an audit or breach.
User and Service Account Provisioning
In the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements, User and Service Account Provisioning refers to the processes and controls for creating, managing, and eventually deprovisioning accounts that software uses to authenticate and authorize access. Capturing these requirements early ensures that identity and access management is designed into the application rather than retrofitted, supporting the core security principles of least privilege, separation of duties, and complete mediation.
User account provisioning covers how human identities are onboarded into a system. Requirements should define how accounts are requested, approved, and created; what identity proofing is needed; how roles and entitlements are assigned (ideally through role-based or attribute-based access control); and how changes such as transfers or promotions trigger access reviews. Equally important is deprovisioning: accounts must be promptly disabled or removed when a user leaves or no longer needs access, preventing orphaned accounts that attackers can exploit. Requirements also address password policies, multifactor authentication, account lockout, and periodic recertification of access.
Service account provisioning addresses non-human identities used by applications, batch jobs, APIs, databases, and integrations. These accounts are frequently over-privileged, shared, and rarely rotated, making them high-value targets. Secure requirements should mandate that each service account has a single, documented purpose and owner; that credentials are stored in a secrets vault rather than hard-coded in source or configuration files; that privileges are tightly scoped; that credentials are rotated automatically; that interactive logon is disabled where possible; and that usage is logged and monitored for anomalies.
For both account types, requirements should specify auditability, so that every provisioning action is traceable, and alignment with regulatory frameworks such as SOX, HIPAA, PCI DSS, or GDPR. Automating provisioning through identity governance tools reduces human error and enforces consistency. Ultimately, well-defined provisioning requirements reduce attack surface, limit insider threat, and enable accountability throughout the software lifecycle.
Access Reapproval and Recertification
Access Reapproval and Recertification are governance controls within the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements. They ensure that the access rights granted to users, roles, services, and system accounts remain appropriate, authorized, and aligned with the principle of least privilege throughout the software's lifecycle, not just at the moment access is first granted.
Access Reapproval refers to the periodic process in which a data owner, application owner, or manager formally reviews and re-authorizes each account's existing privileges. The reviewer confirms that the individual still needs the access to perform their job, that the level of privilege is still correct, and that no segregation-of-duties conflicts have emerged. Access that cannot be justified is revoked.
Access Recertification (sometimes called attestation) is the broader, often auditable, campaign in which the organization systematically validates all entitlements across an application or system, typically on a scheduled basis such as quarterly or annually, or triggered by events like role changes, transfers, or terminations. Recertification produces evidence that demonstrates compliance with regulations and standards such as SOX, HIPAA, PCI DSS, GDPR, and ISO 27001.
From a secure requirements perspective, the CSSLP must capture these needs early. Functional and non-functional requirements should specify that the software can: enumerate all users, roles, and their permissions; export entitlement reports for reviewers; support workflow for approve/revoke decisions; log recertification actions for audit trails; and automatically disable or escalate stale or orphaned accounts. Requirements should also define recertification frequency, who the approvers are, and how exceptions are handled.
The risk these controls mitigate is privilege creep, where accumulated permissions over time create excessive access that attackers or insiders can exploit. By building reapproval and recertification capabilities into the requirements phase, the software supports ongoing identity governance, reduces the attack surface, strengthens accountability, and provides defensible proof that access remains need-to-know and need-to-do.
Misuse and Abuse Cases
Misuse and abuse cases are requirements-engineering techniques used in the Certified Secure Software Lifecycle Professional (CSSLP) domain of Secure Software Requirements to capture how a system should NOT behave and how it might be deliberately attacked or unintentionally mishandled. While traditional use cases describe legitimate actors achieving intended goals, misuse cases describe a hostile or negligent actor (the 'misuser') performing actions that threaten the system's confidentiality, integrity, availability, authentication, authorization, or auditing. Abuse cases are closely related; they typically describe intentional malicious interactions, whereas misuse cases may also include accidental or careless behavior that leads to harm.
The approach was popularized by Sindre and Opdahl and by McGraw. Misuse cases are often drawn on the same UML diagram as regular use cases, with inverted (black) ovals and stick figures representing attackers. Relationships such as 'threatens' show how a misuse case undermines a legitimate use case, and 'mitigates' shows how a newly derived security use case (for example, 'validate input' or 'enforce account lockout') counters the threat. This visual traceability helps stakeholders see why security requirements exist.
In the secure SDLC, misuse and abuse cases are produced during requirements gathering and feed directly into threat modeling, attack surface analysis, and security test case design. Typical steps include: identify assets and legitimate use cases; brainstorm attacker goals, motivations, and capabilities; enumerate misuse scenarios (such as SQL injection, privilege escalation, replay, denial of service, or insider data theft); assess likelihood and impact; and derive concrete, testable security requirements and controls to prevent, detect, or respond to each misuse.
Benefits include early discovery of security gaps when fixes are cheapest, improved communication between developers, testers, and business owners, support for compliance and risk-based prioritization, and a direct basis for abuse-case-driven penetration and negative testing. Limitations are that they depend on the imagination and expertise of the team and cannot enumerate every possible attack, so they should complement, not replace, other techniques such as STRIDE, attack trees, and secure coding standards.
Mitigating Controls From Abuse Cases
In the CSSLP Secure Software Requirements domain, abuse cases (also called misuse cases) describe how an attacker or malicious user could intentionally misuse a system. They are the dark counterpart of normal use cases: instead of asking what a legitimate user wants to accomplish, they ask how someone could exploit, abuse, or subvert that same functionality. Mitigating controls are the security requirements, design decisions, and safeguards derived directly from these abuse cases to prevent, detect, or reduce the impact of the described attack.
The process works as follows. First, the team identifies use cases, then brainstorms corresponding abuse cases, often using threat modeling techniques such as STRIDE or attack trees. For example, a 'user logs in' use case might generate abuse cases like 'attacker brute-forces passwords' or 'attacker hijacks a session token'. For each abuse case, the team documents the threat actor, the attack path, the affected asset, and the potential impact. Finally, mitigating controls are defined as explicit, testable requirements, such as account lockout after a set number of failed attempts, multi-factor authentication, secure session management with short-lived tokens, input validation, rate limiting, logging and monitoring, or encryption of sensitive data.
Mitigating controls are typically categorized as preventive (stopping the attack, like strong authentication), detective (identifying it, like audit logging and alerts), or corrective and compensating (limiting damage or providing an alternative safeguard, like backups or isolation). Each control should map back to the abuse case it addresses, creating traceability from threat to requirement to test case. This traceability allows security to be verified later during testing and helps justify design decisions to stakeholders.
The key value for a CSSLP practitioner is that deriving controls from abuse cases shifts security left into the requirements phase, making defenses intentional rather than retrofitted. It aligns with principles such as defense in depth, least privilege, and fail secure, and ensures that security requirements are concrete, measurable, and tied to realistic attack scenarios rather than generic checklists.
Security Requirements Traceability Matrix
A Security Requirements Traceability Matrix (SRTM) is a structured document used in the CSSLP Secure Software Requirements domain to map security requirements to their sources, design elements, implementation components, and test cases throughout the software development lifecycle. Its primary purpose is to ensure that every security requirement is accounted for, implemented, and verified, and that nothing is lost or silently dropped between phases.
Typically presented as a table or spreadsheet, each row represents a single security requirement with a unique identifier. Columns capture attributes such as the requirement description, its origin (e.g., regulatory mandates like PCI DSS, HIPAA, or GDPR; organizational policies; threat models; misuse/abuse cases; or customer contracts), the related design specification, the code module or component that satisfies it, the test case that validates it, and its current status (pending, implemented, verified, or waived).
The SRTM supports bidirectional traceability. Forward traceability allows stakeholders to follow a requirement from its source through design, coding, and testing, confirming coverage. Backward traceability lets teams trace any design decision, code change, or test back to an authorized requirement, helping detect scope creep, gold plating, or unauthorized functionality that could introduce risk.
From a CSSLP perspective, the SRTM delivers several benefits. It provides evidence of due diligence and compliance during audits, supports impact analysis when requirements change, improves communication between security, development, and QA teams, and helps prioritize testing based on requirement criticality. It also aids in identifying gaps where a requirement lacks a corresponding control or test, which would otherwise leave a vulnerability unaddressed.
Best practices include creating the SRTM early in the requirements phase, keeping it under version control, updating it continuously as requirements evolve, and integrating it with requirements management or application lifecycle management tools. Ultimately, the SRTM is a foundational artifact for building security in by design rather than retrofitting it later.
Third-Party Vendor Security Requirements
Third-Party Vendor Security Requirements, within the CSSLP Secure Software Requirements domain, address the security expectations that an organization must define, communicate, and enforce when software, components, or services are acquired from or developed by external parties. Modern applications rely heavily on commercial off-the-shelf (COTS) products, open-source libraries, cloud services, outsourced development teams, and APIs. Each of these introduces supply chain risk, because the acquiring organization does not fully control how the software was designed, coded, tested, or maintained. Therefore, security requirements must extend beyond internal development to cover every vendor and supplier contributing to the final product.
Key elements include defining clear, measurable security requirements in contracts, Statements of Work, and Service Level Agreements. These typically cover secure coding practices, vulnerability management and patching timelines, incident notification obligations, data protection and privacy controls, access control, encryption standards, and compliance with regulations such as GDPR, HIPAA, or PCI DSS. Organizations should also require evidence of security assurance, such as independent penetration test results, code reviews, SOC 2 or ISO 27001 certifications, and a Software Bill of Materials (SBOM) to track components and known vulnerabilities.
Vendor assessment and due diligence are essential before selection, including questionnaires, risk ratings, and evaluation of the vendor's secure development lifecycle maturity. Ongoing monitoring is equally important, since a vendor's security posture may change over time. Requirements should address right-to-audit clauses, escrow arrangements for source code, end-of-life and support commitments, and secure handover or termination procedures.
From a CSSLP perspective, the principle is that security responsibilities can be delegated but accountability cannot. The acquiring organization remains liable for breaches arising from third-party weaknesses. By establishing explicit vendor security requirements early, integrating them into procurement and acceptance criteria, and verifying them continuously, organizations reduce supply chain risk, ensure consistent protection across the software ecosystem, and meet legal, regulatory, and customer expectations for trustworthy software.