PCI-DSS

PCI DSS Requirement 6: Secure System and Application Development

Maria Chen had eleven minutes before her board call when the alert came in. A researcher at a fraud-intelligence firm had messaged Solstice Commerce's abuse inbox with a screenshot: their checkout page was quietly POSTing card numbers to a domain in Eastern Europe.

PCI DSS Requirement 6: Secure System and Application Development
Loading advertisement...
102

Maria Chen had eleven minutes before her board call when the alert came in. A researcher at a fraud-intelligence firm had messaged Solstice Commerce's abuse inbox with a screenshot: their checkout page was quietly POSTing card numbers to a domain in Eastern Europe. Not their code. A third-party chat widget script, loaded directly on the payment page, had been compromised weeks earlier and modified to skim every card Solstice's customers entered. Nobody on Maria's team had approved that script's presence on the payment page, nobody had an inventory of it, and nobody had noticed the change because nothing was watching for one.

By the time Solstice's incident responders, forensic investigators, and outside counsel finished totaling the damage — card brand fines, mandatory forensic investigation costs, breach notification, and six months of remediation — the number landed north of $2.3 million. The technical root cause fit in one sentence: nobody was managing the scripts running on the payment page, and nobody was watching for unauthorized changes to it. Both of those failures map directly to PCI DSS Requirement 6, and one of them — script management — is a control that didn't even exist in the standard until version 4.0.

Requirement 6 is the part of PCI DSS that governs how you build and maintain the software that touches cardholder data: your custom-written applications, the open-source and commercial components you bolt onto them, the patches you apply (or don't), the changes you push to production, and — since v4.0 — the third-party JavaScript running on your payment pages. It is consistently one of the most heavily cited requirements in Reports on Compliance, and it is the requirement where "we'll get to it" causes the most expensive incidents.

Who This Is For and What You'll Walk Away With

This guide is written for application security leads, DevSecOps engineers, QSAs preparing clients for assessment, and CISOs at merchants and service providers who process, store, or transmit cardholder data through applications they build or maintain. If your organization has a software development lifecycle, a public-facing web application, or an e-commerce payment page, Requirement 6 applies to you directly. You'll walk away with a control-by-control breakdown of Requirement 6's five sub-requirements, patch management SLAs mapped to CVSS severity, a working secure SDLC model, a side-by-side comparison of WAF versus manual review approaches, and a practical playbook for the new payment-page script inventory and change-detection controls that catch out nearly every e-commerce merchant on their first v4.0 assessment.

Requirement 6 in Plain English: What PCI DSS Actually Demands

PCI DSS v4.0 and v4.0.1 formally title Requirement 6 "Develop and Maintain Secure Systems and Software." It replaced the older, narrower v3.2.1 language ("Develop and maintain secure systems and applications") with a broader scope that explicitly captures modern software supply chains — third-party libraries, open-source components, low-code platforms, and the client-side scripts that run inside a customer's browser during checkout, not just the code your engineers write.

Requirement 6 breaks into five numbered sub-requirements, each built from a defined approach requirement (what you must do) paired with testing procedures (how a QSA or ISA verifies it) and, in most cases, a customized approach option (an alternative control that meets the same objective through a different mechanism, validated through a targeted risk analysis). The five sub-requirements are:

  • 6.1 — Processes and mechanisms for developing and maintaining secure systems and software are defined and understood (the governance layer: policies, roles, and documented procedures).

  • 6.2 — Bespoke and custom software is developed securely (secure coding training, secure SDLC, code review).

  • 6.3 — Security vulnerabilities are identified and addressed (vulnerability identification, a software component inventory, and patch management).

  • 6.4 — Public-facing web applications are protected against attacks (automated technical solutions or manual review, WAF deployment, and — new in v4.0 — payment page script management).

  • 6.5 — Changes to all system components are managed securely (change control procedures, environment separation, duties separation, and live PAN handling in non-production environments).

That structure — governance, secure development, vulnerability management, application protection, change control — is the backbone of the rest of this article, and it's the same structure a QSA will use when they build your Requirement 6 testing plan.

Requirement 6 Sub-Requirements at a Glance

Sub-Requirement

Core Control

Primary Evidence a QSA Will Request

Who Typically Owns It

6.1

Documented Req 6 policies, roles, and annual review

Policy documents, review sign-off, org chart

CISO / AppSec Lead

6.2

Secure coding training + secure SDLC + code review

Training records, SDLC procedure docs, code review logs

Engineering Manager / AppSec

6.3

Vulnerability identification, software inventory, patching

Vuln scan/feed subscriptions, inventory, patch tickets

Vulnerability Management Lead

6.4

WAF or manual review of public-facing apps; script management

WAF config/logs or review reports, script inventory

AppSec / Web Ops

6.5

Change control, environment separation, no live PAN in test

Change tickets, environment diagrams, data sanitization logs

Change Manager / DevOps

Why Requirement 6 Is the Requirement Most Teams Get Wrong

Requirement 6 sits at an awkward intersection: it's owned by engineering, but it's assessed by compliance, and the two groups rarely speak the same operational language. Engineering teams ship code continuously; compliance teams want quarterly evidence packages. Vulnerability management tools flag hundreds of findings; the standard demands you patch critical and high-severity ones within a fixed window regardless of how many there are. And the new payment-page script controls (6.4.3) ask e-commerce teams to inventory something — third-party JavaScript — that most of them have never formally tracked, because marketing, analytics, and support teams add tags and widgets to checkout pages without going through a change control process at all.

"The pattern I see across almost every Level 1 e-commerce merchant is the same: rock-solid change control for their own application code, and zero visibility into the six or seven third-party scripts marketing bolted onto the payment page over the last two years. Requirement 6.4.3 exists specifically because that blind spot has been exploited over and over again." — Derek Osei, QSA, Ashford Compliance Partners

The result is that Requirement 6 generates a disproportionate share of assessment findings relative to other requirements, particularly around 6.3.3 patch timelines, 6.4.1/6.4.2 web application protection evidence, and — since March 2025, when the previously future-dated v4.0 requirements became mandatory — 6.4.3 script inventory and authorization. If you're preparing for an assessment cycle in 2026, this is the requirement most likely to generate open items in your Report on Compliance if you haven't built the underlying processes yet.

6.2 — Building Bespoke and Custom Software Securely

Requirement 6.2 governs any software your organization develops in-house or has developed on its behalf — what PCI DSS calls bespoke and custom software, as distinct from commercial off-the-shelf products you purchase and configure. If your checkout flow, your payment API, your customer portal, or your internal tooling that touches cardholder data was written by your engineers or contractors, 6.2 applies.

6.2.1 — Secure Coding Training for Developers

Every developer who writes bespoke or custom software for in-scope systems must receive secure coding training at least once every twelve months, covering secure coding techniques relevant to the languages and frameworks they actually use, and including how to avoid common coding vulnerabilities. Generic "security awareness" training doesn't satisfy this control — the standard is explicit that the training must be role-specific to development work. Assessors want to see a training roster, course content mapped to the languages in use (a team writing Python and JavaScript shouldn't be handed a generic Java-focused course), and completion tracking.

