SI-15 Information output filtering

SI-15 requires you to check that software output matches expected content, so unexpected data that signals compromise or leakage gets caught. It sits outside every SP 800-53B baseline, so it applies only when you select it.

On this page

What SI-15 information output filtering requires and why it is easy to miss

If your organization is tailoring a baseline or an assessor has asked how you validate application output, SI-15 Information output filtering has likely come into scope even though no SP 800-53B baseline assigns it. The control asks you to validate information output from defined software programs or applications so that what the system produces is consistent with the content you expect. In plain terms, you decide what a legitimate response from each application looks like, then check that the application does not emit anything outside that expectation, such as unexpected fields, embedded data, stack traces, or content that suggests a compromise or an attempt to exfiltrate data. The risk it addresses is a system that is working as designed on the inside while quietly leaking records or returning content an attacker injected.

The control is easy to miss because it sits outside every baseline. SP 800-53B does not select SI-15 for low, moderate, high or privacy, and FedRAMP's Rev5 baselines do not require it at Class B, C or D. It has one organization-defined parameter and no control enhancements in Release 5.2.0, so the real work is defining the parameter: which programs or applications are in scope and what output content counts as expected. Assessors test it mainly by examining documentation and records. SP 800-53A Release 5.2.0 uses one determination statement, and its examine objects include system design documentation, system configuration settings and associated documentation, and system audit records. Confirm with your assessor which evidence they will accept before you build anything, because a filter with no documented expectations and no audit trail will be hard to defend.

SI-15 is an assurance-related control that the system itself implements (marked S in Appendix C of SP 800-53 Rev. 5). Its related controls are SI-3 Malicious code protection, SI-4 System monitoring and SI-11 Error handling, so a useful first step is to check whether those controls already produce the signals you would need. Decide whether SI-15 is in scope for the system in question, record that decision and its rationale in the system security and privacy plan, and name an owner for the defined expectations. Those three actions answer most assessor questions on this control before any tooling is chosen.

Which systems and outputs fall under SI-15 information output filtering

SI-15 applies only when an organization selects it, and the organization-defined parameter decides which applications and output paths the control covers. The cards below cover the scoping choices that change the work, from output paths and data types to ownership and third-party components.

Defined applications and output paths

SI-15 asks the organization to define which software programs or applications have their output validated. That list is the parameter, and it sets the whole effort. Start with an inventory of user-facing interfaces, API responses, exports, reports, log and error output, and scheduled jobs that write files or messages. Record each path in the system security and privacy plan so an assessor can trace the parameter to real outputs. Confirm whether the parameter covers internal-only interfaces as well as external ones.

Data types each output carries

The expected content of an output depends on what it carries. A search result page, a PDF statement, a CSV export and a database error message each have different normal shapes and different sensitive fields. Classify the data in each output path, including personal data, credentials, financial records and internal identifiers. Outputs that can carry more sensitive data than the requester is entitled to see deserve tighter expected-content rules and earlier review.

Teams that own output logic

Output logic is often split across application developers, platform engineers, API teams and reporting owners, so no single group sees every path. Name an owner for each defined application and record who approves changes to output templates, serializers and response schemas. Without named owners, an assessor will find outputs that no one tested against expected content, and changes to output code may bypass the review that SI-15 evidence depends on.

Third-party components that produce output

Libraries, reverse proxies, managed databases, SaaS integrations and vendor-supplied reporting modules all shape what leaves a system. List each component that generates or transforms output on a defined path, and note whether the organization controls its code or configuration. Components the organization does not control still count toward the scope, so validation may need to sit at the organization's own boundary rather than inside the vendor product.

Build pipeline and change control

Output logic changes through code, templates and configuration, so the repositories and pipelines that ship them belong in scope. Confirm that protected branches or equivalent controls require review before output-affecting code merges. Scanning in continuous integration can check for output code patterns, but the scope decision should say which pipeline stages are part of the evidence chain. Ask the team to show how a change to an output path is traced to its approval.

Monitoring and alert sources

