@@ -32,6 +32,7 @@ object Pattern {
32
32
level : Result .Level ,
33
33
category : Category ,
34
34
subcategory : Option [Subcategory ],
35
+ scanType : Option [ScanType ],
35
36
parameters : Set [Parameter .Specification ] = Set .empty,
36
37
languages : Set [Language ] = Set .empty,
37
38
enabled : Boolean = false ) {
@@ -50,4 +51,56 @@ object Pattern {
50
51
InsecureModulesLibraries , Visibility , CSRF , Android , MaliciousCode , Cryptography , CommandInjection , FirefoxOS ,
51
52
Auth , DoS , SQLInjection , Routes , Regex , SSL , Other = Value
52
53
}
54
+
55
+ /** ScanType represents the type of analysis performed to discover issues that match the associated patterns.
56
+ *
57
+ * Scan types can be divided into two "categories":
58
+ * - Static scan types: these are the only scan types that can actually be associated to a pattern of our static
59
+ * analysis pipeline. These scans are performed on "static" source code.
60
+ * - SAST
61
+ * - SCA
62
+ * - ContainerSCA
63
+ * - Secrets
64
+ * - IaC
65
+ * - CICD
66
+ * - License
67
+ * - Dynamic scan types: are performed on live applications and can never be associated with patterns of our static
68
+ * analysis pipeline. They are defined here for completion.
69
+ * - PenTesting
70
+ * - DAST
71
+ * - CSPM
72
+ */
73
+ type ScanType = ScanType .Value
74
+ object ScanType extends Enumeration {
75
+
76
+ /** Static application security testing, i.e. source code scanning. */
77
+ val SAST = Value
78
+
79
+ /** Software composition analysis or supply chain security. Scan open source libraries that projects depend on for vulnerabilities or CVEs.*/
80
+ val SCA = Value
81
+
82
+ /** Like SCA but scanning container dependencies. */
83
+ val ContainerSCA = Value
84
+
85
+ /** Scan files for exposed API keys, passwords, certificates, encryption keys, etc. */
86
+ val Secrets = Value
87
+
88
+ /** Scan infrastructure-as-code files for misconfigurations and vulnerabilities. */
89
+ val IaC = Value
90
+
91
+ /** Scan CI/CD files for misconfigurations and vulnerabilities. */
92
+ val CICD = Value
93
+
94
+ /** Scan license files for compliance with organization policies. */
95
+ val License = Value
96
+
97
+ /** Manually scan an application or system for vulnerabilities. */
98
+ val PenTesting = Value
99
+
100
+ /** Similar to pen-testing, but automated and not as customizable. */
101
+ val DAST = Value
102
+
103
+ /** Cloud security posture management. Scan live cloud environments for infrastructure and configuration risks. */
104
+ val CSPM = Value
105
+ }
53
106
}
0 commit comments