6.2.2 — Secure Software Development Processes

Software must be developed based on industry standards and best practices, with information security built in throughout the software development lifecycle — not bolted on before release. Most organizations point to a secure SDLC model here, and increasingly reference frameworks like OWASP's Software Assurance Maturity Model or NIST's Secure Software Development Framework as their industry-standard baseline. Requirement 6.2.2 also expects developers to be following defined coding standards, and expects the organization to review those standards periodically.

6.2.3 — Code Review Before Release

Before bespoke or custom software is released to production, or moved from a pre-production environment, it must be reviewed for coding vulnerabilities — manually, or through an automated code review tool, or a combination of both. The reviewer must not be the same person who authored the code (a separation-of-duties principle that shows up again in 6.5.4), and reviews must confirm code was developed according to secure coding guidelines, addresses vulnerabilities before release, and that findings are remediated before release or the risk is formally accepted by management. A newer wrinkle in 6.2.3.1 (a v4.0 addition applying specifically to reviews of code that handles payment card data) reinforces the reviewer-independence requirement for that higher-risk code path.

6.2.4 — Addressing Common Software Attacks

Bespoke and custom software must be developed to prevent or mitigate common software attacks and vulnerabilities in accordance with an industry standard — PCI DSS names the OWASP Top 10, CWE/SANS Top 25, and similar lists as acceptable reference points, but doesn't mandate one specific framework. In practice this is where a target QSA will ask you to walk through exactly how your secure coding standard addresses injection flaws, broken authentication, sensitive data exposure, broken access control, security misconfiguration, and the rest of the categories your chosen standard covers.

"6.2.4 trips people up because they think 'we use a WAF, so we're covered.' A web application firewall is a compensating layer, not a substitute for writing code that doesn't have the vulnerability in the first place. Assessors want to see the vulnerability class addressed in your secure coding standard and your review checklist, independent of whatever runtime protection you've deployed." — Priya Nair, AppSec Lead, NorthPeak Payments

OWASP Top 10 Categories Mapped to PCI DSS 6.2.4 Coverage

OWASP Category (2021 Edition)

What It Covers

Primary Req 6 Control That Should Address It

A01 Broken Access Control

Users acting outside intended permissions

6.2.4 coding standard + 7.x access control

A02 Cryptographic Failures

Weak/missing encryption of sensitive data

6.2.4 + Requirement 3 & 4 crypto controls

A03 Injection

SQL, command, LDAP injection via untrusted input

6.2.4 input validation standard

A04 Insecure Design

Missing security controls at the design stage