Output filtering produces evidence only when its results reach a place someone reviews. Decide which systems record output validation failures, such as application logs, web application firewall events and firewall log entries, and how those records feed monitoring under SI-4 and audit records under AU. Confirm retention for those records and the people who receive alerts. A filter that writes no reviewable record gives an assessor little to test.

How an assessor tests SI-15 under SP 800-53A

This table breaks down the single SP 800-53A determination statement for SI-15 by assessment method, object and typical evidence. Read it as a checklist of what an assessor will ask to see, who answers, and where systems most often fall short.

Assessment elementWhat the assessor doesEvidence that passesWhere it usually fails
Determination statementConfirms the organization has defined the software programs or applications whose output is validated and what the expected output content isDocumented list of in-scope applications with the expected output content for each, and the SI-15 parameter value set by the organizationThe organization-defined parameter is blank, generic or never tied to named applications
Examine: system design documentationReads architecture and design material to see where output validation sits in the data pathDesign diagrams showing output filtering points, such as a gateway, API response validator or reverse proxy rule setDesign documents describe input validation only and say nothing about output checks
Examine: configuration settings and documentationInspects filter rules, validation schemas and configuration files for the defined applicationsVersioned rule sets or schemas, with the settings that block or flag unexpected output and a record of their last changeRules are present but undocumented, outdated, or disabled in production
Examine: system audit recordsSamples logs of filtered or flagged output to confirm the check runs and that hits are recordedLogs showing timestamps, the application, the rule that matched and the response takenLogging is off for output checks, or flagged events are never reviewed
Interview: engineering leadsAsks how output expectations are set and how they change when an application changesConsistent answers that match the design documents and change recordsEngineers describe output checks that exist only in a test environment
Interview: security operations staffAsks what happens when output fails validation and who receives the alertA described triage path with an owner, an escalation step and a link to incident handlingStaff are unaware that output filtering exists or cannot name a responsible owner
Test: sampling outputsSubmits or observes representative responses, including unexpected content, and checks whether the defined check catches themTest results showing expected content passes and unexpected content is flagged or blocked, retained as evidenceTests cover only normal responses, so unexpected content is never exercised
Common finding: undefined parameterNotes that the organization-defined parameter for SI-15 is not setA completed parameter value in the system security planThe parameter is left at a default or treated as implied, which weakens the determination
Common finding: no evidence of reviewLooks for proof that flagged output is reviewed and that rules are tuned over timeReview tickets, rule tuning records and periodic reviews signed by a named ownerFilters run, but no one can show that flagged output was examined or that rules were revisited

How to implement SI-15 in five steps

This sequence turns SI-15 from a selected control into a working check: it fixes which outputs are in scope, defines what normal output looks like, places the checks where the output is produced, routes anomalies to people who can act, and leaves behind evidence an assessor can test. Each step closes with a named artifact.

  1. Define the output programs and set the parameter

    Start by listing the software programs or applications whose output the organization wants validated, such as customer-facing web pages, API responses, report generators and batch exports. Assign each program an owner in the system security plan and record the organization-defined parameter that SI-15 requires you to fill in, so the scope is explicit. Confirm the list with the system owner, because SI-15 is not in any SP 800-53B baseline and only applies once the organization selects it through tailoring or an overlay. Done means a scoped list of output programs, each with an owner and a recorded parameter value that matches the system security plan.

  2. Write expected-content rules for each output

    For each in-scope output, document what consistent content looks like: the expected fields, data types, value ranges, response structure, and the content that must never appear, such as stack traces, internal hostnames, credential strings or unmasked identifiers. Engineering and the data owner should review these rules together, since the data owner knows which values are sensitive. Done means a rules document per output program, versioned in the same repository as the code it governs, that an assessor can read against the design documentation.

  3. Implement checks in the application or pipeline

    Build the validation where the output is produced or where it leaves the system. Options include response schema checks inside the application, a reverse proxy or web application firewall rule set, and automated scans of generated artifacts in the CI/CD pipeline. Open-source options such as Semgrep can enforce code-level patterns that prevent debug output from reaching production, and Coraza can inspect HTTP responses when its ruleset is configured for outbound content. Confirm each tool's response inspection capability in your own environment before relying on it. Done means a test harness that feeds conforming and nonconforming outputs through each check and records the result.

  4. Route unexpected output to alerts and response

    Decide what happens when a check fails. Unexpected output should generate an event in the central log platform and an alert to the on-call team, and the response should follow the procedure already defined for system monitoring under SI-4 or for error handling under SI-11, depending on whether the content points to an attack or to a fault. Blocking or suppressing the response should be an explicit, documented decision, not a side effect. Done means a documented routing matrix showing each check, its alert destination, its responder and its response action, plus a sample alert that reached the responder.

  5. Document the control and test it on a schedule

    Write the SI-15 implementation statement in the system security plan, naming the output programs, rules, check locations, alert routing and owners. Then run the SI-15 assessment procedure from SP 800-53A against the implementation, using the examine methods on design documentation, configuration settings and audit records, and the test method on sample outputs. Store the test results and the audit records of triggered alerts as evidence. Done means a signed implementation statement, a test report showing that nonconforming output was detected and routed, and audit records an independent assessor can sample.

