diff --git a/Makefile b/Makefile index 3b378f25..c26e198a 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,9 @@ test: @sh test_util/RunTest.sh -p test_util/artifacts/NIST_SP-800-53_rev4_HIGH-baseline_profile.xml @sh test_util/RunTest.sh -p test_util/artifacts/NIST_SP-800-53_rev4_MODERATE-baseline_profile.xml @sh test_util/RunTest.sh -p test_util/artifacts/NIST_SP-800-53_rev4_LOW-baseline_profile.xml + @sh test_util/RunTest.sh -p test_util/artifacts/FedRAMP_HIGH-baseline_profile.xml + @sh test_util/RunTest.sh -p test_util/artifacts/FedRAMP_MODERATE-baseline_profile.xml + @sh test_util/RunTest.sh -p test_util/artifacts/FedRAMP_LOW-baseline_profile.xml @echo "Running remaining tests" @go test -race -coverprofile=coverage.txt -covermode=atomic -v $(shell go list ./... | grep -v "/vendor/\|/test_util/src") diff --git a/test_util/artifacts/FedRAMP_HIGH-baseline_profile.xml b/test_util/artifacts/FedRAMP_HIGH-baseline_profile.xml new file mode 100644 index 00000000..2757d403 --- /dev/null +++ b/test_util/artifacts/FedRAMP_HIGH-baseline_profile.xml @@ -0,0 +1,4869 @@ + + + FedRAMP HIGH Baseline PROFILE + + Federal Risk and Authorization Management Program (FedRAMP) + info@fedramp.gov + https://fedramp.gov + FedRAMP High Baseline + 8/6/2018 + 1.0 + FedRAMP PMO + No notes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + monthly for privileged accessed, every six (6) months for non-privileged access + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + Selection: disables + + + 24 hours from last use + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider defines the time period for non-user accounts (e.g., accounts associated with devices). The time periods are approved and accepted by the JAB/AO. Where user management is a function of the service, reports of activity of consumer users shall be made available.

+
+
+
+ + 35 days for user accounts + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + organization and/or service provider system owner + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Should use a shorter timeframe than AC-12.

+
+
+
+ + inactivity is anticipated to exceed Fifteen (15) minutes + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + disables/revokes access within a organization-specified timeframe + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Required if shared/group accounts are deployed

+
+
+
+ + organization-defined need with justification statement that explains why such accounts are necessary + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Required if shared/group accounts are deployed

+
+
+
+ + + + +

NIST added this control to the NIST High Baseline during the 1/15/2015

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Guidance: Required for privileged accounts.

+

(b) Guidance: Required for privileged accounts.

+
+
+
+ + at a minimum, the ISSO and/or similar role within the organization + + + at a minimum, the ISSO and/or similar role within the organization + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + one (1) hour + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. If there is a significant high-impact risk of inadvertent or intentional data leakage with a system deployed in a shared-service environment, this control is justified to mitigate that risk. Similar justification applies when an organization needs to ensure data isolation between different types of information enclaves within the organization.

+

ANALYSIS. Although this control is usually employed to control flows between different classified enclaves, it can also apply to non-classified scenarios (e.g., the need to isolate legal, personnel, health-related, financial, or other information or files deemed sensitive.

+

SAMPLE THREAT VECTORS. Sensitive free-text information passes from the personnel department to the rest of the organization. Law-enforcement sensitive information is inadvertently pulled from the organization's general counsel case management system and passed outside the department to users without authorization to view that information. HIPAA-protected health information flows freely from the HR department to all employees. Privacy-Act information flows from an HR system into a publicly released report.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Integrity-Assured, Adaptive, Manageable, Assessed, Auditable, Regulated, Controlled, Monitored, Providing Good Data Stewardship, Assured, Competent, Confidential, Data Controllable, Access-Controlled.

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: CSPs have the option to provide a separation of duties matrix as an attachment to the SSP.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all functions not publicly accessible and all security-relevant information not publicly available + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Examples of security functions include but are not limited to: establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters, system programming, system and security administration, other privileged functions.

+
+
+
+ + all security functions + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + all privileged commands + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

CSP Insider Threat mitigation; Good housekeeping and a best business practice for the protection of the CSP and customer alike. In a cloud environment, the power (and potentially harm) of the privileged users is greatly magnified because of the scale. For that reason periodic review of privileges is important.

+

Priority for adding to FedRAMP-M: HIGH

+
+
+
+ + at a minimum, annually + + + all users with privileges + + + + + +

This control is not part of the NIST high baseline and was added for FedRAMP at the recommendation of DoD and NIST. This is a CNSSI 1253 control.

+
+
+
+ + any software except software explicitly documented + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + not more than three (3) + + + fifteen (15) minutes + + + locks the account/node for a minimum of three (3) hours or until unlocked by an administrator + + + a minimum of three (3) hours + + + + + +

NEED. If an organization's mobile devices carry information whose loss would have a high impact, this control is warranted in order to mitigate the risk of such loss.

+

ANALYSIS. The technologies associated with this control are well established COTS hardware and software.

+

SAMPLE THREAT VECTORS. Mobile device is lost, falls into the hands of people without authorization to view the information contained on the device.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Integrity-Assured, Usable, Adaptive, Manageable, Agile, Supported, Assessed, Auditable, Regulated, Controlled, Monitored, Providing Good Data Stewardship, Assured, Confidential, Data Controllable, Access-Controlled, Mission Assured.

+
+
+
+ + mobile devices as defined by organization policy + + + three (3) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider shall determine elements of the cloud environment that require the System Use Notification control. The elements of the cloud environment that require System Use Notification are approved and accepted by the JAB/AO.

+

Requirement: The service provider shall determine how System Use Notification is going to be verified and provide appropriate periodicity of the check. The System Use Notification verification and periodicity are approved and accepted by the JAB/AO.

+

Guidance: If performed as part of a Configuration Baseline check, then the % of items requiring setting that are checked and that pass (or fail) check can be provided.

+

Requirement: If not performed as part of a Configuration Baseline check, then there must be documented agreement on how to provide results of verification and the necessary periodicity of the verification by the service provider. The documented agreement on how to provide verification of the results are approved and accepted by the JAB/AO.

+
+
+
+ + see additional Requirements and Guidance + + + see additional Requirements and Guidance + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + three (3) sessions for privileged access and two (2) sessions for non-privileged access + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + fifteen (15) minutes + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Recommended by High Baseline Tiger Team. vulnerabilities associated with not having a logout button are well-documented.

+
+ +

Guidance: https://www.owasp.org/index.php/Testing_for_logout_functionality_%28OTG-SESS-006%29

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + fifteen (15) minutes + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Rationale for Selection: Best business practice for the protection of the CSP and customer alike " when not intended for use". This is an unanticipated vector for attack if present and active. While probably not an issue with data center servers and networking devices, wireless is becoming embedded in many components and devices such as printers, fax devices, copiers, scanners, communications devices, etc. There is the additional potential that wireless capabilities may become available in air conditioners, power centers, power controllers, lighting, alarm systems, etc. There is a potential that these capabilities could exist without organizational awareness. Selection drivedsawareness. It's better to perform the check than to make assumptions about what devices are in the IS.

+

ECSB Supplemental Guidance as the C/CE relates to CSPs

+

The application of this control enchancement should include all systems and devices in the CSP facility such as printers, fax devices, copiers, scanners, communications devices, air conditioners, power centers, power controllers, lighting, alarm systems, etc. Wireless networking capabilities should be disabled when they are near or networked with systems supporting customer's services.

+

Priority for adding to FedRAMP-M: Moderate

+

(Low L1/2)

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least quarterly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually or whenever a significant change occurs + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + + + +

NEED. High-impact systems warrant significantly elevated protection; one of these elevated protections is provided through simulated no-notice attacks that exercise users' ability to detect and respond correctly to attempts to steal internal information in their possession.

+

ANALYSIS. These controls are well understood and widely installed; COTS components keep implementation time and cost low.

+

SAMPLE THREAT VECTORS. Cybersecurity staff do not know how to monitor, respond, and manage complex enforcement systems and subsystems. Cybersecurity staff is not properly trained to understand how the controls are to operate. Staff does not understand the event alarms/logs. Staff is not able to protect from unauthorized disclosure. Staff is careless with handling data, or unwilling to follow the established security protocols, or willing to cut corners to save time.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Integrity-Assured, Assessed, Auditable, Controlled, Monitored, Providing Good Data Stewardship, Assured, Competent, Confidential.

+
+
+
+ + + + +

NEED. High-impact systems warrant significantly elevated protection.

+

ANALYSIS. These controls are well understood and widely installed.

+

THREAT VECTORS ADDRESSED. Staff does not know how to monitor or manage complex systems in a way that supports effective management decision or control. Malicious actors manipulate the system to appear as if functioning normally when in reality, it is not. People fail to review event logs. People make unauthorized changes to event logger.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Integrity-Assured, Assessed, Auditable, Controlled, Monitored, Providing Good Data Stewardship, Assured, Competent, Confidential.

+
+
+
+ + malicious code indicators as defined by organization incident policy/capability. + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + five (5) years or 5 years after completion of a specific training program + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.

+
+
+
+ + successful and unsuccessful account logon events, account management events, object access, policy change, privilege functions, process tracking, and system events. For Web applications: all administrator activity, authentication checks, authorization checks, data deletions, data access, data changes, and permission changes + + + organization-defined subset of the auditable events defined in AU-2a to be audited continually for each identified event + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Annually or whenever changes in the threat environment are communicated to the service provider by the JAB/AO.

+
+
+
+ + annually or whenever there is a change in the threat environment + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: For client-server transactions, the number of bytes sent and received gives bidirectional transfer information that can be helpful during an investigation or inquiry.

+
+
+
+ + session, connection, transaction, or activity duration; for client-server transactions, the number of bytes received and bytes sent; additional informational messages to diagnose or identify the event; characteristics that describe or identify the object or resource being acted upon; individual identities of group account users; full-text of privileged commands + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + all network, data storage, and computing devices + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + organization-defined actions to be taken (overwrite oldest record) + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + real-time + + + service provider personnel with authority to address failed audit events + + + audit failure events requiring real-time alerts, as defined by organization audit policy + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO. In multi-tennant environments, capability and means for providing review, analysis, and reporting to consumer for data pertaining to consumer shall be documented.

+
+
+
+ + at least weekly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. Due to the complexity of independent systems exchanging security-related monitoring data, and high-impact systems implemented in shared-service environments, the responsible organization needs a centralized capability that integrates these various data sources into a unified whole permitting central review and analysis of diverse log data relevant to security audits.

+

ANALYSIS. This control permits analysts and auditors to focus on their primary duty of analyzing log data, and relieves them of the usual burden of discovery, collection, validation, aggregation, and indexing of large log datasets relevant to system security. Since these latter collection tasks have been automated under this control, less time and funding will be required to execute this core audit/analysis activity.

+

SAMPLE THREAT VECTORS. Staff does not know how to monitor or manage complex systems in a way that supports effective management decision or control. Malicious actors manipulate the system to appear as if functioning normally, when it is not. People fail to review event logs. People make unauthorized changes to event logger."

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + Selection (one or more): vulnerability scanning information; performance data; information system monitoring information; penetration test data; [Organization -defined data/information collected from other sources] + + + Organization -defined data/information collected from other sources + + + + + +

Included in NIST High Baseline, Rev 4

+
+ +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.

+
+
+
+ + + + +

This control is not part of the NIST high baseline and was added for FedRAMP.

+
+
+
+ + information system process; role; user + + + + + +

Rationale for Selection L3-6: In support of cyber security threat / incident response activities. Supports flexibility in auditing levels based on threat level. Supports CSP integration with DoD security architecture. The sensitivity of the information at levels 3-6 warrents the adjustment of auditing levels based on threat level.

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: This CE supports cyber security threat / incident response activities and flexibility in auditing levels based on threat level. This CE also supports CSP integration with DoD security architecture and the ability to respond to USCYBERCOM and DoD CNDSP alerts and directives.

+

NOTE L1/2: The handling of alerts from US-CERT and other credible sources is sufficient to change auditing activities if this CE is tailored in via an SLA.

+

NOTE: L3-6: The handling of alerts and directives from USCYBERCOM and DoD CNDSPs is required at these levels in addition to handling of alerts from US-CERTand other credible sources.

+

Priority for adding to FedRAMP-M: High

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + one second granularity of time measurement + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider selects primary and secondary time servers used by the NIST Internet time service. The secondary server is selected from a different geographic region than the primary server.

+

Requirement: The service provider synchronizes the system clocks of network computers that run operating systems other than Windows to the Windows Server Domain Controller emulator or to the same time source for that server.

+

Guidance: Synchronization of system clocks improves the accuracy of log analysis.

+
+
+
+ + At least hourly + + + http://tfnistgov/tf-cgi/serverscgi + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least weekly + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + minimum actions including the addition, modification, deletion, approval, sending, or receiving of data + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider retains audit records on-line for at least ninety days and further preserves audit records off-line for a period that is in accordance with NARA requirements.

+
+
+
+ + at least one (1) year + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all information system and network components where audit capability is deployed/available + + + all information system and network components where audit capability is deployed/available + + + + + +

Non-repudiation

+
+
+
+ + all network, data storage, and computing devices + + + all network, data storage, and computing devices + + + + + +

Non-repudiation

+
+
+
+ + service provider-defined individuals or roles with audit configuration responsibilities + + + all network, data storage, and computing devices + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + individuals or roles to include FedRAMP PMO + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: For JAB Authorization, must use an accredited 3PAO.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: To include 'announced', 'vulnerability scanning'

+
+
+
+ + at least annually + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + any FedRAMP Accredited 3PAO + + + any FedRAMP Accredited 3PAO + + + the conditions of the JAB/AO in the FedRAMP Repository + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + At least annually and on input from FedRAMP + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Refer to Appendix H - Cloud Considerations of the TIC 2.0 Reference Architecture document.

+
+
+
+ + boundary protections which meet the Trusted Internet Connection (TIC) requirements + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: For JAB Authorization, CSPs shall include details of this control in their Architecture Briefing

+
+
+
+ + deny-all, permit by exception + + + any systems + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Requirement: POA&Ms must be provided at least monthly.

+
+
+
+ + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(c) Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F. The service provider describes the types of changes to the information system or the environment of operations that would impact the risk posture. The types of changes are approved and accepted by the JAB/AO.

+
+
+
+ + at least every three (3) years or when a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: Operating System Scans: at least monthly Database and Web Application Scans: at least monthly All scans performed by Independent Assessor: at least annually

+

Guidance: CSPs must provide evidence of closure and remediation of high vulnerabilities within the timeframe for standard POA&M updates.

+

Operating System Scans: at least monthly

+

Database and Web Application Scans: at least monthly

+

All scans performed by Independent Assessor: at least annually

+
+
+
+ + to meet Federal and FedRAMP requirements (See additional guidance) + + + to meet Federal and FedRAMP requirements (See additional guidance) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. Organization requires independent data to validate that current security monitoring continues to target the right data, and that no gaps have opened between what is currently measured and what needs to be measured given the constantly evolving threat environment. In particular, the organization determines that security management will need trend analytics tuned to the current security climate to ensure the organization's security officials maintain general situational awareness of larger security trends that may pose a threat to the organization's high-impact systems fielded in shared-service environments.

+

ANALYSIS. Implementation of this control should provide security management with a technical advantage by forcing them to maintain continual current awareness of the larger security threat-scape, rather than become lost in the lower-level details of specific security metrics.

+

SAMPLE THREAT VECTORS ADDRESSED. Stakeholders do not have the information they need to make sound decisions due to technology capability. System fails to send alarms, logs, and other pertinent data to the event manager. Control processes involve too many layers of review, concurrence, and revision to support effective and timely conveyance of relevant information to decision-makers. Monitoring not effectively linked to control processes.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored, Controlled

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F, page F-7.

+
+
+
+ + at least annually or when a significant change occurs + + + to include when directed by the JAB + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + organization-defined previous versions of baseline configurations of the previously approved baseline configuration of IS components + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider establishes a central means of communicating major changes to or developments in the information system or environment of operations that may affect its services to the federal government and associated service consumers (e.g., electronic bulletin board, web status page). The means of communication are approved and accepted by the JAB/AO.

+

(e) Guidance: In accordance with record retention policies and procedures.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + organization agreed upon time period + + + organization defined configuration management approval authorities + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Rationale for De-Selection L1/2: The sensitivity of the information at these levels may not require a information security representative to be a member of the organization-defined configuration change control element.

+

Rationale for Selection L3-6: This is a best business practice for the protection of the CSP and customer alike in that the security representative will be more aware of IA issues that configuration changes can introduce and he/she can more easily provide IA guidance for issues spotted.

+
+
+
+ + Configuration control board (CCB) or similar (as defined in CM-3) + + + + + +

Rationale for SA L1: Cryptographic mechanisms are only required at this level for priviledged user (system administrator / SA) access control and the transport of privileged commands or configuration files. Not the publicly released information served at this level.

+

Rationale for Selection L2-6: Best practice. Supplemental guidance for this CE refers primarily to the processes surrounding the management of the cryptographic mechanisms used. These processes need to be under change management that addresses security concerns to ensure they remain secure.

+

CE supplemental guidance.

+

Regardless of the cryptographic means employed (e.g., public key, private key, shared secrets), organizations ensure that there are processes and procedures in place to effectively manage those means. For example, if devices use certificates as a basis for identification and authentication, there needs to be a process in place to address the expiration of those certificates.

+

Priority for adding to FedRAMP-M: High

+
+
+
+ + All security safeguards that rely on cryptography + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + at least every thirty (30) days + + + at least every thirty (30) days + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: If digital signatures/certificates are unavailable, alternative cryptographic integrity checks (hashes, self-signed certs, etc.) can be utilized.

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least quarterly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a)-1 Requirement 1: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish configuration settings or establishes its own configuration settings if USGCB is not available.