6.2.2 secure SDLC, threat modeling

A05 Security Misconfiguration

Default settings, verbose errors, open cloud storage

6.2.4 + Requirement 2 configuration standards

A06 Vulnerable and Outdated Components

Unpatched libraries and frameworks

6.3.2 inventory + 6.3.3 patching

A07 Identification and Authentication Failures

Weak session/credential handling

6.2.4 + Requirement 8 authentication

A08 Software and Data Integrity Failures

Unsigned updates, insecure deserialization, unmanaged scripts

6.2.4 + 6.4.3 script management

A09 Security Logging and Monitoring Failures

Insufficient detection of exploitation

6.2.4 + Requirement 10 logging

A10 Server-Side Request Forgery

Server tricked into making unintended requests

6.2.4 input validation standard

Secure SDLC Stages and Required Req 6 Controls

SDLC Stage

Activity

Req 6 Control

Typical Evidence

Requirements

Define security/compliance requirements alongside functional ones

6.2.2

User stories with security acceptance criteria

Design

Threat modeling, secure architecture review

6.2.2

Threat model document, architecture sign-off

Development

Secure coding to documented standard

6.2.1, 6.2.4

Coding standard doc, training records

Code review

Independent review before merge/release

6.2.3

Pull request approvals, SAST scan results

Testing

SAST/DAST, dependency scanning

6.3.1, 6.3.2

Scan reports, vulnerability tickets

Pre-production

Separation from production, sanitized data

6.5.3, 6.5.5

Environment inventory, data masking logs

Release

Change control approval, rollback plan

6.5.1, 6.5.2

Change tickets, CAB approval records

Post-release

Patch monitoring, vulnerability re-scan

6.3.3

Patch SLA tracker, re-scan evidence

Secure SDLC and Patch Management Flow

The diagram below shows how the secure SDLC controls in 6.2 feed into the vulnerability identification and patch management controls in 6.3, and how a change re-enters the cycle through 6.5's change control gate.

6.3 — Identifying and Managing Vulnerabilities

Where 6.2 is about writing code well, 6.3 is about assuming you'll still ship vulnerabilities anyway — because everyone does — and building the process to find and fix them before an attacker does.

6.3.1 — Vulnerability Identification Process

