3.6 Summarize secure application development and deployment concepts Flashcards
Development lifecycle models
Waterfall vs Agile.
Waterfall: each phase must be completed sequentially.
Agile: iterates through phases concurrently.
Secure DevOps
DevOps means that there is much more collaboration between developers and system administrators.
Security automation
The concept of scripted or programmed infrastructure can also be applied to security infrastructure (firewalls, IDS, SIEM, and privilege management). For example, security automation might mean that a user account is provisioned by running a script for the appropriate role rather than relying on a human administrator to select the appropriate security groups and policy settings.
Continuous integration
The principle that developers should commit updates often (every day or sometimes even more frequently).
Immutable systems
This approach first strictly divides data from the components processing data. Once designed and provisioned as instances, the components are never changed or patched in place. Deploying a patch or adding a new application means building a new instance and deploying that.
Infrastructure as code
This is the principle that when deploying an application, the SERVER INSTANCE supporting the application can be defined and provisioned through the software code. Imagine a setup program that not only installs the application but also creates a VM and OS on which to run the application.
Version control and change management
An ID system for each iteration of a software product.
Provisioning and deprovisioning
Provisioning is the process of deploying an application to the target environment, such as enterprise desktops, mobile devices, or cloud infrastructure.
Deprovisioning is the process of removing an application from packages or instances.
Proper error handling
Ideally, the programmer will have written an error or exception handler to dictate what the application should then do in case of invalid user input, a loss of network connectivity, another server or process failing.
Proper input validation
To mitigate this risk, all input methods should be documented with a view to reducing the potential attack surface exposed by the application. There must be routines to check user input, and anything that does not conform to what is required must be rejected. Can reduce risk of injection attacks.
Normalization
Means that a string is stripped of illegal characters or substrings and converted to the accepted character set. This ensures that the string is in a format that can be processed correctly by the input validation routines.
Stored procedures
A part of a database that executes a custom query. The procedure is supplied an input by the calling program and returns a pre-defined output for matched records.
Code signing
The principal means of proving the authenticity and integrity of code (an executable or a script). The developer creates a cryptographic hash of the file then signs the hash using his or her private key.
Obfuscation/camouflage
A software that randomizes the names of variables, constants, functions, and procedures, removes comments and white space, and performs other operations to make the compiled code physically and mentally difficult to read and follow.
Code reuse/dead code
Dead code is executed but has no effect on the program flow.