Which open-source controls support output checks

Source-code scanning sits closest to where output logic is written. Semgrep Community Edition can flag code patterns that build responses from unvalidated data, such as string concatenation into HTML, SQL or log entries, and it can run in CI/CD so every merge request is scanned. Its community and custom rules let a team encode its own output expectations, for example that error responses never include stack traces. The tool reads a broad set of languages, so the same rule approach can cover services written in different stacks.

  • Language coverage: Confirm that every language your output-producing services use appears in the supported list before relying on the scan.
  • Custom rules: Write rules for the output patterns your organization has decided are unacceptable, and version them in the repository.
  • Pipeline placement: Run the scan on every merge request and on the default branch, and record pass and fail results as build artifacts.
  • License: Semgrep Community Edition is licensed under LGPL-2.1-only. Confirm with counsel how that license applies to your internal use and any modifications.
  • Limits: A static scan cannot see runtime data or values generated by external services, so it supports but does not replace testing of actual output.

Check that scan results are triaged, that suppressions carry a documented reason, and that the pipeline cannot be bypassed without a recorded approval.

Evidence that passes an SI-15 examination

An assessor testing SI-15 works from the one determination statement in SP 800-53A, examining system design documentation, configuration settings and audit records. The cards below describe the artifacts that let the organization show its output checks were defined, configured, exercised and reviewed, and how each one stays current between assessments.

Documented output program and parameter

SI-15 has one organization-defined parameter in Release 5.2.0, so the organization must state which software programs or applications its output validation covers and what the expected content is for each. Keep a written design record that names each in-scope application, its output types and the owner who approved the scope. Record the date of each approval so an assessor can see that the scope was set before the test period and not reconstructed afterward. Illustrative example: a customer-facing portal lists its output channels, such as statement pages and export files, each with its expected content.

Expected-content rules under version control

The expected-content rules are the core of the check, so they need to be stored in a repository where every change has an author, a reason and a timestamp. Protect the branch that holds them so changes must be reviewed before merging. Assessors will ask whether the rules in production match the rules that were approved, so tie each deployed rule set to a specific commit. Keep the full history so the organization can show what the rules were on any date in the assessment period.

Configuration exports from the filtering layer

Export the live configuration of each filtering or validation component on a schedule and keep the exports with dates. For a web application firewall such as Coraza, that means the rule set in use, the rule versions and any disabled rules with the reason for each. For a packet filter such as OPNsense, export the rules and aliases that govern traffic to and from the application. Compare each export with the last approved state and log any drift, because an assessor testing configuration settings will look for unexplained differences.

Sample audit records showing checks and alerts

The examine method for SI-15 includes system audit records, so keep samples showing that output checks ran and that flagged output produced an alert or was blocked. Each sample should identify the application, the rule that matched, the time and the response taken. Include both routine entries and at least one entry where a check fired, with the follow-up record. Confirm with your assessor how many samples they expect and what period they must cover, because those details are set by the assessment plan and not by the control.