Organizations must identify security vulnerabilities using reputable outside sources for vulnerability information, assign a risk ranking to newly discovered vulnerabilities (using industry-recognized practices such as CVSS scores, or the vendor's own severity rating), and cover both bespoke/custom software and third-party components. In practice, this means subscribing to vendor security advisories, the CISA KEV catalog, and vulnerability databases, then feeding what you find into a risk-ranking process rather than a single "patch everything eventually" queue. Vulnerabilities that are actively being exploited in the wild (the CISA KEV catalog specifically tracks these) should generally get pulled to the front of the queue regardless of their raw CVSS score.

6.3.2 — Maintaining a Software Component Inventory

This is the control most organizations underestimate. PCI DSS v4.0 requires an inventory of bespoke and custom software, and third-party software components incorporated into bespoke and custom software, to facilitate vulnerability and patch management. In modern terms, this is a software bill of materials (SBOM) requirement — you need to know, at minimum, which open-source libraries, frameworks, and commercial components are embedded in every in-scope application, and at what version, so that when a new CVE drops for a library, you can answer "are we exposed?" in minutes rather than weeks of manual code archaeology.

"Before we built our component inventory, a critical Log4j-class vulnerability meant two weeks of every engineer grepping through repos trying to figure out if we used the library anywhere. Now it's a five-minute query. That inventory paid for itself the first time we needed it." — Sofia Alvarez, DevSecOps Manager, Cobalt Fintech

Building a Software Component Inventory — What to Track

Field

Why It Matters

Update Trigger

Component name and version

Matches against CVE/vendor advisories

New dependency added

Source (vendor, open-source repo)

Determines advisory feed to monitor

New dependency added

Application(s) using it

Scopes impact when a vuln is disclosed

Dependency added/removed

License type

Legal/operational risk, not just security

Dependency added

Last updated / patch level

Drives 6.3.3 SLA tracking

Every patch cycle

Owning team

Accountability for remediation

Team reassignment

End-of-life / support status

Flags components needing replacement

Vendor EOL announcement

6.3.3 — Patch Management: Critical and High Within One Month

This is the sub-requirement with the hardest, most auditable deadline in all of Requirement 6: security patches and updates for critical and high-severity vulnerabilities must be installed within one month of release. Other, lower-risk patches must be installed within a timeframe defined by the organization's own risk analysis — but critical and high doesn't get a risk-based extension; it gets thirty days, full stop, unless a documented compensating control or customized-approach justification is in place.

"The thirty-day clock for critical and high vulnerabilities is non-negotiable in the way most of Requirement 6 isn't. I've had clients try to argue a targeted risk analysis around it, and it's a much higher bar than most people expect — you need to demonstrate an equivalent level of protection, not just a business reason why patching was inconvenient that month." — Tom Whitfield, CISO, Meridian Retail Group

Patch Management SLAs by Severity

Severity

Typical CVSS Range

Required Timeline (6.3.3)

Common Compensating Control If Delayed

Critical

9.0–10.0

Within 1 month of patch release

Virtual patching via WAF rule, network isolation

High

7.0–8.9

Within 1 month of patch release

Enhanced monitoring, access restriction

Medium

4.0–6.9

Per organization's documented risk-based timeline

Scheduled maintenance window

Low

0.1–3.9

Per organization's documented risk-based timeline

Next regular patch cycle

Actively exploited (any score)

Any

Treat as critical regardless of base score

Emergency change process

6.4 — Protecting Public-Facing Web Applications

Requirement 6.4 addresses the applications your customers interact with directly over the internet — the ones with the largest attack surface and the least forgiving audience if something goes wrong.

6.4.1 and 6.4.2 — Automated Protection or Regular Manual Review

Public-facing web applications must be protected against attacks through one of two defined-approach paths. Under 6.4.1, organizations can rely on manual or automated application vulnerability security assessment tools or methods, reviewing applications at least once every twelve months and after significant changes, with a process to address vulnerabilities found. Under 6.4.2 — which became mandatory alongside the rest of the future-dated v4.0 requirements — organizations handling this at scale are expected to deploy an automated technical solution, commonly a web application firewall, that continually detects and prevents web-based attacks, runs actively (not just in monitoring/logging mode), generates audit logs, and is configured to either block attacks or generate an alert that is immediately investigated.

The two paths aren't strictly either/or in every reading of the standard — many organizations run both a WAF for continuous protection and periodic manual/automated assessments for depth a WAF's signature-based detection won't catch, such as business logic flaws. But if you're only doing annual reviews with no continuous automated protection layer, you're relying entirely on 6.4.1 and need to be able to show the review cadence and remediation process hold up on their own.

Web Application Protection Options Compared

Approach

Mechanism

Detection Depth

Ongoing Effort

Best Fit

Web application firewall (WAF)

Inline traffic inspection, rule/ML-based blocking

Strong on known attack patterns (injection, XSS)

Moderate — tuning, rule updates

High-traffic public apps, continuous coverage

Manual code/application review

Human-led assessment, often paired with penetration testing

Strong on business logic flaws WAFs miss

High — skilled reviewer time

Complex apps, lower change frequency

Automated DAST scanning

Scripted attack simulation against running app

Moderate — good breadth, weaker on logic flaws

Low-moderate — scheduled scans

Supplementing WAF or manual review

Runtime application self-protection (RASP)

In-app monitoring/blocking at the code level

Strong, application-context aware

Moderate — integration effort

Apps needing protection independent of network path

6.4.3 — The New Rule: Managing Payment Page Scripts

Requirement 6.4.3 is the control most directly responsible for closing the gap that hurt Solstice Commerce. It applies to payment pages delivered to a consumer's browser and requires that all payment page scripts loaded and executed in that browser be managed as follows: a method is implemented to confirm that each script is authorized, a method is implemented to assure the integrity of each script, and an inventory of all scripts is maintained with written business or technical justification for why each one is necessary.

The control exists because of exactly the attack pattern behind Magecart-style card-skimming campaigns: an attacker compromises a third-party script vendor (a chat widget, an analytics tag, an A/B testing tool, an ad pixel — anything loaded client-side on the checkout page), modifies the script to silently capture and exfiltrate card data as the customer types it, and because nobody was tracking which scripts belonged on the page or whether they'd changed, the compromise runs undetected for weeks or months. 6.4.3 forces organizations to know exactly what's running on the payment page and to have a mechanism — subresource integrity hashes, a script inventory tied to a change approval process, a script-management platform, or an equivalent customized-approach control — that would catch an unauthorized addition or modification.

"6.4.3 was the wake-up call for our marketing and martech teams. They'd been adding tags to the checkout page for years through a completely separate process from engineering's change control. Building the inventory meant, for the first time, engineering and marketing sitting in the same room agreeing on what's actually allowed to load on that page." — James Okoro, Director of PCI Compliance, LatticePay

Payment Page Script Inventory — Required Fields

Field

Purpose

Example

Script name/identifier

Uniquely identify the script

"LiveChat widget v4.2"

Source/origin (domain)

Confirm expected hosting location

chat-vendor.example.com

Business/technical justification

Document why it's necessary (required by 6.4.3)

"Customer support chat during checkout"

Authorization owner

Who approved it running on the payment page

AppSec Lead

Integrity verification method

How you confirm it hasn't been tampered with

Subresource Integrity (SRI) hash

Date added / last reviewed

Supports periodic re-validation

Reviewed quarterly

Removal/deprecation date

Tracks scripts retired from the page

If applicable

6.4.3 vs. 11.6.1 — How the Two New Payment-Page Controls Work Together

PCI DSS pairs the script inventory control in 6.4.3 with a detection control in Requirement 11: 11.6.1 requires a change- and tamper-detection mechanism that alerts personnel to unauthorized modification of HTTP headers and the content of payment pages as received by the consumer's browser, evaluated at least weekly (or more frequently if defined by a targeted risk analysis). Where 6.4.3 answers "what's allowed to be on this page and who authorized it," 11.6.1 answers "has anything on this page actually changed since we last checked." Together they form a preventive-plus-detective control pair specifically engineered to stop the skimming pattern that has driven a disproportionate share of e-commerce card-data breaches since Magecart-style attacks became widespread. A detailed walkthrough of the detection side of that pairing belongs to Requirement 11 (security testing) rather than this article, but no Requirement 6 program is complete without confirming the two controls are actually linked operationally — the inventory has to feed the detection tool's baseline, or the detection tool has nothing to compare against.

Dimension

6.4.3 (Requirement 6)

11.6.1 (Requirement 11)

Control type

Preventive / authorization

Detective / monitoring

What it governs

Which scripts are allowed on the payment page

Whether the page's actual content/headers have changed

Core mechanism

Inventory + authorization + integrity method

Automated change- and tamper-detection tool

Minimum frequency

Ongoing management, periodic review

At least weekly evaluation

Failure mode it closes

Unauthorized/unknown script added to page

Authorized script silently modified in place

6.5 — Managing Changes Securely (Change Control)

Requirement 6.5 is where Requirement 6 meets the broader discipline of change management — the same control family that shows up under different names in nearly every framework, including ISO 27001 and SOC 2. It governs how changes to any system component (not just applications) move from development through to production without introducing new risk.

The Six 6.5 Sub-Controls

  • 6.5.1 — Documented change control procedures covering description of change, documented reason, impact assessment, approval by authorized parties, functionality testing, and back-out procedures.

  • 6.5.2 — Upon completion of a significant change, confirmation that all applicable PCI DSS requirements are still met and documentation is updated as needed.

  • 6.5.3 — Pre-production environments are separated from production environments, with access control enforced between them.

  • 6.5.4 — Separation of duties between personnel assigned to development/test roles and personnel assigned to production roles.

  • 6.5.5 — Live production PANs are not used in pre-production (development/test) environments, except where those environments meet the same security controls as production.

  • 6.5.6 — Test data and test accounts are removed from system components before the system becomes active or goes into production.

Change Control Sub-Requirements

Control

Requirement

Common Evidence

Common Failure Point

6.5.1

Documented, approved change procedure

Change tickets with impact assessment and back-out plan

Emergency changes bypass the process entirely

6.5.2

Confirm PCI DSS requirements still met post-change

Post-change compliance checklist sign-off

Skipped for "minor" changes that turn out significant

6.5.3

Pre-production/production separation

Network/environment diagrams, access lists

Shared credentials or flat network between environments

6.5.4

Duties separated: dev/test vs. production

Access control matrix, role definitions

Same engineer has deploy rights to both environments

6.5.5

No live PAN in dev/test

Data masking/tokenization logs, code scan of test DBs

Production database copied "temporarily" for debugging

6.5.6

Test data/accounts removed before go-live

Pre-release checklist, decommission logs

Default/test admin accounts left active in production

"6.5.5 is the one that gets people in the most trouble during forensic investigations, not assessments. A breach investigator loves nothing more than finding a full copy of the production cardholder database sitting in a staging environment with weaker controls than production — and it happens constantly, because 'just for this one debugging session' becomes permanent." — Maria Chen, VP Engineering, Solstice Commerce

Development/Test vs. Production Separation Checklist

Control Area

Development/Test Requirement

Production Requirement

Network access

Logically or physically segmented from production

Isolated per Requirement 1 network controls

User accounts

Separate credentials from production accounts

No shared accounts with dev/test

Cardholder data

Tokenized, masked, or synthetic — never live PAN

Live data protected per Requirement 3

Deployment rights

Developers may have deploy access

Restricted to release/ops roles (6.5.4)

Logging

Reviewed but lower retention typically acceptable

Full Requirement 10 logging retained

Test accounts/data

Present during testing

Removed before go-live (6.5.6)

Case Study: Solstice Commerce and the Payment-Page Skimmer

Solstice Commerce, a mid-market e-commerce retailer processing roughly 40,000 card transactions a month, had passed three consecutive PCI DSS assessments under v3.2.1 without a single Requirement 6 finding. Their internally developed checkout application had solid secure coding practices, mature code review, and a disciplined change control process — all genuinely well run. What they didn't have, because it wasn't yet a formal requirement, was any inventory of the third-party scripts marketing and customer-support teams had added directly to the payment page over four years: a live chat widget, two analytics pixels, an A/B testing tool, and a retargeting tag.

When the chat vendor's script-hosting infrastructure was compromised, the injected skimming code sat on Solstice's live payment page for approximately seven weeks before an external fraud researcher spotted the anomalous outbound POST request and reported it. The forensic investigation, mandatory under the card brands' incident response programs, confirmed skimmed data from an estimated 6,100 transactions. Total cost — forensic investigation fees, card brand fines, replacement card costs passed through by issuers, legal fees, and the six-figure marketing spend on customer trust recovery — reached $2.3 million.

Solstice's remediation, completed over four months, became a template later used across their SAQ-D peer group: a formal script inventory built jointly by engineering, marketing, and compliance; an authorization workflow requiring AppSec sign-off before any script could be added to the payment page; subresource integrity hashing on every retained script; and a weekly automated change- and tamper-detection scan of the live payment page. Post-remediation, Solstice's next assessment cycle recorded zero Requirement 6 findings, and their time-to-detect for an unauthorized page change dropped from seven weeks to under four hours.

Case Study: NorthPeak Payments' Secure SDLC Turnaround

NorthPeak Payments, a Level 1 service provider processing card-not-present transactions for mid-sized merchants, entered a QSA readiness assessment with a Requirement 6 problem that had nothing to do with scripts: their patch management program had no formal SLA, critical vulnerabilities routinely sat unpatched for 60–90 days, and their code review process was inconsistently applied across three engineering teams that had grown through two acquisitions with different development cultures.

Priya Nair's AppSec team spent the first sixty days building a unified software component inventory across all three codebases, discovering in the process that one acquired product was running a web framework version with two unpatched critical CVEs. The team implemented a hard 30-day SLA for critical and high findings, backed by an automated dependency-scanning pipeline that opened a ticket the same day a new CVE was published against any tracked component, and standardized code review requirements — including mandatory reviewer independence — across all three teams.

Within two assessment cycles, NorthPeak's mean time to patch critical vulnerabilities dropped from 74 days to 19 days, comfortably inside the 30-day requirement, and their QSA's testing sample of code review records showed 100% reviewer-independence compliance, up from an inconsistent 60–70% across the three legacy teams. Their Report on Compliance moved from four open Requirement 6 items to zero.

Evidence Auditors Expect for Requirement 6

Control Area

Evidence a QSA/ISA Will Request

How Far Back

6.1 Governance

Signed, current Req 6 policy; annual review record

Current version + prior annual review

6.2 Secure development

Training completion logs, coding standard, code review logs

Full assessment period

6.3 Vulnerability management

Vulnerability feed subscriptions, risk-ranking methodology, patch tickets

Full assessment period, sampled

6.3.3 Patch SLA

Ticket timestamps from disclosure to patch deployment

Full assessment period, sampled

6.4 Web app protection

WAF configuration/logs, or manual review reports and remediation tickets

Rolling 12 months

6.4.3 Script management

Script inventory, authorization records, integrity verification logs

Current + change history

6.5 Change control

Change tickets with impact assessment, approvals, back-out plans

Full assessment period, sampled

6.5.5/6.5.6

Data masking evidence, test account decommission logs

Full assessment period, sampled

Roles and Responsibilities for Requirement 6

Activity

Responsible

Accountable

Consulted

Informed

Secure coding standard maintenance

AppSec Lead

CISO

Engineering Managers

Development teams

Developer secure coding training

Engineering Managers

CISO

AppSec Lead

HR/L&D

Code review enforcement

Tech Leads

Engineering Director

AppSec Lead

QA

Software component inventory

DevSecOps

AppSec Lead

Development teams

Vulnerability Management

Patch SLA tracking

Vulnerability Management Lead

CISO

Engineering Managers

Executive leadership

Payment page script authorization

AppSec Lead

CISO

Marketing/Martech, Legal

QSA/ISA

Change control approval

Change Advisory Board

Head of Engineering

Security, Compliance

All stakeholders

Common Requirement 6 Failures and How to Fix Them

Failure Pattern

Why It Happens

Fix

No formal patch SLA tracking

Vulnerabilities tracked informally in tickets, no severity-based deadline

Automated pipeline that timestamps disclosure-to-patch against 30-day rule

Code review without reviewer independence

Small teams, deadline pressure, self-approval

Mandatory second reviewer, enforced via merge/branch protection rules

No software component inventory

Dependencies managed per-project, never aggregated

Centralized SBOM tooling integrated into build pipeline

Payment page scripts added outside engineering process

Marketing/martech tags added via tag manager, bypassing change control

Joint script authorization workflow spanning engineering, marketing, security

Production data copied into test environments

"Just for debugging," never cleaned up

Automated data masking/tokenization for all non-production copies

WAF deployed but not actively blocking

Left in monitoring-only mode after initial rollout

Periodic WAF rule review; require active blocking per 6.4.2

Change control skipped for "emergency" fixes

No defined emergency change path, so people bypass the process

Documented expedited-approval path that still requires post-hoc review

Illustrative Cost of a Requirement 6 Program by Organization Size

Organization Profile

Secure SDLC Tooling (Annual)

WAF/Script Management (Annual)

Internal Staffing Estimate

Notes

Small e-commerce merchant (SAQ A-EP/B-IP scope)

$8,000–$20,000

$6,000–$15,000

0.25–0.5 FTE

Often outsources code review to a contracted assessor

Mid-market merchant/service provider

$30,000–$80,000

$20,000–$50,000

1–2 FTE

Dedicated AppSec function typically emerges here

Level 1 service provider

$100,000–$300,000+

$60,000–$150,000+

3–6 FTE

Full secure SDLC tooling chain, dedicated script management platform

These figures are illustrative planning ranges based on typical engagements, not vendor quotes — actual costs vary by tooling choices, existing infrastructure, and whether functions are outsourced.

Which SAQ Types Touch Requirement 6

Not every merchant validates against the full Requirement 6 control set — it depends heavily on your Self-Assessment Questionnaire type, which in turn depends on how you handle card data.

SAQ Type

Requirement 6 Applicability

Why

SAQ A

Minimal — no Req 6 questions in most versions

Fully outsourced payment processing, no card data touches merchant systems

SAQ A-EP

Significant — includes 6.4.3 script controls

Merchant's page influences the payment iframe/redirect even without directly handling PAN

SAQ B / B-IP

Minimal

Standalone terminals, no e-commerce web application

SAQ C

Moderate

Payment application on merchant-managed system, segmented network

SAQ D (Merchant)

Full Requirement 6

Merchant directly processes/stores/transmits card data through custom systems

SAQ D (Service Provider)

Full Requirement 6, often plus ROC-level testing

Broadest scope, typically Level 1 with QSA-led assessment

Requirement 6 vs. Requirement 5 vs. Requirement 11 — How They Relate

Requirement 6 doesn't operate in isolation — it's the middle layer of PCI DSS's vulnerability management goal, and it hands off directly to the testing requirements in Requirement 11. Understanding the boundary matters, because assessors will ask you to show where one control's evidence ends and the next begins. Our companion guide on malware protection under Requirement 5 covers the anti-malware side of the same "Maintain a Vulnerability Management Program" goal that Requirement 6 anchors.

Requirement

Focus

Relationship to Requirement 6

Requirement 5

Anti-malware protection across all systems

Runtime defense; Req 6 prevents vulnerabilities malware would exploit

Requirement 6

Secure development, patching, change control, web-app/script protection

The build-and-maintain layer covered in this article

Requirement 11

Regular security testing — scanning, penetration testing, tamper detection (11.6.1)

Validates that Req 6 controls actually held; 11.6.1 detects what 6.4.3 was meant to prevent

Building Your Requirement 6 Program: A 90-Day Roadmap

Most organizations building a Requirement 6 program from a standing start — or retrofitting one to close v4.0 gaps — follow a recognizable sequence. Week one starts with an inventory exercise, not a policy-writing exercise, because you can't govern what you can't see: catalog every bespoke and custom application in scope, every third-party component inside them, and every script running on public payment pages. That inventory becomes the spine everything else attaches to.

From there, the sequence typically moves to formalizing the patch SLA (because it has the hardest deadline and the clearest audit trail), then to code review independence and secure coding training (because they're process changes that take longest to embed into team habits), then to WAF deployment or manual review scheduling, and finally to the payment-page script authorization workflow, which — as both case studies above show — usually requires the most cross-functional negotiation because it's the one control area engineering doesn't fully own.

90-Day Requirement 6 Implementation Roadmap

Phase

Timeframe

Key Activities

Milestone

Discovery

Days 1–15

Inventory bespoke apps, components, and payment page scripts

Complete asset/script inventory

Governance

Days 16–30

Draft/update Req 6 policy, assign RACI ownership

Policy approved by CISO

Vulnerability & Patch

Days 31–50

Stand up risk-ranking process, enforce 30-day SLA

First full patch cycle within SLA

Secure Development

Days 51–65

Deliver secure coding training, formalize reviewer independence

Training completion, review policy live

Web/App Protection

Days 66–80

Deploy/tune WAF or schedule manual review cadence

Active blocking confirmed

Script & Change Control

Days 81–90

Launch script authorization workflow, tie to 11.6.1 detection

Script inventory + detection tool linked

Requirement 6 as a Business Opportunity, Not Just a Checkbox

It's tempting to treat Requirement 6 as pure overhead — training hours, review gates, patch SLAs that slow down shipping velocity. The organizations that get the most value out of it treat it differently: a secure SDLC with enforced code review and dependency tracking is also, not coincidentally, the foundation of a mature engineering organization that ships fewer production incidents overall, not just fewer security ones. A software component inventory built for PCI DSS is the same inventory your engineering leadership needs to plan framework upgrades and estimate technical debt. And a payment-page script authorization process, once built, becomes a selling point — the kind of operational maturity that shortens due-diligence cycles when a large retail partner or payment processor is evaluating whether to route volume through you.

Solstice Commerce's post-incident script management program didn't just close a compliance gap — it became a reference architecture the company now points to in enterprise sales conversations with prospective marketplace partners who ask pointed questions about payment-page security before signing. Requirement 6 done well is a demonstrable trust signal in a market where card-not-present fraud and e-commerce skimming attacks remain a constant background risk for every buyer's own compliance team to worry about.

If you're building or maturing your Requirement 6 program, PentesterWorld's PCI DSS 12-Requirements Checklist gives you a control-by-control starting point, and the PCI DSS Policy Pack includes editable templates for the secure development, patch management, and change control policies this article covers. If you're not yet sure how far along your organization is, our PCI DSS Gap Analysis Tool will help you baseline before you invest in tooling, and the full PCI DSS Glossary is a handy reference for the terminology across all twelve requirements.

For the full picture of how Requirement 6 fits into the standard end to end, start with our PCI DSS Complete Guide, and pair this article with PCI DSS Requirement 5's anti-malware controls to cover the full vulnerability management goal. Organizations running both PCI DSS and ISO 27001 will find natural overlap with the secure development lifecycle controls in ISO 27001 Annex A 8.25–8.29, and teams reconciling change control expectations across frameworks should also read our SOC 2 coverage of change management for system updates — the underlying discipline of documented, approved, tested change is the same control wearing three different framework labels.

Frequently asked questions

Does PCI DSS Requirement 6 apply if we use only commercial off-the-shelf software?

Requirement 6.2's secure coding, training, and code review controls apply specifically to bespoke and custom software your organization develops. If you run entirely on unmodified commercial or SaaS products, those specific sub-requirements largely fall away — but 6.3 (vulnerability identification and patching), 6.4 (web application protection), and 6.5 (change control for configuration changes) still apply to how you deploy, configure, and maintain those products.

What counts as "critical" or "high" severity for the 6.3.3 patch deadline?

PCI DSS allows CVSS scoring or the vendor's own severity rating as the risk-ranking method. Most organizations map CVSS 9.0–10.0 to critical and 7.0–8.9 to high, both triggering the 30-day patch deadline. A vulnerability under active exploitation, per sources like the CISA KEV catalog, should generally be treated as critical regardless of its base score.

Is a WAF mandatory under PCI DSS v4.0.1?

Not in every case. 6.4.1 allows manual or automated application vulnerability assessment as an alternative path, with reviews at least every twelve months and after significant changes. 6.4.2's automated technical solution — typically a WAF — became mandatory for the organizations that rely on the continuous-protection path once the future-dated v4.0 requirements took effect on 31 March 2025. Whether you need it depends on which path (6.4.1 review cadence vs. 6.4.2 continuous automated protection) fits your risk profile and how your QSA scopes the assessment.

Does 6.4.3 apply to every website, or only checkout pages?

6.4.3 specifically covers payment pages — the pages where a consumer enters cardholder data, and any page whose scripts could influence what runs on that payment page (which is why SAQ A-EP merchants, who redirect or iframe to a third party but still control the surrounding page, are in scope even though they never touch a live PAN).

How is 6.4.3 different from 11.6.1?

6.4.3 is a preventive/authorization control — it governs which scripts are allowed on the page and requires you to justify and inventory each one. 11.6.1 is a detective control — an automated mechanism that evaluates the payment page for unauthorized changes to its scripts and HTTP headers at least weekly. They're designed to work together: the inventory built for 6.4.3 gives the 11.6.1 detection tool something to compare against.

We're a SaaS company using continuous deployment — how do we reconcile that with 6.5's change control?

PCI DSS doesn't mandate a slow, manual change process — it mandates that changes are documented, assessed for impact, approved by an authorized party, tested, and reversible. Mature CI/CD pipelines can satisfy 6.5.1 through automated gates: a pull request with required approvals, automated testing, and a one-click rollback can constitute a compliant change control process, provided the approval and impact-assessment steps are genuinely enforced rather than rubber-stamped.

What's the difference between the defined approach and customized approach for Requirement 6 controls?

The defined approach is the specific control PCI DSS describes (e.g., "patch critical/high vulnerabilities within one month"). The customized approach lets an organization implement an alternative control that meets the same stated control objective, validated through a documented targeted risk analysis and subject to QSA sign-off — useful for organizations with unusual architectures, but it carries a higher documentation and justification burden than simply meeting the defined requirement.

102

About the author

Cybersecurity Expert

Satish Kumar writes about cybersecurity, offensive security, and practical defense strategies on PentesterWorld.

Related Articles

Comments (0)

No comments yet. Be the first to share your thoughts!