+

(a)-2 Requirement 2: The service provider shall ensure that checklists for configuration settings are Security Content Automation Protocol (SCAP) validated or SCAP compatible (if validated checklists are not available).

+

(a) Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(b) Requirement: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish list of prohibited or restricted functions, ports, protocols, and/or services or establishes its own list of prohibited or restricted functions, ports, protocols, and/or services if USGCB is not available.

+

Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+

(Partially derived from AC-17(8).

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: This control shall be implemented in a technical manner on the information system to only allow programs to run that adhere to the policy (i.e. white listing). This control is not to be based off of strictly written policy on what is allowed or not allowed to run.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least quarterly or when there is a change + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: must be provided at least monthly or when there is a change.

+
+
+
+ + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + Continuously, using automated mechanisms with a maximum five-minute delay in detection. + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + position and role + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + Continuously (via CM-7 (5)) + + + + + +

NEED. High-impact systems will require special measures to ensure users cannot place the overall system at risk by installing unauthorized software. This control supports that need.

+

ANALYSIS. Implementation of these controls is well understood, and relies on capabilities provided in COTS operating systems.

+

SAMPLE THREAT VECTORS. The system executes malicious and harmful software. Software updates could render the system unstable or cause it to function incorrectly. Software is not designed with adequate safeguards to protect PII and other sensitive information. Users could make mistakes in following policy. Users could intentionally install unapproved/unvetted software.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Quality Assured, Substantiated Integrity, Maintainable, Testable, Configuration Managed, Change Managed, Supported, Assessed, Auditable, Authorized, Regulated, Enforcement, Controlled, Reliable, Providing Good Data Stewardship, Assured, Confidential, Access-Controlled

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: For JAB authorizations the contingency lists include designated FedRAMP personnel.

+
+
+
+ + at least annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + time period defined in service provider and organization SLA + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + ten (10) days + + + at least annually + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirement: The service provider develops test plans in accordance with NIST Special Publication 800-34 (as amended); plans are approved by the JAB/AO prior to initiating testing.

+
+
+
+ + at least annually + + + functional exercises + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirement: The service provider defines a time period consistent with the recovery time objectives and business impact analysis.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: The service provider may determine what is considered a sufficient degree of separation between the primary and alternate processing sites, based on the types of threats that are of concern. For one particular type of threat (i.e., hostile cyber attack), the degree of separation between sites will be less relevant.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider defines a time period consistent with the recovery time objectives and business impact analysis.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider shall determine what elements of the cloud environment require the Information System Backup control. The service provider shall determine how Information System Backup is going to be verified and appropriate periodicity of the check.

+

(a) Requirement: The service provider maintains at least three backup copies of user-level information (at least one of which is available online) or provides an equivalent alternative.

+

(b) Requirement: The service provider maintains at least three backup copies of system-level information (at least one of which is available online) or provides an equivalent alternative.

+

(c) Requirement: The service provider maintains at least three backup copies of information system documentation including security information (at least one of which is available online) or provides an equivalent alternative.

+
+
+
+ + daily incremental; weekly full + + + daily incremental; weekly full + + + daily incremental; weekly full + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + time period and transfer rate consistent with the recovery time and recovery point objectives defined in the service provider and organization SLA + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + time period consistent with the restoration time-periods defined in the service provider and organization SLA + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: PIV=separate device. Please refer to NIST SP 800-157 Guidelines for Derived Personal Identity Verification (PIV) Credentials.

+
+
+
+ + FIPS 140-2, NIAP Certification, or NSA approval + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Include Common Access Card (CAC), i.e., the DoD technical implementation of PIV/FIPS 201/HSPD-12.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(e) Requirement: The service provider defines the time period of inactivity for device identifiers.

+

Guidance: For DoD clouds, see DoD cloud website for specific DoD requirements that go above and beyond FedRAMP http://iase.disa.mil/cloud_security/Pages/index.aspx.

+
+
+
+ + at a minimum, the ISSO (or similar role within the organization) + + + at least two (2) years + + + thirty-five (35) days (See additional requirements and guidance.) + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + contractors; foreign nationals] + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: Authenticators must be compliant with NIST SP 800-63-2 Electronic Authentication Guideline assurance Level 4 (Link http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63-2.pdf)

+
+
+
+ + to include sixty (60) days for passwords + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + case sensitive, minimum of fourteen (14) characters, and at least one (1) each of upper-case letters, lower-case letters, numbers, and special characters + + + at least fifty percent (50%) + + + one (1) day minimum, sixty (60) day maximum + + + twenty four (24) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + All hardware/biometric (multifactor authenticators) + + + in person + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: If automated mechanisms which enforce password authenticator strength at creation are not used, automated mechanisms must be used to audit strength of created password authenticators.

+
+
+
+ + complexity as identified in IA-5 (1) Control Enhancement Part (a) + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. In those cases where an organization's user accounts authenticate to more than one system, and at least one of those systems is a high-impact system implemented in a shared-service environment, then this control is warranted as a baseline capability to guard against loss of high-impact, sensitive information.

+

ANALYSIS. Organizations can use COTS tools and techniques to implement this control in many ways. Agencies should be prepared to document their plan and approach to this control technique.

+

THREAT VECTORS ADDRESSED. A user's account password is cracked, permitting attackers to identify all systems to which the user has access, and to gain access to the information in those systems.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored, Assessed

+
+
+
+ + different authenticators on different systems + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Rationale for Selection: Best practice for authenticated web services and best business practice for the protection of the CSP and customer alike. ECSB sees this as a significant value add toward the protection of customer accounts on SaaS or customer service / managent interfaces/portals.

+

L1 Rationale for SA: No authenticators are required for user access to public informationl. Info sensitivity does not warrant. However this CE would be required priviledged user access to manage the system server(s) containing public information.

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: CSP must minimally implement this control enhancement on all SaaS offerings and customer service / managent interfaces. The time period can be negotiated in the SLA.

+

NOTE: while the browser or other client cashes the authenticator, the server must enforce its expiration if the client does not.

+

Priority for adding to FedRAMP-M: Low

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + within ten (10) days + + + at least annually + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

-2 Requirement: The service provider defines tests and/or exercises in accordance with NIST Special Publication 800-61 (as amended). For JAB authorization, the service provider provides test plans to the JAB/AO annually. Test plans are approved and accepted by the JAB/AO prior to test commencing.

+
+
+
+ + at least every six (6) months + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider ensures that individuals conducting incident handling meet personnel security requirements commensurate with the criticality/sensitivity of the information being processed, stored, and transmitted by the information system.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. Organization requires near real-time subsystem reconfiguration for high-impact systems, especially those deployed wholly or partially into shared-service environments. This dynamic reconfiguration is required for core infrastructure components such as routers, firewalls, messaging gateways, or access control/authentication servers, especially when these core components are under cyber-attack.

+

ANALYSIS. These critical cyber controls are well understood, and to some extent their automated capability has been established. Other aspects still require human decisions. Since this technology area is rapidly changing to meet new cyber-threat scenarios, it is expected that implementation of this control will be subject to significant change for the foreseeable future. Even so, its technology advantages are clear, especially for high-impact systems infrastructure.

+

