Join our Newsletter — 33% off our NHI Course

What breaks when PCI DSS 6.4.3 controls only prove script approval, not runtime safety?

The control breaks when a trusted script is approved at the source level but later behaves maliciously inside the browser. That leaves a merchant with evidence of permission, not evidence of safe execution. The practical failure is an authorised but compromised component that can skim data, alter forms, or call out unexpectedly without triggering a source-based control.

When approval is not the same as safe execution

PCI DSS 6.4.3 can verify that a script was reviewed or permitted, but that is not the same as proving what the script does after it loads in a live browser. The control breaks at the point where source-level trust is treated as runtime assurance. If the script is later modified, chained to hostile content, or behaves differently under browser state, the approval record no longer protects the cardholder-data flow.

The core problem is that browser execution is dynamic. A script can be legitimate at approval time and still become dangerous through dependency drift, injected logic, compromised delivery, or DOM interaction that the original review did not anticipate. That means the control answers “was this allowed?” while the security question is “was this execution safe?”

For payment environments, that gap matters because the runtime is where form capture, data transformation, network calls, and third-party interactions actually happen. A control that only proves provenance or pre-approval leaves room for data skimming, hidden exfiltration, and unauthorized behavioural changes after the page is already trusted. The control boundary is therefore narrower than the risk boundary.

Where the control boundary fails in practice

Source approval is useful when the main concern is governance over what gets deployed, but it does not continuously validate what the browser executes at user interaction time. The weak point is not the approval workflow itself, it is the assumption that approval remains valid after the script enters a mutable environment. That assumption is especially fragile when scripts can be altered by downstream dependencies, tag managers, CDN changes, or other embedded content paths.

A practitioner should treat this as a trust-to-runtime mismatch. If the control evidence stops at “this script was authorised,” then it does not cover whether the script still behaves as expected when the page loads, when it sees sensitive fields, or when it calls out to unexpected destinations. That is why runtime monitoring, integrity assurance, and tightly scoped execution controls matter alongside approval.

Read the control as a governance gate, not a runtime safety guarantee. The useful question is whether the approved artifact remains the same artifact in execution terms, and whether its behaviour is constrained enough that a later compromise cannot silently turn approval into exposure.

What a stronger control model needs to prove

To close the gap, the control needs evidence about execution, not just permission. That usually means checking whether the script can be integrity-pinned, whether its dependencies are bounded, whether its network destinations are known, and whether browser-side changes can be detected quickly enough to matter. In payment flows, the practical test is whether a trusted script can be prevented from becoming a covert collection or exfiltration point after approval.

This is where source review, content security controls, subresource integrity, strict allowlisting, and runtime telemetry become complementary. They do different jobs. Approval reduces unnecessary risk at introduction time, while runtime controls reduce the chance that a once-approved script can later act outside its intended behaviour. If a control cannot distinguish those two states, it is only partially solving the problem.

For teams managing payment pages, the right standard is not “approved once,” but “constrained and observable throughout execution.” If the page handles cardholder data, a change in script behaviour should be treated as a control event, not just a development change.

Risk and Threat Considerations

When approval is mistaken for runtime safety, the main risk is silent compromise of a trusted browser path. An attacker does not need to defeat the approval workflow if they can alter behaviour after approval, hijack a dependency, or abuse the script’s existing privileges inside the page.

Failure mechanism: The merchant approves a script at source level, but the live execution path changes through injection, dependency drift, compromised delivery, or malicious runtime behaviour. The control records permission, while the browser executes something materially different.

Impact: Sensitive form data can be skimmed, fields can be modified, calls can be redirected, and the compromise can persist inside an otherwise authorised page flow without triggering a source-based approval control.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

NIST SP 800-53 Rev 5, OWASP ASVS and NIST CSF 2.0 set the technical controls, while ISO/IEC 27001:2022 defines the regulatory obligations.

Framework Control / Reference Relevance
NIST SP 800-53 Rev 5 SI-7 — Software, Firmware, and Information Integrity Script safety depends on runtime integrity, not only approval.
Recommendation — Apply SI-7 to verify script integrity and detect unauthorized runtime changes.
OWASP ASVS V14 — Data Protection Browser script execution can expose or alter sensitive payment data.
V16 — Security Logging and Error Handling Runtime detection is needed when approved scripts misbehave in-browser.
Recommendation — Use V14 to constrain data exposure and data handling in browser flows. Use V16 to log script anomalies and investigate unexpected browser behaviour.
NIST CSF 2.0 PR.DS-01 — Data-at-Rest Is Protected Payment-page scripts should not weaken protection of sensitive data in use paths.
Recommendation — Apply PR.DS-01 to keep sensitive payment data protected throughout handling.
ISO/IEC 27001:2022 A.8.9 — Configuration management Script approval fails when downstream changes alter the approved runtime state.
Recommendation — Use A.8.9 to control and review changes that affect browser script behaviour.

Practitioner Guidance

What to verify: Verify that the control design covers runtime behaviour, not just pre-deployment approval. If the only evidence you can produce is a review record, the control is too weak for a live payment page.

Decision rule: If the script can access payment inputs or make outbound requests, treat runtime integrity, destination control, and change detection as mandatory companions to approval. If those cannot be enforced, narrow the script’s privilege or remove it from the sensitive flow.

Common mistake: Teams often stop at “trusted source” because it is auditable and familiar. The better test is whether the script can still be observed, constrained, and interrupted after the browser starts executing it.

Practitioner takeaway: Approval is evidence of intended use, not evidence of safe behaviour, and PCI DSS 6.4.3 only works as a complete control when runtime execution is also governed.