Test results proving detection

An assessor needs evidence that the checks detect unexpected content, not just that they are configured. Keep test cases that send known-bad or out-of-pattern output through the application and record whether the check caught it. Store each test with the rule version it was run against, the expected result and the actual result. Rerun the test set after every rule change, so the results always match the rules in production and the test history shows when a gap was found and closed.

Review records and rule version history

Periodic review shows that someone is responsible for the output checks and acts on what they find. Record each review with its date, reviewer, scope, findings and the rule changes it produced. Between audits, keep the rule version history linked to these reviews so every change can be traced to a decision. Confirm your own review frequency with your assessment plan and policy owner, since the control text does not set a fixed interval, and align the review cycle with the SI-1 policy that governs the SI family.

What meeting SI-15 costs in money and effort

The largest cost of SI-15 is engineering time, not software. Because SI-15 requires validating application output against expected content, the organization must first decide what "expected" means for each defined output: which responses, reports, error pages, exports and API payloads are in scope, which fields may appear in them, and which patterns should never leave the system, such as internal hostnames, stack traces, credentials or unmasked account identifiers. That definition work is paid for in staff hours from application owners, security engineers and privacy staff. No figures are supplied for how long it takes, so ask any partner to size it against the number of output paths in your own applications before agreeing a scope.

Open-source tooling removes license spend but not the effort to configure and run it. Coraza, with the OWASP Core Rule Set, can inspect outbound responses at the web tier only where its rules and integration point support response inspection, and Semgrep Community Edition can flag output-handling code patterns in CI/CD. Both need custom rules written for your data, tuned to cut false positives, and kept in version control, where GitLab protected branches can require review before rule changes merge. Confirm with each vendor which inspection points are available in your deployment before pricing the work, since that determines how much custom development is needed.

Recurring cost comes from maintenance and assurance. Every new feature, report or API version can change what the application emits, so rules and expected-content definitions need review on each release, and alert triage consumes analyst time. Ask a quote to separate one-time build work (initial definitions, rule authoring, integration, test cases) from recurring work (rule updates, false positive review, periodic testing of the output checks themselves). Also ask who evidences the control for an assessor, since auditors sample output filter configurations, their change history and the alert records they produced, and that sampling effort depends on how well those records are retained and indexed. Any independent penetration test of output leakage is a separate, separately priced line item.

Cost components for SI-15 and what drives each one

This table compares the cost components of meeting SI-15 Information output filtering, showing who is paid, whether each cost is one-time or recurring, what drives it, and how to reduce it. Read it as a checklist for requesting quotes, since SI-15 is not in any SP 800-53B baseline and its scope depends on which applications your organization selects. The main takeaway is that the largest recurring costs come from rule upkeep and evidence, not from licenses.

Cost componentOne-time or recurringMain driver and how to reduce it
Tooling and licensesRecurring if commercial, one-time setupOutput scanning and filtering tools. Self-hosted open-source options such as Semgrep Community Edition (LGPL-2.1-only) and Coraza (Apache-2.0) remove license spend, but hosting and maintenance remain.
Engineering time for rule definitionOne-time, then recurring as applications changeNumber of applications and output types in scope. Start with the applications your organization defines as producing sensitive or externally visible output.
Testing of filters and rulesOne-time per rule set, recurring on changeNumber of rules and false positives. Test rules against representative output in a non-production environment before enabling blocking.
Evidence upkeepRecurringFrequency of assessments and changes to the system design documentation, configuration settings and audit records an assessor will examine. Keep configuration in version control, with protected branches in GitLab Community Edition (MIT) so changes leave a reviewable trail.
External review and readiness supportOne-time or periodicScope of the assessment and whether SI-15 is selected by tailoring or an overlay. Ask for a fixed scope in writing that names the applications, rule sets and evidence to be prepared.
Auditor samplingSet by the assessor, recurring per assessment cycleNumber of systems and output paths the assessor samples. Confirm with your assessor how they plan to sample and which records they will request.
Remediation of findingsVariable, often one-time per findingVolume of unexpected output found and how many owners must act. Route alerts from output checks into your existing monitoring and incident process (SI-4, IR family).