SAMPLE THREAT VECTORS. System does not have error-correcting or self-recovery capabilities. The system is not designed to allow for quick remediation of threats that will impact the system.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Survivable, Absorptive, Adaptive, Restorable

+
+
+
+ + all network, data storage, and computing devices + + + + + +

NEED. Due to the direct connection between system function and critical mission/business capability, the system requires Continuity-of-Operations (COOP) controls.

+

ANALYSIS. These critical cyber controls are well understood, and to some extent their automated capability has been established. Other aspects still require human decisions. Since this technology area is rapidly changing to meet new cyber-threat scenarios and also changes in subsystem technology, it is expected that implementation of this control will be subject to significant change for the foreseeable future. Even so, its technology advantages are fundamental, especially for high-impact systems infrastructure.

+

SAMPLE THREAT VECTORS. The system does not have error-correcting or self-recovery capabilities. The system is not designed to allow for quick remediation of threats that will impact the system. Time does not allow for the design in error handling, self-recovery, or to capitalize on system diversity to restore a system. Also, the organization lacks the expertise to develop or implement a plan for restoring system. A malicious change may be implemented to counter the ability to restore the system.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Survivable, Absorptive, Adaptable, Restorable

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

NEED. High-impact systems will require special measures to ensure security incidents are correctly and effectively handled in a timely manner. This high-level control supports that need, and is therefore warranted as a baseline for high-impact systems in shared-service environments.

+

ANALYSIS. Implementation of this general control is well understood among Departments and Agencies. However, it may require special funding and time to implement in a shared service environment, where response roles and responsibilities demand vigilant analysis and definition.

+

SAMPLE THREAT VECTORS. Insiders gain access to information for which they have no authorization. Insiders push sensitive information to outside networks not authorized to receive it. Insiders violate agency information-security policies. Insider actions are not monitored.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Agile, Owned, Enforcement

+
+
+
+ + + + +

This control was recommended ecommended by the High Baseline Tiger Team.

+
+
+
+ + external organizations including consumer incident responders and network defenders and the appropriate CIRT/CERT (such as US-CERT, DOD CERT, IC CERT) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: Reports security incident information according to FedRAMP Incident Communications Procedure.

+
+
+
+ + US-CERT incident reporting timelines as specified in NIST Special Publication 800-61 (as amended) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(b) Requirement: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+

(e) Requirement: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+
+
+
+ + see additional FedRAMP Requirements and Guidance + + + at least annually + + + see additional FedRAMP Requirements and Guidance + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + the information owner explicitly authorizing removal of the equipment from the facility + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Rationale for Selection: Best practice business practice for the protection of the CSP and customer alike. Protects against unauthorized access and compromise of the CSP infrastructure. See Supplemental Guidance

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: While AC-17(2) is similar to this CE and implements cryptographic mechanisms to protect the confidentiality and integrity of remote access sessions, System configuration, maintenance and diagnostic communications can be considered sensitive information and it is in DoD. Maintaining the confidrntiality and integrity of nonlocal maintenance and diagnostic communications helps maintain the health of the system, prevents unauthorized access from sniffing and MITM atacks, etc. While beneficial this selection may not be required for nonlocal maintenance and diagnostic communications over the CSP's private network and particularly if that network is out of band. Encryption is required if such communications are over a network external to the CSP (e.g., the Internet).

+

Priority for adding to FedRAMP-M: High

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + any digital and non-digital media deemed sensitive + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(b) Guidance: Second parameter not-applicable

+
+
+
+ + no removable media types + + + organization-defined security safeguards not applicable + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirement: The service provider defines controlled areas within facilities where the information and information system reside.

+
+
+
+ + all types of digital and non-digital media with sensitive information + + + see additional FedRAMP requirements and guidance + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirement: The service provider defines security measures to protect digital and non-digital media in transport. The security measures are approved and accepted by the JAB.

+
+
+
+ + all media with sensitive information + + + prior to leaving secure/controlled environment: for digital media, encryption using a FIPS 140-2 validated encryption module; for non-digital media, secured in locked container + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + techniques and procedures IAW NIST SP 800-88 and Section 5.9: Reuse and Disposal of Storage Media and Hardware + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Equipment and procedures may be tested or validated for effectiveness

+
+
+
+ + at least every six (6) months + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least every ninety (90) days + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + CSP defined physical access control systems/devices AND guards + + + CSP defined physical access control systems/devices + + + in all circumstances within restricted access area where the information system resides + + + at least annually + + + at least annually + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + for a minimum of one (1) year + + + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + service provider building maintenance/physical security personnel + + + service provider emergency responders with incident response responsibilities + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirements: The service provider measures temperature at server inlets and humidity levels by dew point.

+
+
+
+ + consistent with American Society of Heating, Refrigerating and Air-conditioning Engineers (ASHRAE) document entitled Thermal Guidelines for Data Processing Environments + + + continuously + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + service provider building maintenance/physical security personnel + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all information system components + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + physical and environmental hazards identified during threat assessment + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(b) Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F, page F-7.

+
+
+
+ + at least annually or when a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + for national security clearances; a reinvestigation is required during the fifth (5th) year for top secret security clearance, the tenth (10th) year for secret security clearance, and fifteenth (15th) year for confidential security clearance. For moderate risk law enforcement and high impact public trust level, a reinvestigation is required during the fifth (5th) year. There is no reinvestigation for other moderate risk positions or any low risk positions + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + personnel screening criteria - as required by specific information + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + eight (8) hours + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + access control personnel responsible for disabling access to the system + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + twenty-four (24) hours + + + twenty-four (24) hours + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually and any time there is a change to the user's level of access + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + terminations: immediately; transfers: within twenty-four (24) hours + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at a minimum, the ISSO and/or similar role within the organization + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F.

+

(d) Requirement: Include all Authoring Officials and FedRAMP ISSOs.

+
+
+
+ + security assessment report + + + at least annually or whenever a significant change occurs + + + annually + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(a) Requirement: an accredited independent assessor scans operating systems/infrastructure, web applications, and databases once annually.

+

(e) Requirement: to include the Risk Executive; for JAB authorizations to include FedRAMP

+
+
+
+ + monthly operating system/infrastructure; monthly web applications and databases + + + high-risk vulnerabilities mitigated within thirty (30) days from date of discovery; moderate-risk vulnerabilities mitigated within ninety (90) days from date of discovery + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + prior to a new scan + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + notify appropriate service provider personnel and follow procedures for organization and service provider-defined corrective actions + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + operating systems / web applications / databases + + + all scans + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: include in Continuous Monitoring ISSO digest/report to JAB/AO

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirements: This enhancement is required for all high vulnerability scan findings.

+

Guidance: While scanning tools may label findings as high or critical, the intent of the control is based around NIST's definition of high vulnerability.

+
+
+
+ + + + +

NEED. Organizations commonly run vulnerability scanning tools against diverse enterprise systems and subsystems. These tools are often attuned to the specific subsystems, and often provided by different manufacturers. Because there is no single-vendor consolidation of all scanning tools, organizations need to correlate the outputs of these tools in order to triangulate on potential threats that may be related, or identical at their source. When the security impact is high a shared-service environment may increase the number of independent scanning tools, implementation of this control is warranted.

+

ANALYSIS. Although this control is well understood by vendors, its implementation takes many forms, depending on the scanning tools adopted by a particular organization.

+

SAMPLE THREAT VECTORS. Different scanning tools discover low-impact vulnerabilities in multiple subsystems of a system. Considered individually, none of them warrants immediate action,; yet when considered together, they constitute a significant attack pattern.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Interoperable, Change Managed, Agile, Supported, Assessed, Monitored

+
+ +

Guidance: If multiple tools are not used, this control is not applicable.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: The use of Common Criteria (ISO/IEC 15408) evaluated products is strongly preferred.

+

See http://www.niap-ccevs.org/vpl or http://www.commoncriteriaportal.org/products.html.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at a minimum to include security-relevant external system interfaces; high-level design; low-level design; source code or network and data flow diagram; [organization-defined design/implementation information] + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: CSP must use the same security standards regardless of where the system component or information system service is acquired.

+
+
+
+ + at least the minimum requirement as defined in control CA-7 + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at a minimum, the ISSO (or similar role within the organization) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + FedRAMP Security Controls Baseline(s) if Federal information is processed or stored within the external system + + + Federal/FedRAMP Continuous Monitoring requirements must be met for external systems where Federal information is processed or stored + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all external systems where Federal information is processed or stored + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all external systems where Federal information is processed or stored + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + information processing, information data, AND information services + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

(e) Requirement: for JAB authorizations, track security flaws and flaw resolution within the system, component, or service and report findings to organization-defined personnel, to include FedRAMP.

+
+
+
+ + development, implementation, AND operation + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider documents in the Continuous Monitoring Plan, how newly developed code for the information system is reviewed.

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider documents in the Continuous Monitoring Plan, how newly developed code for the information system is reviewed.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + organization and service provider-defined personnel security requirements, approved HW/SW vendor list/process, and secure SDLC procedures + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + as needed and as dictated by the current threat posture + + + organization and service provider- defined security requirements + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least every ninety (90) days or whenever there is a change in the threat environment that warrants a review of the exceptions] + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. High-impact systems warrant careful attention to scenarios associated with exfiltration of sensitive organizational information. Different systems and implementation will trigger different scenarios, but regardless of the specific system context, organizations are warranted in establishing this control for high-impact systems with subsystems deployed into shared-service environments.

+

ANALYSIS. Organizations should devote careful attention to design considerations relative to this control.

+

SAMPLE THREAT VECTORS. Authorized processes push very large volumes of data to external networks. Internal devices send address/status/security information to external networks.

+

RELEVANT SECURITY CONTROL ATTRIBUTES: Integrity-Assured, Absorptive, Survivable, Adaptive, Agile, Auditable, Monitored, Controlled, Data Controllable, Access-Controlled

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + Host Intrusion Prevention System (HIPS), Host Intrusion Detection System (HIDS), or minimally a host-based firewall + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The service provider defines key information security tools, mechanisms, and support components associated with system and security administration and isolates those tools, mechanisms, and support components from other internal information system components via physically or logically separate subnets.

+

Guidance: Examples include: information security tools, mechanisms, and support components such as, but not limited to PKI, patching infrastructure, cyber defense tools, special purpose gateway, vulnerability tracking systems, internet access points (IAPs); network element and data center administrative/management traffic; Demilitarized Zones (DMZs), Server farms/computing centers, centralized audit log servers etc.

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. High-impact systems warrant careful attention to situations where specific sources or methods become suspect. Such situations can involve specific user accounts, messages, message payloads, data, applications, or even entire subsystems. Under these circumstances, a capability for dynamic segregation is highly justified.

+

ANALYSIS. Isolation techniques are well understood in the cyber market, and constantly evolving. Example techniques include honey pots and honey nets. Both techniques can isolate a user, an autonomous application, or an entire subsystem.

+

SAMPLE THREAT VECTORS. Anomalous user behavior is detected Messages arrive from suspect domains. Messages arrive with suspect attachments. Applications begin to behave anomalously. Subsystems begin moving data anomalously.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Integrity-Assured, Absorptive, Survivable, Adaptive, Agile, Auditable, Monitored, Controlled, Data Controllable, Access-Controlled

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + confidentiality AND integrity + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + prevent unauthorized disclosure of information AND detect changes to information + + + a hardened or alarmed carrier Protective Distribution System (PDS) + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + no longer than ten (10) minutes for privileged sessions and no longer than fifteen (15) minutes for user sessions + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: Federally approved cryptography

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + NIST FIPS-compliant + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + FIPS-validated or NSA-approved cryptography + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Requirement: The information system provides disablement (instead of physical disconnect) of collaborative computing devices in a manner that supports ease of use.

+
+
+
+ + no exceptions + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Rationale for Selection: Rationale for Selection for SA L1: At L1 this CE is only applicable to privileged user sessions.

+

Rationale for Selection L1-6: Best Practice; APT. This CE mitigates the threat/vulnerability inherant in authenticated sessions whereby If an adversary captures a session identifier that remains valid after the session is terminated, the adversary could use it to reinitiate the session thus gaining unauthorized access to CSP and CSP customer resources and information/data.

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: If an adversary captures a session identifier that remains valid after the session is terminated, the adversary could use it to reinitiate the session thus gaining unauthorized access to CSP and/or CSP customer resources and information/data. While unnessary for user sessions at L1, this enhancement is selected for System Administrator sessions.

+

Priority for adding to FedRAMP-M: High

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: The organization supports the capability to use cryptographic mechanisms to protect information at rest.

