5.3 KiB
5.3 KiB
tags |
---|
security |
Software Security Checklist paper notes
Resources
5 foci of Software Security Assessment Instrument (SSAI)
- Software Security Checklist (SSC)
- Phase 1: checklist for dev life-cycle
- Phase 2: checklist for external release
- vulnerability matrix
- categorize vulnerabilities and exposures
- Flexible Modeling Framework (FMF)
- verification of requirements
- Property-Based Tester (PBT)
- testing vulnerabilities
- collection of Security Assessment Tools (SATs)
- description and explanation of their use for assessment
Items for Potential Consideration and Inclusion in a SSC (internal)
- Introduce a walkthrough, security audit review or a formal security review in every phase of the software life cycle development
- Establish security metrics during the software life cycle and a trace matrix for security requirements
- Determine stakeholders, and elicit and specific associated security requirements for each stakeholder
- Determine context and potential usage of software product along with the operating environment and specify requisite security requirements
- Make available to programmers, developers, reviewers and test teams the vulnerabilities and potential exposures associated with programming languages and operating systems before the architectural design phase
- Set up security parameters for access to services such as ftp service where anonymous ftp is allowed but with write only and no read or list tot he incoming directory and read only for outgoing directory
- Check for sources of software security risks such as inconsistencies in requirements and in design, reusable programes and other shrink-wrap software. Use of requirements tools, modeling tools etc. can aid in this area
- Avoid the use of unsafe routines such as
sprintf()
,strcpy/cat()
,gets
andfgets
in coding. - Check the security of any middleware in the program
- Check for architectural-specific vulnerabilities and how data flows through the code.
- Check for implementation-specific vulnerabilities such as Race Conditions, randomness problems, and buffer overflows.
- DO NOT allow programmer backdoors or unauthorized access paths that bypass security mechanisms
- Avoid storing secrets like passwords in the code or use weak encryption schemes
- Identify all points in the source code where the program takes input from users
- Identify all points int he source code where the program takes input from another program or un-trusted source
- Investigate all sources from which input can enter the program such as GUI, network reads, etc.
- Check API calls to security modules or interfaces
- Investigate secure connections. Verify that they actually are secure and connect as indicated to the systems to which they are intended to connect
- Investigate softwre built-in extensibility features
- Review software complexity and look for alternatives to reduce complexity
- Investigate the security of the data when passed from appliation servers to databases
- Avoid default or other improper configurations that may open the door to attackers
- Default to "highest security" needed, and require validation and approval for deviations
- Establish tools to be used for various stages of the life cycle that will be used for assessing security
- Perform security testing for unit and system integration
- Potentially, establish a security risk rating criteria and document the rating of the software product within the organization. using a risk assessment tool can benefit this area.
Items for Potential Consideration and Inclusion in a SSC (external)
- Does the software include IP addresses and subnet ranges?
- 1.1 If yes, are these IP addresses sensitive?
- 1.2 Can these addresses be used to gain information that may pose a risk to the organization?
- Does the software/program include Host names?
- 2.1 If yes, are these host names sensitive?
- 2.2 Does the release of these host names prose a risk to the organization?
- Are there any settings that can be exploited?
- 3.1 If yes, can any of these settings be modified or deleted?
- 3.2 If settings can not be modified or deleted, would they pose a risk to the organization?
- 3.3 If settings can be modified or deleted, would they pose a risk to the organization?
- Is there any non-sensitive information in the software that can be used to probe secrets?
- 4.1 If yes, can non-sensitive information be manipulated to expose sensitive information?
- 4.2 Can non-sensitive data be altered and modified so as to pose risk?
- Is there any Material that might expose company information such as Customer lists?
- 5.1 If yes, are Customers lists protected under a privacy policy?
- 5.2 Does the release of Customers lists pose a risk?
- 5.3 DOes the release of Cusomters lists do harm to the customers?
- Is any of the data restricted?
- 6.1 If yes, is the data controlled by security mechanisms such as RBAC?
- 6.2 If yes, are their security restrictions on the transfer of restricted data?
- 6.3 Is the restricted data transmited over open networks?
- 6.3.1 Is the restricted data encrypted before transmission?
- etc...