Who defines, implements and assesses SI-15

The organization is accountable for SI-15. It decides whether the control applies to a given system, because SP 800-53B does not assign SI-15 to any baseline and it enters a system only through tailoring or an overlay. It also sets the organization-defined parameter, which is the list of software programs or applications whose output must be validated, and it accepts the residual risk when a program is left out. Those decisions belong in the system security plan and in the organization's risk assessment, not in a vendor's configuration file.

  • Selection decision: Record whether SI-15 is selected, the rationale for selecting or excluding it, and the approving official.
  • Parameter definition: Name the applications and output types in scope, such as customer-facing reports, API responses or file exports.
  • Control ownership: Assign a named owner who answers assessor questions and maintains the procedure.
  • Risk acceptance: Document any output channels left out of scope and who accepted that gap.
  • Review cycle: Revisit the parameter after significant changes to applications or data flows.

Check that the system security plan states the SI-15 parameter in the organization's own words and that the owner can explain it without referring to a vendor.

Where organizations fall short on SI-15

SI-15 is a short control with a single organization-defined parameter, so most shortfalls come from decisions that were never made or never recorded. The cards below cover the gaps assessors most often find and the closing action for each.

Parameter left undefined

SI-15 has one organization-defined parameter that names the software programs or applications whose output must be validated. If that parameter is blank, the control has no scope, and an assessor cannot tell which outputs should be checked. Many teams leave it open because the control is not in a baseline, so nobody owns the decision. Check whether the parameter appears in the system security and privacy plan with a named list of applications. Closing action: write the list of in-scope applications and record the owner who approved it.

No expected-content rules

Validating output requires a definition of what correct output looks like. Without expected-content rules, a check has nothing to compare against, so unexpected data such as internal identifiers, stack traces or bulk record dumps passes without comment. Rules usually need to be written per application, using the response formats, field types and value ranges the application is designed to produce. Closing action: document an expected-content rule for each in-scope application and keep it under version control with the application code.

Output checks not linked to alerting

An output filter that logs a mismatch but notifies no one provides little protection. SI-15 is most useful when a failed check feeds the same monitoring and incident path used for other suspicious activity, which connects it to SI-4 and the incident response process. Confirm that the platform sends filter events to the central log or alerting tool, and that someone receives them during working and off hours. Closing action: route output filter events to the alerting queue and test one alert end to end.

No evidence of review

Assessors look for proof that output checks were run and that someone reviewed the results. System design documentation and configuration settings show the control exists, but audit records show whether it operated. Teams often have the filter in place and no record of who reviewed its findings or how false positives were handled. Closing action: keep a dated review record of filter findings, including triage decisions, and retain the related audit records for the assessment period.

Assuming a baseline covers it

SP 800-53B does not assign SI-15 to the low, moderate, high or privacy baseline, so a system that meets its baseline may have no SI-15 requirement at all. The opposite risk also exists: a team may assume an input validation or web application firewall control covers output content, when those controls address different risks. Confirm the selection in the control baseline and in any tailoring decision, and record the rationale. Closing action: document whether SI-15 is selected, and if it is not, record why it was excluded.

Questions buyers ask about SI-15 cost, effort and scope

Is SI-15 required for my system under NIST SP 800-53?

SI-15 is not required by default. SP 800-53B does not assign it to the low, moderate, high or privacy baseline, so it applies only when your organization selects it through tailoring or an overlay, or when a contract, authorizing official or assessor asks for it. FedRAMP's Rev5 baselines also do not require it at Class B, C or D. Check your system's baseline selection and any contract clauses before budgeting for it, because the answer decides whether this work is in scope at all.

What does SI-15 ask my team to prove?

SI-15 asks you to validate that output from defined software programs or applications is consistent with the expected content. The control has one organization-defined parameter and no enhancements, so the scope is small, but you must define which programs and outputs are covered. The assessment procedure for SP 800-53A Release 5.2.0 uses one determination statement and examines system design documentation, system configuration settings and related documentation, and system audit records. The evidence is therefore a documented definition of output checks, configuration showing those checks running, and audit records that show they operated.