+
+
+
+ + confidentiality AND integrity + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + all information system components storing customer data deemed sensitive + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least annually + + + at least annually or whenever a significant change occurs + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + thirty (30) days of release of updates + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least monthly + + + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + at least weekly + + + to include endpoints + + + to include blocking and quarantining malicious code and alerting administrator or defined security personnel near-realtime + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: See US-CERT Incident Response Reporting Guidelines.

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + continuously + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+ +

Guidance: In accordance with the incident response plan.

+
+
+
+ + + + +

NEED. When a high-impact system is implemented in a shared-service environment, organizations should ensure their sensitive data is properly protected against classic threats to the confidentiality of its sensitive information. This control partially meets that need.

+

ANALYSIS. The tools and techniques for implementing this monitoring control are now well understood and embedded in COTS operating systems and software.

+

SAMPLE THREAT VECTORS. Large outbound file transfers execute without being detected. External malware network sites are accessed from within the organization without detection. Network sessions remain connected for long periods of time without detection. Esoteric protocols are active and undetected on ports not defined by the organization.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. When a high-impact system is implemented in a shared-service environment, organizations should ensure their sensitive data is properly protected against classic threats to the confidentiality of sensitive information. This control partially meets that need.

+

ANALYSIS. The tools and techniques for implementing this monitoring control are now well understood, and embedded in COTS operating systems and software.

+

SAMPLE THREAT VECTORS. Large outbound files are disguised to transfer without being detected. Communications with external malware network sites are embedded to avoid detection.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Substantiated Integrity, Monitored, Assessed

+
+
+
+ + + + +

Rationale for De-Selection L1-3: The information sensitivity at these levels does not seem to warrant implementation of this CE. The costs for instituting fine-grained monitoring per individual far may outweigh the risks

+

Rationale for selection L4-6: SP Insider Threat mitigation; The information sensitivity at these levels warrants implementation of this CE.Best business practice for the protection of the CSP and customer alike. This enhancement works in conjunction with AC-2 (13) account disablement for such individuals and IR-4 (6).

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: This enhancement works in conjunction with or opposite of AC-2 (13) which requires acount disablement within a specific time frame of discovering or identifying an individual posing a significant insider threat. In some instances the best action is not to terminate the individual's account, but rather to monitor their actions. This allows for the ability to collect evidence (for prosecution) and obtain insight into the TTPs that they may be using and others they may working with. Termination of the account is often best left as a final act.

+

Priority for adding to FedRAMP-M: Moderate

+
+
+
+ + + + +

Rationale for Selection: Best business practice for the protection of the CSP and customer alike. Given the scale of a cloud, the possible harm by an malicious insider is greatly magnified over normal systems.

+

ECSB Supplemental Guidance as the C/CE relates to CSPs: his CE is on a par with SI-4 (9), IR-4 (6) and the various other insider threat Cs/CEs. Supports the mitigation of insider threat from those that can do the most damage. While CSPs typically claim they only have privileged users in their infrastructure (other than customers), this CEadds value for privilege users that have higher privilege than others. These higher privileged users should be subject to additional monitoring.

+

Priority for adding to FedRAMP-M: High

+
+
+
+ + + + +

NEED. When a high-impact system is implemented across networks in a shared-service environment, organizations should monitor network services to protect against unauthorized services capable of exfiltrating sensitive information. This control meets that monitoring need.

+

ANALYSIS. The tools and techniques for implementing this monitoring control are well understood, and embedded in COTS operating systems and software.

+

SAMPLE THREAT VECTORS. Systems daemons and application services running in the background, exfiltrating sensitive information to external networks.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored, Assessed

+
+
+
+ + + + +

Included in FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

NEED. When a high-impact system is implemented across networks in a shared-service environment, organizations should aggressively monitor for symptoms that system integrity has been compromised. This control addresses that monitoring need.

+

ANALYSIS. The tools and techniques for implementing this monitoring control are no longer unusual, but their implementation still requires careful initial analysis of tools, standards, and sources for indicators of compromise (IOC) data. This capability is not a simple matter of installing COTS software and watching for alerts. Rather, it requires staff to maintain a keen understanding of the threat-scape in order to properly understand the alerts coming from the IOC subsystem.

+

SAMPLE THREAT VECTORS. Temporary files appear but are not associated with any known system processes; independent security services warn of new surveillance techniques appearing globally; evidence of those new techniques appears in an organization's event logs. Reports on the payload of a new botnet indicate that the system has been touched by the botnet.

+

RELEVANT SECURITY CONTROL ATTRIBUTES. Monitored, Assessed

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + to include US-CERT + + + to include system security personnel and administrators with configuration/patch-management responsibilities + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + to include upon system startup and/or restart + + + at least monthly + + + to include system administrators and security personnel + + + to include notification of system administrators and security personnel + + + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + selection to include security relevant events + + + at least monthly + + + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+ + + + +

Included in NIST High Baseline, Rev 4 and FedRAMP Moderate Baseline, Rev 4

+
+
+
+
+
diff --git a/test_util/artifacts/FedRAMP_LOW-baseline_profile.xml b/test_util/artifacts/FedRAMP_LOW-baseline_profile.xml new file mode 100644 index 00000000..b104f067 --- /dev/null +++ b/test_util/artifacts/FedRAMP_LOW-baseline_profile.xml @@ -0,0 +1,836 @@ + + + FedRAMP LOW Baseline PROFILE + + Federal Risk and Authorization Management Program (FedRAMP) + info@fedramp.gov + https://fedramp.gov + FedRAMP Low Baseline + 8/6/2018 + 1.0 + FedRAMP PMO + No notes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + not more than three + + + fifteen minutes + + + locks the account/node for thirty minutes + + + locks the account/node for thirty minutes + + + + + +

Requirement: The service provider shall determine elements of the cloud environment that require the System Use Notification control. The elements of the cloud environment that require System Use Notification are approved and accepted by the JAB.

+

Requirement: The service provider shall determine how System Use Notification is going to be verified and provide appropriate periodicity of the check. The System Use Notification verification and periodicity are approved and accepted by the JAB.

+

Guidance: If performed as part of a Configuration Baseline check, then the % of items requiring setting that are checked and that pass (or fail) check can be provided. AC-8 Requirement: If not performed as part of a Configuration Baseline check, then there must be documented agreement on how to provide results of verification and the necessary periodicity of the verification by the service provider. The documented agreement on how to provide verification of the results are approved and accepted by the JAB.

+
+
+
+ + see additional Requirements and Guidance + + + see additional Requirements and Guidance + + + + + + + + + at least quarterly + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + at least annually + + + + At least one year + + + + at least every 3 years + + + at least annually + + + + + +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.

+
+
+
+ + Successful and unsuccessful account logon events, account management events, object access, policy change, privilege functions, process tracking, and system events For Web applications: all administrator activity, authentication checks, authorization checks, data deletions, data access, data changes, and permission changes + + + organization-defined subset of the auditable events defined in AU-2 a to be audited continually for each identified event + + + + + + organization-defined actions to be taken (overwrite oldest record) + + + + + +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO. In multi-tennant environments, capability and means for providing review, analysis, and reporting to consumer for data pertaining to consumer shall be documented.

+
+
+
+ + at least weekly + + + + + + + +

Requirement: The service provider retains audit records on-line for at least ninety days and further preserves audit records off-line for a period that is in accordance with NARA requirements.

+
+
+
+ + at least ninety days + + + + all information system and network components where audit capability is deployed/available + + + all information system and network components where audit capability is deployed/available + + + + at least every 3 years + + + at least annually + + + + at least annually + + + individuals or roles to include FedRAMP PMO + + + + + +

Requirement: Must use an accredited 3PAO for JAB authorization

+
+
+
+ + + at least annually and on input from FedRAMP + + + + + +

Guidance: Requirement: POA&Ms must be provided at least monthly.

+
+
+
+ + at least monthly + + + + + +

-c. Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F. The service provider describes the types of changes to the information system or the environment of operations that would impact the risk posture. The types of changes are approved and accepted by the JAB/AO.

+
+
+
+ + at least every three years or when a significant change occurs + + + + + +

Requirement: Operating System Scans: at least monthly Database and Web Application Scans: at least monthly All scans performed by Independent Assessor: at least annually

+

Guidance: CSPs must provide evidence of closure and remediation of high vulnerabilities within the timeframe for standard POA&M updates.

+

Operating System Scans: at least monthly

+

Database and Web Application Scans: at least monthly

+

All scans performed by Independent Assessor: at least annually

+
+
+
+ + to meet Federal and FedRAMP requirements (See additional guidance) + + + to meet Federal and FedRAMP requirements (See additional guidance) + + + + + at least every 3 years + + + at least annually + + + + + + + +

(a) Requirement 1: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish configuration settings or establishes its own configuration settings if USGCB is not available.

+

(a) Requirement 2: The service provider shall ensure that checklists for configuration settings are Security Content Automation Protocol (SCAP) validated or SCAP compatible (if validated checklists are not available).

+

(a) Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + + +

(b) Requirement: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish list of prohibited or restricted functions, ports, protocols, and/or services or establishes its own list of prohibited or restricted functions, ports, protocols, and/or services if USGCB is not available.

+

Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+

(Partially derived from AC-17(8).)

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + + +

Requirement: must be provided at least monthly or when there is a change.

+
+
+
+ + at least monthly + + + + + Continuously (via CM-7 (5)) + + + + at least every 3 years + + + at least annually + + + + + +

Requirement: For JAB authorizations the contingency lists include designated FedRAMP personnel.

+
+
+
+ + at least annually + + + + ten (10) days + + + at least annually + + + + + +

(a). Requirement: The service provider develops test plans in accordance with NIST Special Publication 800-34 (as amended); plans are approved by the JAB/AO prior to initiating testing.

+
+
+
+ + at least every three years + + + classroom exercises/table top written tests + + + + + +

Requirement: The service provider shall determine what elements of the cloud environment require the Information System Backup control. The service provider shall determine how Information System Backup is going to be verified and appropriate periodicity of the check.

+

(a) Requirement: The service provider maintains at least three backup copies of user-level information (at least one of which is available online) or provides an equivalent alternative.

+

(b) Requirement: The service provider maintains at least three backup copies of system-level information (at least one of which is available online) or provides an equivalent alternative.

+

(c) Requirement: The service provider maintains at least three backup copies of information system documentation including security information (at least one of which is available online) or provides an equivalent alternative.

+
+
+
+ + daily incremental; weekly full + + + daily incremental; weekly full + + + daily incremental; weekly full + + + + + at least every 3 years + + + at least annually + + + + + + + +

Guidance: Include Common Access Card (CAC), i.e., the DoD technical implementation of PIV/FIPS 201/HSPD-12.

+
+
+
+ + + + +

(e) Requirement: The service provider defines time period of inactivity for device identifiers.

+

Guidance: For DoD clouds, see DoD cloud website for specific DoD requirements that go above and beyond FedRAMP http://iase.disa.mil/cloud_security/Pages/index.aspx.

+
+
+
+ + IA-4 (d) [at least two years] + + + ninety days for user identifiers (See additional requirements and guidance) + + + + to include sixty (60) days for passwords + + + + case sensitive, minimum of twelve characters, and at least one each of upper-case letters, lower-case letters, numbers, and special characters + + + at least one + + + one day minimum, sixty day maximum + + + twenty four + + + + + + + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + +

Requirement: The service provider ensures that individuals conducting incident handling meet personnel security requirements commensurate with the criticality/sensitivity of the information being processed, stored, and transmitted by the information system.

+
+
+
+ + + + + +

Requirement: Reports security incident information according to FedRAMP Incident Communications Procedure.

+
+
+
+ + US-CERT incident reporting timelines as specified in NIST Special Publication 800-61 (as amended) + + + + + + +

(b) Additional FedRAMP Requirements and Guidance: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+

(e) Additional FedRAMP Requirements and Guidance: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+
+
+
+ + see additional FedRAMP Requirements and Guidance + + + at least annually + + + see additional FedRAMP Requirements and Guidance + + + + at least every 3 years + + + at least annually + + + + + + + at least every 3 years + + + at least annually + + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + CSP defined physical access control systems/devices AND guards + + + CSP defined physical access control systems/devices + + + in all circumstances within restricted access area where the information system resides + + + at least annually + + + at least annually + + + + at least monthly + + + + for a minimum of one (1) year + + + at least monthly + + + + + + + +

(a). Requirements: The service provider measures temperature at server inlets and humidity levels by dew point.

