Secure Software Assessor

Analyzes the security of new or existing computer applications, software, or specialized utility programs and provides actionable results.
  • Knowledge of computer networking concepts and protocols, and network security methodologies.
  • Knowledge of risk management processes (e.g., methods for assessing and mitigating risk).
  • Knowledge of laws, regulations, policies, and ethics as they relate to cybersecurity and privacy.
  • Knowledge of cybersecurity and privacy principles.
  • Knowledge of cyber threats and vulnerabilities.
  • Knowledge of specific operational impacts of cybersecurity lapses.
  • Knowledge of complex data structures.
  • Knowledge of computer programming principles
  • Knowledge of organization's enterprise information security architecture.
  • Knowledge of organization's evaluation and validation requirements.
  • Knowledge of cybersecurity and privacy principles and methods that apply to software development.
  • Knowledge of cybersecurity and privacy principles and organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
  • Knowledge of local area and wide area networking principles and concepts including bandwidth management.
  • Knowledge of low-level computer languages (e.g., assembly languages).
  • Knowledge of operating systems.
  • Knowledge of Privacy Impact Assessments.
  • Knowledge of programming language structures and logic.
  • Knowledge of system and application security threats and vulnerabilities (e.g., buffer overflow, mobile code, cross-site scripting, Procedural Language/Structured Query Language [PL/SQL] and injections, race conditions, covert channel, replay, return-oriented attacks, malicious code).
  • Knowledge of secure configuration management techniques. (e.g., Security Technical Implementation Guides (STIGs), cybersecurity best practices on cisecurity.org).
  • Knowledge of software debugging principles.
  • Knowledge of software design tools, methods, and techniques.
  • Knowledge of software development models (e.g., Waterfall Model, Spiral Model).
  • Knowledge of software engineering.
  • Knowledge of structured analysis principles and methods.
  • Knowledge of system design tools, methods, and techniques, including automated systems analysis and design tools.
  • Knowledge of web services (e.g., service-oriented architecture, Simple Object Access Protocol, and web service description language).
  • Knowledge of interpreted and compiled computer languages.
  • Knowledge of secure coding techniques.
  • Knowledge of software related information technology (IT) security principles and methods (e.g., modularization, layering, abstraction, data hiding, simplicity/minimization).
  • Knowledge of software quality assurance process.
  • Knowledge of supply chain risk management standards, processes, and practices.
  • Knowledge of critical infrastructure systems with information communication technology that were designed without system security considerations.
  • Knowledge of secure software deployment methodologies, tools, and practices.
  • Knowledge of network security architecture concepts including topology, protocols, components, and principles (e.g., application of defense-in-depth).
  • Knowledge of security architecture concepts and enterprise architecture reference models (e.g., Zachman, Federal Enterprise Architecture [FEA]).
  • Knowledge of the application firewall concepts and functions (e.g., Single point of authentication/audit/policy enforcement, message scanning for malicious content, data anonymization for PCI and PII compliance, data loss protection scanning, accelerated cryptographic operations, SSL security, REST/JSON processing).
  • Knowledge of Personally Identifiable Information (PII) data security standards.
  • Knowledge of Payment Card Industry (PCI) data security standards.
  • Knowledge of Personal Health Information (PHI) data security standards.
  • Knowledge of information technology (IT) risk management policies, requirements, and procedures.
  • Knowledge of embedded systems.
  • Knowledge of penetration testing principles, tools, and techniques.
  • Knowledge of root cause analysis techniques.
  • Knowledge of Application Security Risks (e.g. Open Web Application Security Project Top 10 list)
  • Skill in conducting vulnerability scans and recognizing vulnerabilities in security systems.
  • Skill in designing countermeasures to identified security risks.
  • Skill in developing and applying security system access controls.
  • Skill in discerning the protection needs (i.e., security controls) of information systems and networks.
  • Skill in integrating black box security testing tools into quality assurance process of software releases.
  • Skill in secure test plan design (e. g. unit, integration, system, acceptance).
  • Skill in using Public-Key Infrastructure (PKI) encryption and digital signature capabilities into applications (e.g., S/MIME email, SSL traffic).
  • Skill in using code analysis tools.
  • Skill in performing root cause analysis.
  • Skill to apply cybersecurity and privacy principles to organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
  • Ability to use and understand complex mathematical concepts (e.g., discrete math).
  • Ability to apply cybersecurity and privacy principles to organizational requirements (relevant to confidentiality, integrity, availability, authentication, non-repudiation).
  • Ability to identify critical infrastructure systems with information communication technology that were designed without system security considerations.
  • Apply coding and testing standards, apply security testing tools including "'fuzzing" static-analysis code scanning tools, and conduct code reviews.
  • Apply secure code documentation.
  • Capture security controls used during the requirements phase to integrate security within the process, to identify key security objectives, and to maximize software security while minimizing disruption to plans and schedules.
  • Develop threat model based on customer interviews and requirements.
  • Consult with engineering staff to evaluate interface between hardware and software.
  • Evaluate factors such as reporting formats required, cost constraints, and need for security restrictions to determine hardware configuration.
  • Identify basic common coding flaws at a high level.
  • Identify security implications and apply methodologies within centralized and decentralized environments across the enterprise's computer systems in software development.
  • Identify security issues around steady state operation and management of software and incorporate security measures that must be taken when a product reaches its end of life.
  • Perform integrated quality assurance testing for security functionality and resiliency attack.
  • Perform risk analysis (e.g., threat, vulnerability, and probability of occurrence) whenever an application or system undergoes a major change.
  • Address security implications in the software acceptance phase including completion criteria, risk acceptance and documentation, common criteria, and methods of independent testing.
  • Store, retrieve, and manipulate data for analysis of system capabilities and requirements.
  • Translate security requirements into application design elements including documenting the elements of the software attack surfaces, conducting threat modeling, and defining any specific security criteria.
  • Perform penetration testing as required for new or updated applications.
  • Consult with customers about software system design and maintenance.
  • Direct software programming and development of documentation.
  • Supervise and assign work to programmers, designers, technologists and technicians, and other engineering and scientific personnel.
  • Analyze and provide information to stakeholders that will support the development of security application or modification of an existing security application.
  • Analyze security needs and software requirements to determine feasibility of design within time and cost constraints and security mandates.
  • Conduct trial runs of programs and software applications to ensure that the desired information is produced and instructions and security levels are correct.
  • Develop secure software testing and validation procedures.
  • Develop system testing and validation procedures, programming, and documentation.
  • Perform secure program testing, review, and/or assessment to identify potential flaws in codes and mitigate vulnerabilities.
  • Determine and document software patches or the extent of releases that would leave software vulnerable.