6.2.4 Engineering techniques against common software attacks
Developers of bespoke and custom software must have defined and actually use software engineering techniques or other methods that prevent or reduce common software attacks and associated vulnerabilities, including at least: injection attacks (SQL, LDAP, XPath, plus command, parameter, object, fault and similar injection flaws); attacks against data structures and data, for example manipulation of pointers, buffers, shared data or input data; attacks on the use of cryptography, such as exploiting weak, insecure or unsuitable implementations, algorithms, cipher suites or operating modes; business logic attacks that abuse or bypass application features through tampering with APIs, protocols, communication channels, client-side functions or other system resources, including XSS and CSRF; attacks on access control mechanisms, such as bypassing or abusing identification, authentication or authorization, or exploiting weak implementations of them; and attacks through any high-risk vulnerability found by the Requirement 6.3.1 process. It applies to all entities. Applicability: covers all software built by or for the entity for its own use, bespoke and custom; third-party software is not covered. Objective under the customized approach: common attacks and related weaknesses cannot be used to exploit bespoke and custom software.
Source: PCI DSS v4.0.1, 6.2.4. The statement above is our statement of the clause, read from the published text and cited so you can check it against the official text, not the instrument verbatim. Open PCI DSS v4.0.1 in the compliance library.
Version 4.0.1 is the active version; 4.0 has been retired. Appendix A1 applies only to multi-tenant service providers, A2 only to card-present POS POI terminals that still use SSL or early TLS, and A3 only when a payment brand or acquirer requires it. Which requirements apply to you follows your validation type.
These are the artefacts auditors commonly ask for on this requirement, our guidance rather than text from the standard. Your assessor decides what is sufficient in your context, and asks for samples across the period when a report covers one.
system holds itEvidence a system already holds
- Pipeline configuration showing SAST or linting rules run at code check-in · Source control / CI pipeline
periodic reviewEvidence produced at each review
- Framework-level controls evidence such as parameterised queries, output encoding and CSRF tokens · Document repository
- Interview notes with developers describing how they apply the techniques · Document repository
governing documentDocuments that govern the control
- Secure coding standard covering injection, data structure, cryptography, business logic, access control and high-risk vulnerability classes · Policy repository / GRC workspace
- Approved cryptographic library and cipher suite list for developers · Policy repository / GRC workspace
First move
Common gaps auditors find
- Standard covers injection and XSS but says nothing about business logic abuse or API manipulation
- Homegrown cryptography or deprecated cipher modes found in code
- High-risk vulnerabilities from the 6.3.1 process are not fed back into coding guidance
Do this for your whole sheet
Paste the rows you run your controls from and get this mapping for every control at once, with the periodic-review ones flagged and a first move per row. No account for the first run.
Build my evidence sheet6.2.3.1 Manual code review independence and approval · 6.3.1 Vulnerability identification and risk ranking