+
+
+
+ + consistent with American Society of Heating, Refrigerating and Air-conditioning Engineers (ASHRAE) document entitled Thermal Guidelines for Data Processing Environments + + + continuously + + + + + all information system components + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + At least every 3 years + + + + at least every 3 years + + + at least annually + + + + at least every three years + + + + PS-3 (b) [for national security clearances; a reinvestigation is required during the 5th year for top secret security clearance, the 10th year for secret security clearance, and 15th year for confidential security clearance +For moderate risk law enforcement and high impact public trust level, a reinvestigation is required during the 5th year There is no reinvestigation for other moderate risk positions or any low risk positions] + + + + same day + + + + five days of the time period following the formal transfer action (DoD 24 hours) + + + + at least annually + + + at least annually + + + + organization-defined time period - same day + + + + + at least every 3 years + + + at least annually + + + + + + +

Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F.

+
+
+
+ + security assessment report + + + at least every three (3) years or when a significant change occurs + + + to include all Authoring Officials and FedRAMP ISSOs + + + at least every three (3) years or when a significant change occurs + + + + + +

(a) Requirement: an accredited independent assessor scans operating systems/infrastructure, web applications, and databases once annually.

+

(e) Requirement: to include the Risk Executive; for JAB authorizations to include FedRAMP

+
+
+
+ + monthly operating system/infrastructure; monthly web applications and databases + + + high-risk vulnerabilities mitigated within thirty days from date of discovery; moderate-risk vulnerabilities mitigated within ninety days from date of discovery + + + + at least every 3 years + + + at least annually + + + + + + + +

Guidance: The use of Common Criteria (ISO/IEC 15408) evaluated products is strongly preferred.

+

See http://www.niap-ccevs.org/vpl or http://www.commoncriteriaportal.org/products.html.

+
+
+
+ + + + FedRAMP Security Controls Baseline(s) if Federal information is processed or stored within the external system + + + Federal/FedRAMP Continuous Monitoring requirements must be met for external systems where Federal information is processed or stored + + + + at least every 3 years + + + at least annually + + + + + + + +

Guidance: Federally approved cryptography

+
+
+
+ + + FIPS-validated or NSA-approved cryptography + + + + + +

Additional FedRAMP Requirements and Guidance:

+

Requirement: The information system provides disablement (instead of physical disconnect) of collaborative computing devices in a manner that supports ease of use.

+
+
+
+ + no exceptions + + + + + + + + at least every 3 years + + + at least annually + + + + within 30 days of release of updates + + + + at least weekly + + + to include endpoints + + + to include alerting administrator or defined security personnel + + + + + +

Guidance: See US-CERT Incident Response Reporting Guidelines.

+
+
+
+ + + to include US-CERT + + + to include system security personnel and administrators with configuration/patch-management responsibilities + + + +
+
diff --git a/test_util/artifacts/FedRAMP_MODERATE-baseline_profile.xml b/test_util/artifacts/FedRAMP_MODERATE-baseline_profile.xml new file mode 100644 index 00000000..7dd1c695 --- /dev/null +++ b/test_util/artifacts/FedRAMP_MODERATE-baseline_profile.xml @@ -0,0 +1,1685 @@ + + + FedRAMP MODERATE Baseline PROFILE + + Federal Risk and Authorization Management Program (FedRAMP) + info@fedramp.gov + https://fedramp.gov + FedRAMP Moderate Baseline + 8/6/2018 + 1.0 + FedRAMP PMO + No notes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + no more than 30 days for temporary and emergency account types + + + + 90 days for user accounts + + + + + + +

Guidance: should use a shorter timeframe than AC-12.

+
+
+
+ + + + + +

Required if shared/group accounts are deployed

+
+
+
+ + + + +

Required if shared/group accounts are deployed

+
+
+
+ + + + +

(a) Guidance: Required for privileged accounts.

+

(b) Guidance: Required for privileged accounts.

+
+
+
+ + + + + + + +

Additional FedRAMP Requirements and Guidance:

+

Guidance: CSPs have the option to provide a separation of duties matrix as an attachment to the SSP.

+
+
+
+ + + + + + +

Guidance: Examples of security functions include but are not limited to: establishing system accounts, configuring access authorizations (i.e., permissions, privileges), setting events to be audited, and setting intrusion detection parameters, system programming, system and security administration, other privileged functions.

+
+
+
+ + all security functions + + + + + + + not more than three (3) + + + fifteen (15) minutes + + + locks the account/node for thirty minutes + + + locks the account/node for thirty minutes + + + + + +

Requirement: The service provider shall determine elements of the cloud environment that require the System Use Notification control. The elements of the cloud environment that require System Use Notification are approved and accepted by the JAB.

+

Requirement: The service provider shall determine how System Use Notification is going to be verified and provide appropriate periodicity of the check. The System Use Notification verification and periodicity are approved and accepted by the JAB.

+

Guidance: If performed as part of a Configuration Baseline check, then the % of items requiring setting that are checked and that pass (or fail) check can be provided. AC-8 Requirement: If not performed as part of a Configuration Baseline check, then there must be documented agreement on how to provide results of verification and the necessary periodicity of the verification by the service provider. The documented agreement on how to provide verification of the results are approved and accepted by the JAB.

+
+
+
+ + see additional Requirements and Guidance + + + see additional Requirements and Guidance] + + + + three (3) sessions for privileged access and two (2) sessions for non-privileged access + + + + fifteen (15) minutes + + + + + + + + + + + + no greater than 15 minutes + + + + + + + + + + + + at least quarterly + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + at least annually + + + + At least one year + + + + at least every 3 years + + + at least annually + + + + + +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO.

+
+
+
+ + Successful and unsuccessful account logon events, account management events, object access, policy change, privilege functions, process tracking, and system events For Web applications: all administrator activity, authentication checks, authorization checks, data deletions, data access, data changes, and permission changes + + + organization-defined subset of the auditable events defined in AU-2 a to be audited continually for each identified event + + + + + +

Guidance: Annually or whenever changes in the threat environment are communicated to the service provider by the JAB.

+
+
+
+ + annually or whenever there is a change in the threat environment + + + + + + +

Requirement: The service provider defines audit record types. The audit record types are approved and accepted by the JAB/AO. Guidance: For client-server transactions, the number of bytes sent and received gives bidirectional transfer information that can be helpful during an investigation or inquiry.

+
+
+
+ + session, connection, transaction, or activity duration; for client-server transactions, the number of bytes received and bytes sent; additional informational messages to diagnose or identify the event; characteristics that describe or identify the object or resource being acted upon + + + + + organization-defined actions to be taken (overwrite oldest record) + + + + + +

Requirement: Coordination between service provider and consumer shall be documented and accepted by the JAB/AO. In multi-tennant environments, capability and means for providing review, analysis, and reporting to consumer for data pertaining to consumer shall be documented.

+
+
+
+ + at least weekly + + + + + + + + + + +

Requirement: The service provider selects primary and secondary time servers used by the NIST Internet time service. The secondary server is selected from a different geographic region than the primary server.

+

Requirement: The service provider synchronizes the system clocks of network computers that run operating systems other than Windows to the Windows Server Domain Controller emulator or to the same time source for that server.

+

Guidance: Synchronization of system clocks improves the accuracy of log analysis.

+
+
+
+ + At least hourly + + + http://tfnistgov/tf-cgi/serverscgi + + + + + at least weekly + + + + + + +

Requirement: The service provider retains audit records on-line for at least ninety days and further preserves audit records off-line for a period that is in accordance with NARA requirements.

+
+
+
+ + at least ninety days + + + + all information system and network components where audit capability is deployed/available + + + all information system and network components where audit capability is deployed/available + + + + at least every 3 years + + + at least annually + + + + at least annually + + + individuals or roles to include FedRAMP PMO + + + + + +

Requirement: Must use an accredited 3PAO for JAB authorization

+
+
+
+ + + + +

Requirement: To include 'announced', 'vulnerability scanning'

+
+
+
+ + at least annually + + + + any FedRAMP Accredited 3PAO + + + any FedRAMP Accredited 3PAO + + + the conditions of a Authorizing Official in the FedRAMP Repository + + + + at least annually and on input from FedRAMP + + + + + +

Guidance: Refer to Appendix H - Cloud Considerations of the TIC 2.0 Reference Architecture document.

+
+
+
+ + Boundary Protections which meet the Trusted Internet Connection (TIC) requirements + + + + + +

For JAB Authorization, CSPs shall include details of this control in their Architecture Briefing

+
+
+
+ + + + +

Guidance: Requirement: POA&Ms must be provided at least monthly.

+
+
+
+ + at least monthly + + + + + +

-c. Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F. The service provider describes the types of changes to the information system or the environment of operations that would impact the risk posture. The types of changes are approved and accepted by the JAB/AO.

+
+
+
+ + at least every three years or when a significant change occurs + + + + + +

Requirement: Operating System Scans: at least monthly Database and Web Application Scans: at least monthly All scans performed by Independent Assessor: at least annually

+

Guidance: CSPs must provide evidence of closure and remediation of high vulnerabilities within the timeframe for standard POA&M updates.

+

Operating System Scans: at least monthly

+

Database and Web Application Scans: at least monthly

+

All scans performed by Independent Assessor: at least annually

+
+
+
+ + to meet Federal and FedRAMP requirements (See additional guidance) + + + to meet Federal and FedRAMP requirements (See additional guidance) + + + + + at least annually + + + at least annually + + + + + + at least every 3 years + + + at least annually + + + + + at least annually or when a significant change occurs + + + to include when directed by the JAB + + + + + + + + +

Requirement: The service provider establishes a central means of communicating major changes to or developments in the information system or environment of operations that may affect its services to the federal government and associated service consumers (e.g., electronic bulletin board, web status page). The means of communication are approved and accepted by the JAB/AO.

+

-e Guidance: In accordance with record retention policies and procedures.

+
+
+
+ + + + + + + +

Guidance: If digital signatures/certificates are unavailable, alternative cryptographic integrity checks (hashes, self-signed certs, etc.) can be utilized.

+
+
+
+ + + at least quarterly + + + + + +

(a) Requirement 1: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish configuration settings or establishes its own configuration settings if USGCB is not available.

+

(a) Requirement 2: The service provider shall ensure that checklists for configuration settings are Security Content Automation Protocol (SCAP) validated or SCAP compatible (if validated checklists are not available).

+

(a) Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + + + +

(b) Requirement: The service provider shall use the Center for Internet Security guidelines (Level 1) to establish list of prohibited or restricted functions, ports, protocols, and/or services or establishes its own list of prohibited or restricted functions, ports, protocols, and/or services if USGCB is not available.

+

Guidance: Information on the USGCB checklists can be found at: http://usgcb.nist.gov/usgcb_faq.html#usgcbfaq_usgcbfdcc

+

(Partially derived from AC-17(8).)

+
+
+
+ + United States Government Configuration Baseline (USGCB) + + + + at least monthly + + + + + +

Guidance: This control shall be implemented in a technical manner on the information system to only allow programs to run that adhere to the policy (i.e. white listing). This control is not to be based off of strictly written policy on what is allowed or not allowed to run.

+
+
+
+ + + at least Annually or when there is a change + + + + + +

Requirement: must be provided at least monthly or when there is a change.

+
+
+
+ + at least monthly + + + + + Continuously, using automated mechanisms with a maximum five-minute delay in detection + + + + + + + + Continuously (via CM-7 (5)) + + + + at least every 3 years + + + at least annually + + + + + +

Requirement: For JAB authorizations the contingency lists include designated FedRAMP personnel.

+
+
+
+ + at least annually + + + + + + + + ten (10) days + + + at least annually + + + + + +

(a). Requirement: The service provider develops test plans in accordance with NIST Special Publication 800-34 (as amended); plans are approved by the JAB/AO prior to initiating testing.

+
+
+
+ + at least annually + + + functional exercises + + + + + + + + + +

(a). Requirement: The service provider defines a time period consistent with the recovery time objectives and business impact analysis.

+
+
+
+ + + + +

Guidance: The service provider may determine what is considered a sufficient degree of separation between the primary and alternate processing sites, based on the types of threats that are of concern. For one particular type of threat (i.e., hostile cyber attack), the degree of separation between sites will be less relevant.

+
+
+
+ + + + + + +

Requirement: The service provider defines a time period consistent with the recovery time objectives and business impact analysis.

+
+
+
+ + + + + + +

Requirement: The service provider shall determine what elements of the cloud environment require the Information System Backup control. The service provider shall determine how Information System Backup is going to be verified and appropriate periodicity of the check.

+

(a) Requirement: The service provider maintains at least three backup copies of user-level information (at least one of which is available online) or provides an equivalent alternative.

+

(b) Requirement: The service provider maintains at least three backup copies of system-level information (at least one of which is available online) or provides an equivalent alternative.

