Systems Development, Acquisition, and MaintenanceSoftware is the most important building block in a financial institution’s technology infrastructure. Software should provide the security controls required by the institution, be protected from inappropriate use, and be maintained at a required level of trustworthiness. Software Development and AcquisitionFinancial institutions obtain software through self-development, contracted development, the purchase of pre-written code, or variations of those development and acquisition approaches. The security issues associated with the approaches involve the security controls built into the code and the trustworthiness of the code that is placed into the financial institution’s environment. The security features of the code can be assessed regardless of the means of development or acquisition. The trustworthiness of the code, however, is ascertained differently depending on the availability of information necessary to perform an assessment. Test data consisting of institution data or customer data frequently is used in development tests or certifications. Appropriate risk mitigation techniques should be employed to protect that data from unauthorized disclosure. As a general principal, the risk of disclosure should be no greater than in the production environment. Techniques to achieve that goal can include altering the data so it is no longer identified with a customer and performing the test in an environment whose controls are as strong as those employed in the production environment. Security Control Requirements Financial institutions should develop security control requirements for new systems, system revisions, or new system acquisitions. Management will define the security control requirements based on their risk assessment process evaluating the value of the information at risk and the potential impact of unauthorized access or damage. Based on the risks posed by the system, management may use a defined methodology for determining security requirements, such as ISO 15408, the Common Criteria. Development projects should consider automated controls for incorporation into the application and the need to determine supporting manual controls. Financial institutions can implement appropriate security controls with greater cost effectiveness by designing them into the original software rather than making subsequent changes after implementation. The institution’s development, acquisition, and audit policies should include guidelines describing the involvement of internal audit in development or acquisition activities as a means of independently verifying the adequacy of the security requirements as they are developed and implemented. For more information, refer to the “Development and Acquisition” and “Audit” booklets in the FFIEC IT Examination Handbook. Development environments should be appropriately secured as a part of the overall institution environment. Appropriate security generally is a function of the risks of information exposure and the risks that unexpected capabilities will be incorporated into projects delivered to the production environment. Monitoring of the development environment can assist in assuring that the implemented controls are functioning properly. Security Controls in Application SoftwareApplication development should incorporate appropriate security controls, audit trails, and activity logs. Typical application access controls are addressed in earlier sections. Application security controls should also include validation controls for data entry and data processing. Data entry validation controls include access controls over entry and changes to data, error checks, review of suspicious or unusual data, and dual entry or additional review and authorization for highly sensitive transactions or data. Data processing controls include batch control totals, hash totals of data for comparison after processing, identification of any changes made to data outside the application (e.g., data-altering utilities), and job control checks to ensure programs run in correct sequence (see the “Operations” booklet in the FFIEC IT Examination Handbook for additional considerations). Some applications will require the integration of additional authentication and encryption controls to ensure integrity and confidentiality of the data. As customers and merchants originate an increasing number of transactions, authentication and encryption become increasingly important to ensure non-repudiation of transactions. Remote access to applications by customers and others increases risks. Steps to mitigate those risks include network, host, and application layer architecture considerations. Network and host controls are necessary to mitigate the risk from potential flaws in applications. Software trustworthiness is an important component in that consideration. Additionally, ongoing risk assessments should consider the adequacy of application level controls in light of changing threat, network, and host environments. Software TrustworthinessSoftware can contain erroneous or intentional code that introduces covert channels, backdoors, and other security risks into systems and applications. These hidden access points can provide unauthorized access to systems or data, unauthorized communications capabilities, and unauthorized abilities to change the software. Because those unauthorized abilities can circumvent the financial institution’s control structure, financial institutions should assess the trustworthiness of the software in their environments and implement appropriate controls to mitigate any unacceptable risk. The additional controls can exist at various levels, including the network, host, and application layers. Assessment of both self-developed and purchased software should consider the development process, the source code, and the history and reputation of the developers or vendors. Generally speaking, software whose development process and source is available to the institution can be more effectively evaluated than other software. Development ProcessThe development process provides important indicators of code trustworthiness. The primary indicators are the extent to which security is incorporated within development and personnel processes, and the level of process maturity. Specific features include:
Process maturity is an important indicator because mature processes result in a more controlled code development. For a greater discussion of development processes, see the “Development and Acquisition” booklet in the FFIEC IT Examination Handbook. Source Code ReviewSource code also provides indicators of code trustworthiness. Code that has been subjected to independent security reviews is generally more trustworthy than code that has not. Source code reviews can be automated or manual. Automated reviews typically look for common coding errors that could have security implications, but can lack the detail of a manual review. Manual reviews can be more detailed but may be unreliable due to the tedious nature of the task and the varying capabilities of the reviewers. Taken together, both automated and manual code review can mitigate some risk from coding errors. However, source code reviews cannot protect against the introduction of unexpected and unauthorized capabilities in the compiling or other manipulation of code. History and ReputationFinancial institutions that purchase pre-written software are frequently not provided the opportunity to evaluate the development process or the source code of the software they introduce into their environment. In such situations, the institutions rely on the proxy of vendor history and reputation. History and reputation are also important when code is developed by the institution’s employees. Important indicators include:
Assessment Follow-up ActionsShould the assessment indicate the software is not sufficiently trustworthy to be implemented in the current environment, additional controls may be implemented at the host or network level. Those controls generally limit access to the software and the host, limit the software’s access to other host and network resources, monitor the software’s actions on the host, or monitor network communications. Systems MaintenanceFinancial institutions that introduce trustworthy systems into their environment should ensure that the systems retain that trustworthiness over time. Essential control elements are the development of appropriately hardened systems, usage of standard builds, the appropriate updating of builds and deployed systems through patch management, and the controlled introduction of changes into the institution’s environment. HardeningFinancial institutions use commercial off-the-shelf (COTS) software for operating systems and applications. COTS systems generally provide more functions than are required for the specific purposes for which they are employed. For example, a default installation of a server operating system may install mail, Web, and file-sharing services on a system whose sole function is a DNS server. Unnecessary software and services represent a potential security weakness. Their presence increases the potential number of discovered and undiscovered vulnerabilities present in the system. Additionally, system administrators may not install patches or monitor the unused software and services to the same degree as operational software and services. Protection against those risks begins when the systems are constructed and software installed through a process that is referred to as hardening a system. When deploying off-the-shelf software, management should harden the resulting system. Hardening includes the following actions:
After deployment, COTS systems may need updating with current security patches. Additionally, the systems should be periodically audited to ensure that the software present on the systems is authorized and properly configured. Standard BuildsConsistency in system configuration makes security easier to implement and maintain. Standard builds allow one documented configuration to be applied to multiple computers in a controlled manner. One financial institution may have many standard builds. Through the use of standard builds, an institution simplifies
An institution may not be able to meet all of its requirements from its standard builds. The use of a non-standard build is typically documented and approved, with appropriate changes made to patch management and disaster recovery plans. Patch ManagementSoftware support should incorporate a process to update and patch operating system and application software for new vulnerabilities. Frequently, security vulnerabilities are discovered in operating systems and other software after deployment. Vendors often issue software patches to correct those vulnerabilities. Financial institutions should have an effective monitoring process to identify new vulnerabilities in their hardware and software. Monitoring involves such actions as the receipt and analysis of vendor and governmental alerts and security mailing lists. Once identified, secure installation of those patches requires a process for obtaining, testing, and installing the patch. All patches are not equally important. Financial institutions should have a process to evaluate the patches against the threat and network environment and to prioritize patch application across classes of computers. Should the institution decide not to apply an otherwise important patch to any particular computer, the decision should be documented with appropriate conforming changes made to inventory records and disaster recovery plans. Patches make direct changes to the software and configuration of each system to which they are applied. They may degrade system performance, introduce new vulnerabilities, or reintroduce old vulnerabilities. The following actions can help ensure patches do not compromise the security of systems:
Controlled Changes to the EnvironmentFinancial institutions should have an effective process to introduce application and system changes into their environments. The process should encompass developing, implementing, and testing changes to both internally developed software and acquired software. Weak procedures can corrupt applications and introduce new security vulnerabilities. Control considerations relating to security include the following:
Changes to operating systems may degrade the efficiency and effectiveness of applications that rely on the operating system for interfaces to the network, other applications, or data. Generally, management should implement an operating system change control process similar to the change control process used for application changes. In addition, management should review application systems following operating system changes to protect against a potential compromise of security or operational integrity. Isolated software libraries should be used for the creation and maintenance of software. Typically, separate libraries exist for development, test, and production.
|