How much effort does SI-15 take compared with other SI controls?

The effort depends on how many applications produce output that you choose to check, not on the control text itself. Because SI-15 has no enhancements, the requirement is narrow, but the work can grow with the number of applications, interfaces and output types in scope. Related controls, such as SI-3, SI-4 and SI-11, often share the same monitoring and logging evidence, which can reduce duplicate work. Ask for the effort estimate to be broken down by application and by evidence artifact so you can see where the time goes.

What does my internal team need to provide for an SI-15 engagement?

Your team owns the control and must make the key decisions. In practice this means:

  • Naming the applications and outputs that SI-15 covers, and the expected content for each
  • Providing access to design documents, configuration and audit logs for the assessment
  • Approving the output checks and any response actions, such as blocking or alerting
  • Confirming who reviews exceptions and how often

An implementation partner can prepare systems and evidence, but it cannot decide what your expected output is or accept risk on your behalf.

Can we implement SI-15 in-house without an outside partner?

Yes, if your team has the engineering skills to define expected output, configure the checks, and keep audit records. Many organizations do this internally because the control is narrow. Outside help is most useful when your team lacks capacity, when the checks must be built into several platforms, or when you want an independent review of the evidence before an assessor arrives. Whichever route you take, an independent auditor or assessor, not a consultant, issues any report or conclusion on the control.

What drives the timing of an SI-15 implementation?

Timing depends on how well your output expectations are already documented, how many applications are in scope, and whether the checks must be added to running systems or designed into new ones. Change control, testing windows and the assessment calendar also set the pace. The organization's authorization or audit schedule usually matters more than the technical build. No fixed duration applies to every system, so ask for a schedule in the written scope that lists each milestone and dependency.

What should I confirm in a quote for SI-15 work?

Ask for a written scope that names the systems, applications and output types covered, the SI-15 parameter values you will define, and the evidence to be produced. Confirm which costs are one-time, such as design and configuration, and which recur, such as reviewing audit records and updating expected content after releases. Check who runs testing, who holds the documentation, and what happens when a platform upgrade changes output. Ask which deliverables are fixed and which are priced as ongoing support.

Does SI-15 overlap with SI-10 or SI-11 in practice?

Yes, at the edges. SI-10 covers checking inputs, SI-11 covers error messages that must not leak details, and SI-15 checks what the application sends out. A single output check can help show that error responses and unexpected content are not exposed, so one set of logs may serve several controls. Keep the control statements separate in your system security plan, and document which evidence supports which control so assessors can trace each requirement without guessing.

How DeployOpen scopes and prepares SI-15 evidence

DeployOpen's part in SI-15 work is a fixed-scope engagement, and the scope is agreed in writing before any work starts. For this control, the scope should name each application or service whose output the organization has decided to validate, the output channels in question (web responses, API payloads, generated files, messages sent to other systems), and the expected-content rules that define what "consistent with the expected content" means for each one. DeployOpen prepares the checks, configurations and evidence inside the client's own cloud accounts, data centers or air-gapped networks. The organization still owns the control, decides which outputs are in scope, and approves the expected-content definitions. DeployOpen does not issue assessment reports, attestations or certifications. An independent assessor or certification body does that work.

The preparation work usually covers three things: the output validation rules themselves, the logs that show those rules ran, and a security test of the output paths. Security testing of output paths checks whether unexpected content, such as stack traces, internal identifiers or injected markup, can still leave the system through error pages, API responses or exported data. Findings from that testing feed the organization's system design documentation and configuration records, which are the examine objects SP 800-53A names for SI-15. Confirm with your assessor which artifacts they expect for those objects and in what format. Where the organization needs ongoing support, such as updating expected-content rules after application changes or reviewing output alerts, DeployOpen offers retainers. The terms, frequency and included activities of any retainer are set in its own written agreement, so ask for them explicitly in the quote.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.