Threat modeling
-------

**Description:**

Threat modeling is a procedure for optimizing Network/ Application/ Internet Security by 
identifying objectives and vulnerabilities, and then defining countermeasures to prevent, 
or mitigate the effects of, threats to the system. A threat is a potential or actual 
undesirable event that may be malicious (such as DoS attack) or incidental 
(failure of a Storage Device). Threat modeling is a planned activity for identifying and 
assessing application threats and vulnerabilities. 

**Solution:**

Threat modeling is best applied continuously throughout a software development project. 
The process is essentially the same at different levels of abstraction, although the 
information gets more and more granular throughout the lifecycle. Ideally, a high-level 
threat model should be defined in the concept or planning phase, and then refined 
throughout the lifecycle. As more details are added to the system, new attack vectors are 
created and exposed. The ongoing threat modeling process should examine, diagnose, and 
address these threats.

Note that it is a natural part of refining a system for new threats to be exposed. 
For example, when you select a particular technology -- such as Java for example -- 
you take on the responsibility to identify the new threats that are created by that choice. 
Even implementation choices such as using regular expressions for validation introduce 
potential new threats to deal with. 

More in-depth information about threat modeling can be found at:
https://www.owasp.org/index.php/Application_Threat_Modeling



   