+

(c) Requirement: The service provider maintains at least three backup copies of information system documentation including security information (at least one of which is available online) or provides an equivalent alternative.

+
+
+
+ + daily incremental; weekly full + + + daily incremental; weekly full + + + daily incremental; weekly full + + + + at least annually + + + + + + + at least every 3 years + + + at least annually + + + + + + + + + + + +

Guidance: PIV=separate device. Please refer to NIST SP 800-157 Guidelines for Derived Personal Identity Verification (PIV) Credentials.

+
+
+
+ + FIPS 140-2, NIAP Certification, or NSA approval + + + + + +

Guidance: Include Common Access Card (CAC), i.e., the DoD technical implementation of PIV/FIPS 201/HSPD-12.

+
+
+
+ + + + + +

(e) Requirement: The service provider defines time period of inactivity for device identifiers.

+

Guidance: For DoD clouds, see DoD cloud website for specific DoD requirements that go above and beyond FedRAMP http://iase.disa.mil/cloud_security/Pages/index.aspx.

+
+
+
+ + IA-4 (d) [at least two years] + + + ninety days for user identifiers (See additional requirements and guidance) + + + + contractors; foreign nationals + + + + to include sixty (60) days for passwords + + + + case sensitive, minimum of twelve characters, and at least one each of upper-case letters, lower-case letters, numbers, and special characters + + + case sensitive, minimum of twelve characters, and at least one IA-5 (1) (b) [at least one + + + one (1) day minimum, sixty (60) day maximum + + + twenty four (24) + + + + + All hardware/biometric (multifactor authenticators) + + + in person + + + + + +

Additional FedRAMP Requirements and Guidance: Guidance: If automated mechanisms which enforce password authenticator strength at creation are not used, automated mechanisms must be used to audit strength of created password authenticators.

+
+
+
+ + + + + + + + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + +

-2 Requirement 1: The service provider defines tests and/or exercises in accordance with NIST Special Publication 800-61 (as amended).

+

-2 Requirement 2: For JAB Authorization, the service provider provides test plans to the JAB/AO annually.

+

-2 Requirement 3: Test plans are approved and accepted by the Authorizing Official (AO) prior to test commencing.

+
+
+
+ + at least annually + + + see additional FedRAMP Requirements and Guidance + + + + + + +

Requirement: The service provider ensures that individuals conducting incident handling meet personnel security requirements commensurate with the criticality/sensitivity of the information being processed, stored, and transmitted by the information system.

+
+
+
+ + + + + + +

Requirement: Reports security incident information according to FedRAMP Incident Communications Procedure.

+
+
+
+ + US-CERT incident reporting timelines as specified in NIST Special Publication 800-61 (as amended) + + + + + + + + + +

(b) Additional FedRAMP Requirements and Guidance: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+

(e) Additional FedRAMP Requirements and Guidance: The service provider defines a list of incident response personnel (identified by name and/or by role) and organizational elements. The incident response list includes designated FedRAMP personnel.

+
+
+
+ + see additional FedRAMP Requirements and Guidance + + + at least annually + + + see additional FedRAMP Requirements and Guidance + + + + + + + + + at least every 3 years + + + at least annually + + + + + + + + the information owner explicitly authorizing removal of the equipment from the facility + + + + + + + + +

Requirement: Only MA-5 (1)(a)(1) is required by FedRAMP Moderate Baseline

+
+
+
+ + + + at least every 3 years + + + at least annually + + + + + + +

(b) Guidance: Second parameter not-applicable

+
+
+
+ + no removable media types + + + + + +

(a) Additional FedRAMP Requirements and Guidance: Requirement: The service provider defines controlled areas within facilities where the information and information system reside.

+
+
+
+ + all types of digital and non-digital media with sensitive information + + + FedRAMP Assignment: see additional FedRAMP requirements and guidance + + + + + +

(a) Additional FedRAMP Requirements and Guidance:

+

Requirement: The service provider defines security measures to protect digital and non-digital media in transport. The security measures are approved and accepted by the JAB.

+
+
+
+ + all media with sensitive information + + + prior to leaving secure/controlled environment: for digital media, encryption using a FIPS 140-2 validated encryption module; for non-digitital media, secured in locked container + + + + + + + +

Guidance: Equipment and procedures may be tested or validated for effectiveness

+
+
+
+ + At least annually + + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + CSP defined physical access control systems/devices AND guards + + + CSP defined physical access control systems/devices + + + in all circumstances within restricted access area where the information system resides + + + at least annually + + + at least annually + + + + + + at least monthly + + + + + for a minimum of one (1) year + + + at least monthly + + + + + + + + + + + + +

(a). Requirements: The service provider measures temperature at server inlets and humidity levels by dew point.

+
+
+
+ + consistent with American Society of Heating, Refrigerating and Air-conditioning Engineers (ASHRAE) document entitled Thermal Guidelines for Data Processing Environments + + + continuously + + + + + + all information system components + + + + + at least every 3 years + + + at least annually + + + + at least annually + + + + + At least every 3 years + + + + + + +

(b) Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F, page F-7.

+
+
+
+ + At least annually or when a significant change occurs + + + + at least every 3 years + + + at least annually + + + + at least every three years + + + + for national security clearances; a reinvestigation is required during the fifth (5th) year for top secret security clearance, the tenth (10th) year for secret security clearance, and fifteenth (15th) year for confidential security clearance. For moderate risk law enforcement and high impact public trust level, a reinvestigation is required during the fifth (5th) year. There is no reinvestigation for other moderate risk positions or any low risk positions + + + + personnel screening criteria - as required by specific information + + + + same day + + + + five days of the time period following the formal transfer action (DoD 24 hours) + + + + at least annually + + + at least annually + + + + organization-defined time period - same day + + + + + at least every 3 years + + + at least annually + + + + + + +

Guidance: Significant change is defined in NIST Special Publication 800-37 Revision 1, Appendix F.

+

(d) Requirement: Include all Authoring Officials and FedRAMP ISSOs.

+
+
+
+ + security assessment report + + + at least every three (3) years or when a significant change occurs + + + at least every three (3) years or when a significant change occurs + + + + + +

(a) Requirement: an accredited independent assessor scans operating systems/infrastructure, web applications, and databases once annually.

+

(e) Requirement: to include the Risk Executive; for JAB authorizations to include FedRAMP

+
+
+
+ + monthly operating system/infrastructure; monthly web applications and database + + + high-risk vulnerabilities mitigated within thirty days from date of discovery; moderate-risk vulnerabilities mitigated within ninety days from date of discovery + + + + + prior to a new scan + + + + + operating systems / web applications / databases + + + all scans + + + + + +

Guidance: include in Continuous Monitoring ISSO digest/report to JAB/AO

+
+
+
+ + + + +

Requirements: This enhancement is required for all high vulnerability scan findings. Guidance: While scanning tools may label findings as high or critical, the intent of the control is based around NIST's definition of high vulnerability.

+
+
+
+ + + at least every 3 years + + + at least annually + + + + + + + +

Guidance: The use of Common Criteria (ISO/IEC 15408) evaluated products is strongly preferred.

+

See http://www.niap-ccevs.org/vpl or http://www.commoncriteriaportal.org/products.html.

+
+
+
+ + + + to include security-relevant external system interfaces and high-level design + + + + + +

Guidance: CSP must use the same security standards regardless of where the system component or information system service is acquired.

+
+
+
+ + at least the minimum requirement as defined in control CA-7 + + + + + + + + FedRAMP Security Controls Baseline(s) if Federal information is processed or stored within the external system + + + Federal/FedRAMP Continuous Monitoring requirements must be met for external systems where Federal information is processed or stored + + + + + All external systems where Federal information is processed or stored + + + + All external systems where Federal information is processed or stored + + + + information processing, information data, AND information services + + + + + +

(e) Requirement: for JAB authorizations, track security flaws and flaw resolution within the system, component, or service and report findings to organization-defined personnel, to include FedRAMP.

+
+
+
+ + development, implementation, AND operation + + + + + + + +

Requirement: The service provider documents in the Continuous Monitoring Plan, how newly developed code for the information system is reviewed.

+
+
+
+ + + + + +

Requirement: The service provider documents in the Continuous Monitoring Plan, how newly developed code for the information system is reviewed.

+
+
+
+ + + at least every 3 years + + + at least annually + + + + + + + + + + at least annually + + + + + + + + + +

Requirement: The service provider defines key information security tools, mechanisms, and support components associated with system and security administration and isolates those tools, mechanisms, and support components from other internal information system components via physically or logically separate subnets.

+
+
+
+ + + + confidentiality AND integrity + + + + prevent unauthorized disclosure of information AND detect changes to information + + + a hardened or alarmed carrier Protective Distribution System (PDS) + + + + no longer than 30 minutes for RAS-based sessions or no longer than 60 minutes for non-interactive user sessions + + + + + +

Guidance: Federally approved cryptography

+
+
+
+ + + NIST FIPS-compliant + + + + + FIPS-validated or NSA-approved cryptography + + + + + +

Additional FedRAMP Requirements and Guidance:

+

Requirement: The information system provides disablement (instead of physical disconnect) of collaborative computing devices in a manner that supports ease of use.

+
+
+
+ + no exceptions + + + + + + + + + + + + +

Guidance: The organization supports the capability to use cryptographic mechanisms to protect information at rest.

+
+
+
+ + confidentiality AND integrity + + + + + + at least every 3 years + + + at least annually + + + + within 30 days of release of updates + + + + at least monthly + + + + + at least weekly + + + to include endpoints + + + to include alerting administrator or defined security personnel + + + + + + + + +

Guidance: See US-CERT Incident Response Reporting Guidelines.

+
+
+
+ + + + + continuously + + + + + +

Guidance: In accordance with the incident response plan.

+
+
+
+ + + + + + to include US-CERT + + + to include system security personnel and administrators with configuration/patch-management responsibilities + + + + to include upon system startup and/or restart + + + at least monthly + + + to include system administrators and security personnel + + + to include notification of system administrators and security personnel + + + + + Selection to include security relevant events + + + at least monthly + + + + + + + + + +
+
diff --git a/test_util/src/TestCases.go b/test_util/src/TestCases.go index 5d73c8e7..1805006c 100644 --- a/test_util/src/TestCases.go +++ b/test_util/src/TestCases.go @@ -24,30 +24,52 @@ func SecurityControlsSubcontrolCheck(check []catalog.Catalog, ProfileFile string log.Fatal(err) } - profileControlsDetails := ProfileProcessing(parsedProfile) - - if len(codeGeneratedControls) == len(profileControlsDetails) { - println("Perfect Count Match") - println("Go file control, sub-control count: ", len(codeGeneratedControls)) - println("Profile control, sub-control count: ", len(profileControlsDetails)) - codeGeneratedMapping := ProtocolsMapping(check) - mapcompareflag := AreMapsSame(profileControlsDetails, codeGeneratedMapping) - if mapcompareflag { - color.Green("ID, Class & Title Mapping Correct") - } else { - color.Red("ID, Class & Title Mapping Incorrect") - } - } else if len(codeGeneratedControls) > len(profileControlsDetails) { - println("Controls in go file are greater in number then present in profile") - println("Go file control, sub-control count: ", len(codeGeneratedControls)) - println("Profile control, sub-control count: ", len(profileControlsDetails)) - color.Red("ID, Class & Title Mapping Incorrect") - } else if len(codeGeneratedControls) < len(profileControlsDetails) { - println("Controls in profile are greater in number then present in go file") - println("Go file control, sub-control count: ", len(codeGeneratedControls)) - println("Profile control, sub-control count: ", len(profileControlsDetails)) - color.Red("ID, Class & Title Mapping Incorrect") + listParentControls := ParentControls(parsedProfile) + + profileControlsDetails := ProfileProcessing(parsedProfile, listParentControls) + + if Count(codeGeneratedControls, "controls") == Count(profileControlsDetails, "controls") { + color.Green("Controls & SubControls Count Matched") + println("Go file control & sub-control count: ", Count(codeGeneratedControls, "controls")) + println("Profile control & sub-control count: ", Count(profileControlsDetails, "controls")) + } else if Count(codeGeneratedControls, "controls") > Count(profileControlsDetails, "controls") { + color.Red("Controls & Subcontrols in go file are greater in number then present in profile") + println("Go file control & sub-control count: ", Count(codeGeneratedControls, "controls")) + println("Profile control & sub-control count: ", Count(profileControlsDetails, "controls")) + } else if Count(codeGeneratedControls, "controls") < Count(profileControlsDetails, "controls") { + color.Red("Controls & Subcontrols in profile are greater in number then present in go file") + println("Go file control & sub-control count: ", Count(codeGeneratedControls, "controls")) + println("Profile control & sub-control count: ", Count(profileControlsDetails, "controls")) + } + + controlMapCompareFlag := AreMapsSame(profileControlsDetails, codeGeneratedControls, "controls") + if controlMapCompareFlag { + color.Green("ID, Class & Title Mapping Of All Controls & SubControls Correct") + } else { + color.Red("ID, Class & Title Mapping Of All Controls & SubControls Incorrect") } + + if Count(codeGeneratedControls, "parts") == Count(profileControlsDetails, "parts") { + color.Green("Parts Count Matched") + println("Go file parts count: ", Count(codeGeneratedControls, "parts")) + println("Profile parts count: ", Count(profileControlsDetails, "parts")) + } else if Count(codeGeneratedControls, "parts") > Count(profileControlsDetails, "parts") { + color.Red("Parts in go file are greater in number then present in profile") + println("Go file parts count: ", Count(codeGeneratedControls, "parts")) + println("Profile parts count: ", Count(profileControlsDetails, "parts")) + } else if Count(codeGeneratedControls, "parts") < Count(profileControlsDetails, "parts") { + color.Red("Parts in profile are greater in number then present in go file") + println("Go file parts count: ", Count(codeGeneratedControls, "parts")) + println("Profile parts count: ", Count(profileControlsDetails, "parts")) + } + + partsMapCompareFlag := AreMapsSame(profileControlsDetails, codeGeneratedControls, "parts") + if partsMapCompareFlag { + color.Green("ID, Class & Title Mapping Of Parts Correct") + } else { + color.Red("ID, Class & Title Mapping Of All Parts Incorrect") + } + file, _ := filepath.Glob("./oscaltesttmp*") if file != nil { for _, f := range file { diff --git a/test_util/src/methods.go b/test_util/src/methods.go index d1337893..895c1a58 100644 --- a/test_util/src/methods.go +++ b/test_util/src/methods.go @@ -7,7 +7,6 @@ import ( "log" "net/http" "os" - "reflect" "strings" "github.com/docker/oscalkit/types/oscal" @@ -15,42 +14,56 @@ import ( "github.com/docker/oscalkit/types/oscal/profile" ) -// StructExaminer To Verify The Structure -func StructExaminer(t reflect.Type, depth int) { - fmt.Println("\nType is", t.Name(), "and kind is", t.Kind()) - switch t.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Ptr, reflect.Slice: - fmt.Println("Contained type:") - StructExaminer(t.Elem(), depth+1) - case reflect.Struct: - for i := 0; i < t.NumField(); i++ { - f := t.Field(i) - fmt.Print(f.Name+" "+f.Type.Name(), f.Type.Kind()) - if f.Tag != "" { - fmt.Println(" " + f.Tag) - } - } - } -} - -// ProtocolsMapping Method To Parse All The Controls From Catalog.go +// ProtocolsMapping Method To Parse The generated .go file and save the +// mapping of ID, Class & Titles func ProtocolsMapping(check []catalog.Catalog) map[string][]string { - SecurityControls := make(map[string][]string) + securityControls := make(map[string][]string) + for catalogCount := 0; catalogCount < len(check); catalogCount++ { + for groupsCount := 0; groupsCount < len(check[catalogCount].Groups); groupsCount++ { + for controlsCount := 0; controlsCount < len(check[catalogCount].Groups[groupsCount].Controls); controlsCount++ { + if _, ok := securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id]; ok { + } else { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Title)) + } - for CatalogCount := 0; CatalogCount < len(check); CatalogCount++ { - for GroupsCount := 0; GroupsCount < len(check[CatalogCount].Groups); GroupsCount++ { - for ControlsCount := 0; ControlsCount < len(check[CatalogCount].Groups[GroupsCount].Controls); ControlsCount++ { - SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Id] = append(SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Id], check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Class) - SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Id] = append(SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Id], string(check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Title)) - for SubControlsCount := 0; SubControlsCount < len(check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols); SubControlsCount++ { - SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Id] = append(SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Id], check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Class) - SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Id] = append(SecurityControls[check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Id], string(check[CatalogCount].Groups[GroupsCount].Controls[ControlsCount].Subcontrols[SubControlsCount].Title)) + for controlPartCount := 0; controlPartCount < len(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts); controlPartCount++ { + if _, ok := securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id]; ok { + } else { + if check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id != "" { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Title)) + } else if check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id == "" && check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Class == "assessment" { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Parts[controlPartCount].Title)) + } + } + } + + for subControlsCount := 0; subControlsCount < len(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols); subControlsCount++ { + if _, ok := securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id]; ok { + } else { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Title)) + } + for subControlsPartCount := 0; subControlsPartCount < len(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts); subControlsPartCount++ { + if _, ok := securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id]; ok { + } else { + if check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id != "" { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Title)) + } else if check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id == "" && check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Class == "assessment" { + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id], check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Class) + securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id] = append(securityControls[check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Id+"?"+check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Id], string(check[catalogCount].Groups[groupsCount].Controls[controlsCount].Subcontrols[subControlsCount].Parts[subControlsPartCount].Title)) + } + } + } } } } } - return SecurityControls + return securityControls } // GetCatalog gets a catalog @@ -77,7 +90,8 @@ func GetProfile(r io.Reader) (*profile.Profile, error) { return o.Profile, nil } -// controlInProfile checks if the control provided exists in the provided profile or not +// controlInProfile accepts a Control or SubcontrolID and an array of all +// the controls & subcontrols present in the profile. func controlInProfile(controlID string, profile []string) bool { for _, value := range profile { if value == controlID { @@ -87,16 +101,30 @@ func controlInProfile(controlID string, profile []string) bool { return false } +// ParentControlCheck checks if the subcontrol's parent controls exists +// in the provided array on parent controls +func ParentControlCheck(subcontrol string, parentcontrols []string) bool { + + subControlTrim := strings.Split(subcontrol, ".") + + for _, value := range parentcontrols { + if value == subControlTrim[0] { + return true + } + } + return false +} + // DownloadCatalog writes the JSON of the provided URL into a catalog.json file func DownloadCatalog(url string) (string, error) { - save := strings.Split(url, "/") + urlSplit := strings.Split(url, "/") tmpDir, err := ioutil.TempDir(".", "oscaltesttmp") if err != nil { log.Fatal(err) } - filename := tmpDir + "/" + save[len(save)-1] - println("Catalog will be downloaded to: " + filename) - catalog, err := os.Create(filename) + fileName := tmpDir + "/" + urlSplit[len(urlSplit)-1] + println("Catalog will be downloaded to: " + fileName) + catalog, err := os.Create(fileName) if err != nil { return "", err } @@ -114,49 +142,65 @@ func DownloadCatalog(url string) (string, error) { return tmpDir, nil } -// ProfileParsing method to parse the profile and return the controls and subcontrols +// ProfileParsing method to parse the profile and return the controls and subcontrols ID's func ProfileParsing(parsedProfile *profile.Profile) []string { - SecurityControls := make([]string, 0) + securityControls := make([]string, 0) - for i := 0; i < len(parsedProfile.Imports); i++ { - for j := 0; j < len(parsedProfile.Imports[i].Include.IdSelectors); j++ { - if parsedProfile.Imports[i].Include.IdSelectors[j].ControlId != "" { - SecurityControls = append(SecurityControls, parsedProfile.Imports[i].Include.IdSelectors[j].ControlId) + for importCount := 0; importCount < len(parsedProfile.Imports); importCount++ { + for idSelectorCount := 0; idSelectorCount < len(parsedProfile.Imports[importCount].Include.IdSelectors); idSelectorCount++ { + if parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].ControlId != "" { + securityControls = append(securityControls, parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].ControlId) } - if parsedProfile.Imports[i].Include.IdSelectors[j].SubcontrolId != "" { - SecurityControls = append(SecurityControls, parsedProfile.Imports[i].Include.IdSelectors[j].SubcontrolId) + if parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].SubcontrolId != "" { + securityControls = append(securityControls, parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].SubcontrolId) } } } - return SecurityControls + return securityControls +} + +// ParentControls to get the list of all parent controls in the profile +func ParentControls(parsedProfile *profile.Profile) []string { + parentControlsList := make([]string, 0) + + for importCount := 0; importCount < len(parsedProfile.Imports); importCount++ { + temp := ParseImport(parsedProfile, parsedProfile.Imports[importCount].Href.Path, "Parent") + parentControlsList = appendslice(parentControlsList, temp) + } + + parentControlsList = unique(parentControlsList) + + return parentControlsList } -// ProfileProcessing is used to get to the catalog referenced in the profile and parse it into a map -func ProfileProcessing(parsedProfile *profile.Profile) map[string][]string { - SecurityControlsDetails := make(map[string][]string) +// ProfileProcessing is used to generate the mapping of ID Class & Title of +// all the controls subcontrols and parts +func ProfileProcessing(parsedProfile *profile.Profile, ListParentControls []string) map[string][]string { + securityControlsDetails := make(map[string][]string) - for l := 0; l < len(parsedProfile.Imports); l++ { - println("Import:", parsedProfile.Imports[l].Href.String()) + for importCounts := 0; importCounts < len(parsedProfile.Imports); importCounts++ { + println("Import:", parsedProfile.Imports[importCounts].Href.String()) dirName := "test_util/artifacts/" var err error - if strings.Contains(parsedProfile.Imports[l].Href.String(), "http") { - dirName, err = DownloadCatalog(parsedProfile.Imports[l].Href.String()) + if strings.Contains(parsedProfile.Imports[importCounts].Href.String(), "http") { + dirName, err = DownloadCatalog(parsedProfile.Imports[importCounts].Href.String()) if err != nil { log.Fatal(err) } } - save := strings.Split(parsedProfile.Imports[l].Href.Path, "/") - filename := dirName + "/" + save[len(save)-1] - f, err := os.Open(filename) + urlSplit := strings.Split(parsedProfile.Imports[importCounts].Href.Path, "/") + fileName := dirName + "/" + urlSplit[len(urlSplit)-1] + f, err := os.Open(fileName) if err != nil { log.Fatal(err) } check, _ := ProfileCatalogCheck(f) if check == "Catalog" { - ProfileControls := ParseImport(parsedProfile, parsedProfile.Imports[l].Href.Path) - catalogPath := dirName + "/" + save[len(save)-1] + profileControls := ParseImport(parsedProfile, parsedProfile.Imports[importCounts].Href.Path, "all") + + catalogPath := dirName + "/" + urlSplit[len(urlSplit)-1] f, err := os.Open(catalogPath) if err != nil { log.Fatal(err) @@ -166,57 +210,99 @@ func ProfileProcessing(parsedProfile *profile.Profile) map[string][]string { if err != nil { log.Fatal(err) } - CatalogControlsDetails := make(map[string][]string) - for i := 0; i < len(parsedCatalog.Groups); i++ { - for j := 0; j < len(parsedCatalog.Groups[i].Controls); j++ { - if controlInProfile(parsedCatalog.Groups[i].Controls[j].Id, ProfileControls) { - CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Id] = append(CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Id], parsedCatalog.Groups[i].Controls[j].Class) - CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Id] = append(CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Id], string(parsedCatalog.Groups[i].Controls[j].Title)) - } - for k := 0; k < len(parsedCatalog.Groups[i].Controls[j].Subcontrols); k++ { - if controlInProfile(parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Id, ProfileControls) { - CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Id] = append(CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Id], parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Class) - CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Id] = append(CatalogControlsDetails[parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Id], string(parsedCatalog.Groups[i].Controls[j].Subcontrols[k].Title)) - } - } - } - } - println("Size of Catalog: ", len(CatalogControlsDetails)) - if len(SecurityControlsDetails) == 0 { - SecurityControlsDetails = appendMaps(SecurityControlsDetails, CatalogControlsDetails) - } else if len(SecurityControlsDetails) > 0 { - SecurityControlsDetails = appendMaps(SecurityControlsDetails, CatalogControlsDetails) - SecurityControlsDetails = uniqueMaps(SecurityControlsDetails, CatalogControlsDetails) + catalogControlsDetails := ParseCatalog(parsedCatalog, profileControls, ListParentControls) + + partsProfileControls := ProfileParsing(parsedProfile) + + parts := ParseParts(parsedProfile, partsProfileControls) + + catalogControlsDetails = appendAlterations(catalogControlsDetails, parts) + + println("Size of Catalog: ", len(catalogControlsDetails)) + if len(securityControlsDetails) == 0 { + securityControlsDetails = appendMaps(securityControlsDetails, catalogControlsDetails) + } else if len(securityControlsDetails) > 0 { + securityControlsDetails = appendMaps(securityControlsDetails, catalogControlsDetails) + securityControlsDetails = uniqueMaps(securityControlsDetails, catalogControlsDetails) } + println("Size of securityControls: ", len(securityControlsDetails)) - println("Size of SecurityControls: ", len(SecurityControlsDetails)) } else if check == "Profile" { - fmt.Println("profile path: " + save[len(save)-1]) - f, err := os.Open(dirName + save[len(save)-1]) + fmt.Println("profile path: " + urlSplit[len(urlSplit)-1]) + f, err := os.Open(dirName + "/" + urlSplit[len(urlSplit)-1]) if err != nil { log.Fatal(err) } - parsedProfile1, err := GetProfile(f) + ProfileHref, err := GetProfile(f) if err != nil { log.Fatal(err) } - save := ProfileProcessing(parsedProfile1) - save1 := ParseImport(parsedProfile, parsedProfile.Imports[l].Href.Path) + ParsedProfile := ProfileProcessing(ProfileHref, ListParentControls) + ParsedProfileControls := ParseImport(parsedProfile, parsedProfile.Imports[importCounts].Href.Path, "all") + + partsProfileControls := ProfileParsing(parsedProfile) + + parts := ParseParts(parsedProfile, partsProfileControls) + + println("Recursive count = ", len(ParsedProfile)) + println("Count of profile = ", len(ParsedProfileControls)) + + println("Common = ", len(CommonMap(ParsedProfileControls, ParsedProfile))) + securityControlsDetails = appendMaps(securityControlsDetails, CommonMap(ParsedProfileControls, ParsedProfile)) - println(len(save)) - println(len(save1)) + securityControlsDetails = appendAlterations(securityControlsDetails, parts) - SecurityControlsDetails = appendMaps(SecurityControlsDetails, CommonMap(save1, save)) - println(len(SecurityControlsDetails)) - // parsedProfile and parsedProfile1 common and save in SecurityControls + println("Final Count = ", len(securityControlsDetails)) } } - return SecurityControlsDetails + return securityControlsDetails +} + +// ParseCatalog accepts a catalog struct and return the mapping of Control, +// Subcontrols & Parts. ID, Class & Titles +func ParseCatalog(parsedCatalog *catalog.Catalog, profileControls []string, ListParentControls []string) map[string][]string { + catalogControlsDetails := make(map[string][]string) + + for groupCount := 0; groupCount < len(parsedCatalog.Groups); groupCount++ { + for controlCount := 0; controlCount < len(parsedCatalog.Groups[groupCount].Controls); controlCount++ { + if controlInProfile(parsedCatalog.Groups[groupCount].Controls[controlCount].Id, profileControls) { + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Title)) + for controlPartCount := 0; controlPartCount < len(parsedCatalog.Groups[groupCount].Controls[controlCount].Parts); controlPartCount++ { + if parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id != "" { + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Title)) + } else if parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id == "" && parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Class == "assessment" { + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Parts[controlPartCount].Title)) + } + } + } + + for subControlCount := 0; subControlCount < len(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols); subControlCount++ { + if controlInProfile(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id, profileControls) && ParentControlCheck(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id, ListParentControls) { + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Title)) + for subControlPartCount := 0; subControlPartCount < len(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts); subControlPartCount++ { + if parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id != "" { + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Title)) + } else if parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id == "" && parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Class == "assessment" { + + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id], parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Class) + catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id] = append(catalogControlsDetails[parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Id+"?"+parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Id], string(parsedCatalog.Groups[groupCount].Controls[controlCount].Subcontrols[subControlCount].Parts[subControlPartCount].Title)) + } + } + } + } + } + } + return catalogControlsDetails } // ProfileCatalogCheck checks if the path provided is for a profile or a catolog @@ -234,72 +320,106 @@ func ProfileCatalogCheck(r io.Reader) (string, error) { return "Invalid File", nil } -// CommonMap returns the elements in Map that are also present in slice -func CommonMap(slice1 []string, CatalogControlsDetails map[string][]string) map[string][]string { - Result := make(map[string][]string) - for _, s1element := range slice1 { - if _, ok := CatalogControlsDetails[s1element]; ok { - save := CatalogControlsDetails[s1element] - CatalogControlsDetails[s1element] = append(CatalogControlsDetails[s1element], save[0]) - CatalogControlsDetails[s1element] = append(CatalogControlsDetails[s1element], save[1]) +// CommonMap returns the elements in Map that are also present in profile +func CommonMap(profile []string, catalogControlsDetails map[string][]string) map[string][]string { + + commonMapping := make(map[string][]string) + + for key, mapValue := range catalogControlsDetails { + for _, sliceValue := range profile { + subControlTrim := strings.Split(key, "?") + + if sliceValue == key { + commonMapping[key] = append(commonMapping[key], mapValue[0]) + commonMapping[key] = append(commonMapping[key], mapValue[1]) + } else if sliceValue == subControlTrim[0] { + commonMapping[key] = append(commonMapping[key], mapValue[0]) + commonMapping[key] = append(commonMapping[key], mapValue[1]) + } } } - return Result + return commonMapping } -// RemoveDuplicateSlice returns the elements after removing duplicates -func RemoveDuplicateSlice(slice1 []string, slice2 []string) []string { - result := make([]string, 0) - count := 0 - for _, s2element := range slice2 { - for _, s1element := range slice1 { - if s2element != s1element { - count++ +// ParseImport method to parse the profile and return the controls and subcontrols or only controls +func ParseImport(parsedProfile *profile.Profile, link string, token string) []string { + + securityControls := make([]string, 0) + for importCount := 0; importCount < len(parsedProfile.Imports); importCount++ { + if parsedProfile.Imports[importCount].Href.Path == link { + for idSelectorCount := 0; idSelectorCount < len(parsedProfile.Imports[importCount].Include.IdSelectors); idSelectorCount++ { + if parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].ControlId != "" { + securityControls = append(securityControls, parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].ControlId) + } + if parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].SubcontrolId != "" && token != "Parent" { + securityControls = append(securityControls, parsedProfile.Imports[importCount].Include.IdSelectors[idSelectorCount].SubcontrolId) + } } } - if count > 0 { - result = append(result, s2element) - } - count = 0 } - return result + + return securityControls } -// ParseImport method to parse the profile and return the controls and subcontrols -func ParseImport(parsedProfile *profile.Profile, link string) []string { +// ParseParts method to parse the profile and return the mapping of all the parts +func ParseParts(parsedProfile *profile.Profile, list []string) map[string][]string { - SecurityControls := make([]string, 0) + securityControls := make(map[string][]string) - for i := 0; i < len(parsedProfile.Imports); i++ { - if parsedProfile.Imports[i].Href.Path == link { - for j := 0; j < len(parsedProfile.Imports[i].Include.IdSelectors); j++ { - if parsedProfile.Imports[i].Include.IdSelectors[j].ControlId != "" { - SecurityControls = append(SecurityControls, parsedProfile.Imports[i].Include.IdSelectors[j].ControlId) - } - if parsedProfile.Imports[i].Include.IdSelectors[j].SubcontrolId != "" { - SecurityControls = append(SecurityControls, parsedProfile.Imports[i].Include.IdSelectors[j].SubcontrolId) + for modifyCount := 0; modifyCount < len(parsedProfile.Modify.Alterations); modifyCount++ { + for alterCount := 0; alterCount < len(parsedProfile.Modify.Alterations[modifyCount].Additions); alterCount++ { + for partCount := 0; partCount < len(parsedProfile.Modify.Alterations[modifyCount].Additions[alterCount].Parts); partCount++ { + for _, s1Element := range list { + if parsedProfile.Modify.Alterations[modifyCount].ControlId == s1Element { + if parsedProfile.Modify.Alterations[modifyCount].ControlId != "" && parsedProfile.Modify.Alterations[modifyCount].Additions[alterCount].Parts[partCount].Class == "guidance" { + securityControls[parsedProfile.Modify.Alterations[modifyCount].ControlId+"?"+parsedProfile.Modify.Alterations[modifyCount].ControlId+"_gdn"] = append(securityControls[parsedProfile.Modify.Alterations[modifyCount].ControlId+"?"+parsedProfile.Modify.Alterations[modifyCount].ControlId+"_gdn"], parsedProfile.Modify.Alterations[modifyCount].Additions[alterCount].Parts[partCount].Class) + } + } else if parsedProfile.Modify.Alterations[modifyCount].SubcontrolId == s1Element { + if parsedProfile.Modify.Alterations[modifyCount].SubcontrolId != "" && parsedProfile.Modify.Alterations[modifyCount].Additions[alterCount].Parts[partCount].Class == "guidance" { + securityControls[parsedProfile.Modify.Alterations[modifyCount].SubcontrolId+"?"+parsedProfile.Modify.Alterations[modifyCount].SubcontrolId+"_gdn"] = append(securityControls[parsedProfile.Modify.Alterations[modifyCount].SubcontrolId+"?"+parsedProfile.Modify.Alterations[modifyCount].SubcontrolId+"_gdn"], parsedProfile.Modify.Alterations[modifyCount].Additions[alterCount].Parts[partCount].Class) + } + } } } } } - return SecurityControls + + return securityControls +} + +// appendslice appends two slices +func appendslice(slice []string, slice1 []string) []string { + + for sliceCount := 0; sliceCount < len(slice1); sliceCount++ { + slice = append(slice, slice1[sliceCount]) + } + + return slice } // AreMapsSame compares the values of two same length maps and returns true if both the maps have the same key value pairs -func AreMapsSame(profileControlsDetails map[string][]string, codeGeneratedMapping map[string][]string) bool { +func AreMapsSame(profileControlsDetails map[string][]string, codeGeneratedMapping map[string][]string, token string) bool { for key := range profileControlsDetails { - if !reflect.DeepEqual(profileControlsDetails[key], codeGeneratedMapping[key]) { - println("Mapping for " + key + " incorrect.") - return false + if !strings.Contains(key, "?") && token == "controls" { + if profileControlsDetails[key][0] != codeGeneratedMapping[key][0] && profileControlsDetails[key][1] != codeGeneratedMapping[key][1] { + println("Mapping for " + key + " incorrect.") + return false + } + } else if strings.Contains(key, "?") && token == "parts" { + if profileControlsDetails[key][0] != codeGeneratedMapping[key][0] && profileControlsDetails[key][1] != codeGeneratedMapping[key][1] { + println("Mapping for " + key + " incorrect.") + return false + } } } return true } -func unique(intSlice []string) []string { +// unique returns unique values in the slice +func unique(slice []string) []string { keys := make(map[string]bool) list := []string{} - for _, entry := range intSlice { + for _, entry := range slice { if _, value := keys[entry]; !value { keys[entry] = true list = append(list, entry) @@ -308,22 +428,54 @@ func unique(intSlice []string) []string { return list } -func appendMaps(SecurityControlsDetails map[string][]string, CatalogControlsDetails map[string][]string) map[string][]string { +// appendMaps appends two maps +func appendMaps(securityControlsDetails map[string][]string, catalogControlsDetails map[string][]string) map[string][]string { - for k, v := range CatalogControlsDetails { - SecurityControlsDetails[k] = v + for key, value := range catalogControlsDetails { + securityControlsDetails[key] = value } - return SecurityControlsDetails + return securityControlsDetails } -func uniqueMaps(SecurityControlsDetails map[string][]string, CatalogControlsDetails map[string][]string) map[string][]string { +func appendAlterations(securityControlsDetails map[string][]string, PartsDetails map[string][]string) map[string][]string { + + for key, value := range PartsDetails { + if _, ok := securityControlsDetails[key]; ok { + delete(securityControlsDetails, key) + securityControlsDetails[key+"_1"] = value + securityControlsDetails[key+"_2"] = value + } + } + + return securityControlsDetails +} - for k, v := range CatalogControlsDetails { - if _, ok := SecurityControlsDetails[k]; !ok { - SecurityControlsDetails[k] = v +func uniqueMaps(securityControlsDetails map[string][]string, catalogControlsDetails map[string][]string) map[string][]string { + + for key, value := range catalogControlsDetails { + if _, ok := securityControlsDetails[key]; !ok { + securityControlsDetails[key] = value + } + } + + return securityControlsDetails +} + +// Count to take count of either parts of controls & subcontrols +func Count(securityControlsDetails map[string][]string, token string) int { + + count := 0 + + for key := range securityControlsDetails { + if token == "parts" { + count++ + } else if token == "controls" { + if !strings.Contains(key, "?") { + count++ + } } } - return SecurityControlsDetails + return count }