Skip to content

Commit e462bb5

Browse files
authored
Merge pull request #14 from devsecopsmaturitymodel/feat/descriptions-enhancement
feat: enhance descriptions
2 parents 172ab3b + 5157c6d commit e462bb5

File tree

10 files changed

+142
-73
lines changed

10 files changed

+142
-73
lines changed

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ RUN cd /var/www/html/yaml-generation && composer install \
1212
RUN pecl channel-update pecl.php.net && pecl install yaml && docker-php-ext-enable yaml
1313
RUN curl https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel/refs/heads/master/src/assets/YAML/meta.yaml -o /var/www/html/src/assets/YAML/meta.yaml
1414
RUN cd /var/www/html && php yaml-generation/generateDimensions.php
15+
RUN curl https://raw.githubusercontent.com/devsecopsmaturitymodel/DevSecOps-MaturityModel/refs/heads/master/src/assets/YAML/meta.yaml -o /var/www/html/src/assets/YAML/meta.yaml
1516
workdir /var/www/html
1617
CMD php yaml-generation/generateDimensions.php

src/assets/YAML/default/BuildAndDeployment/Build.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,20 @@ Build and Deployment:
4141
comments: ""
4242
Defined build process:
4343
uuid: f6f7737f-25a9-4317-8de2-09bf59f29b5b
44+
description: |
45+
A *build process* include more than just compiling your source code.
46+
It also includes steps such as managing (third party) dependencies,
47+
environment configuration, running the unit tests, etc.
48+
49+
A *defined build process* has automated these steps to ensure consistency.
50+
51+
This can be done with a Jenkinsfile, Maven, or similar tools.
4452
risk:
4553
Performing builds without a defined process is error prone; for example,
4654
as a result of incorrect security related configuration.
4755
measure:
4856
A well defined build process lowers the possibility of errors during
4957
the build process.
50-
description: |
51-
Sample evidence as an attribute in the yaml: The build process is defined in [REPLACE-ME Pipeline](https://replace-me/jenkins/job)
52-
in the folder _vars_. Projects are using a _Jenkinsfile_ to use the
53-
defined process.
5458
difficultyOfImplementation:
5559
knowledge: 2
5660
time: 3

src/assets/YAML/default/CultureAndOrganization/Process.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,18 @@ Culture and Organization:
5858
comments: ""
5959
Definition of simple BCDR practices for critical components:
6060
uuid: c72da779-86cc-45b1-a339-190ce5093171
61+
description:
62+
A _Business Continuity and Disaster Recovery_ (BCDR) is a plan and a process
63+
that helps a business to return to normal operations if a disaster occurs.
6164
risk:
62-
In case of an emergency, like a power outage, DR actions to perform are
63-
not clear. This leads to reaction and remediation delays.
65+
If the disaster recovery actions are not clear, you risk slow reaction and remediation delays.
66+
This applies to cyber attacks as well as natural emergencies, such as a power outage.
6467
measure:
6568
By understanding and documenting a business continuity and disaster
6669
recovery (BCDR) plan, the overall availability of systems and applications
6770
is increased. Success factors like responsibilities, Service Level Agreements,
6871
Recovery Point Objectives, Recovery Time Objectives or Failover must be fully
69-
documented and understood.
72+
documented and understood by the people involved in the recovery.
7073
difficultyOfImplementation:
7174
knowledge: 4
7275
time: 3

src/assets/YAML/default/Implementation/ApplicationHardening.yaml

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,79 @@ Implementation:
4949
iso27001-2022:
5050
- Hardening is not explicitly covered by ISO 27001 - too specific
5151
- 8.22
52-
isImplemented: false
5352
comments: ""
54-
Contextualized Encoding:
53+
Context-aware output encoding:
5554
uuid: e1f37abb-d848-4a3a-b3df-65e91a89dcb7
55+
description: |
56+
**Input validation** stops malicious data from entering your system. \
57+
**Output encoding** neutralizes malicious data before rendering to user, or the next system.
58+
59+
Input validation and output encoding work together. Apply both.
60+
61+
**Context-aware output encoding** encodes data differently, depending on its context. In the sample below the `{{bad_data}}` must be encoded differently, depending on its context, to render safe HTML.
62+
63+
```html
64+
<div>{{bad_data}}</div>
65+
<a href="{{bad_data}}">Click me</a>
66+
<script>var x = '{{bad_data}}';</script>
67+
<script>/** Comment {{bad_data}} */</script>
68+
```
5669
risk:
57-
The generation of interpreter directives from user-provided data poses difficulties and can introduce vulnerabilities to injection attacks.
70+
If an attacker manages to slip though your input validation, the attacker may gain control over the user session or execute arbitrary actions.
5871
measure: |
59-
Implementing contextualized encoding, such as employing object-relational mapping tools or utilizing prepared statements, nearly removes the threat of injection vulnerabilities.
72+
* Use modern secure frameworks such as React/Angular/Vue/Svelte. The default method here renders data in a safe way.
73+
* Use established and well-maintained encoding libraries such as OWASP’s Java Encoder and Microsoft’s AntiXSS.
74+
* Implement content security policies (CSP) to restrict the types of content that can be loaded and executed.
6075
difficultyOfImplementation:
61-
knowledge: 2
76+
knowledge: 1
6277
time: 2
6378
resources: 1
6479
usefulness: 3
6580
level: 1
81+
implementation:
82+
- $ref: src/assets/YAML/default/implementations.yaml#/implementations/owasp-dom-xss-cheats
83+
- $ref: src/assets/YAML/default/implementations.yaml#/implementations/cwe-838
84+
references:
85+
samm2:
86+
- D-SR-1-A
87+
iso27001-2017:
88+
- Hardening is not explicitly covered by ISO 27001 - too specific
89+
- 13.1.3
90+
iso27001-2022:
91+
- Hardening is not explicitly covered by ISO 27001 - too specific
92+
- 8.22
93+
comments: ""
94+
Parametrization:
95+
uuid: 00e91a8a-3972-4692-8679-674ab8547486
6696
description: |
67-
Bear in mind that utilizing frameworks is a recommended approach; however, they can develop known security weaknesses over time. Diligent and regular patching is crucial.
68-
implementation: []
97+
By concatenating strings from user input to build SQL queries, an attacker can manipulate the query to do other unintentional SQL commands as well.
98+
99+
This is called *SQL injection* but the principle applies to NoSql, and anywhere that your code is building commands that will be executed.
100+
101+
Pay attention to these two lines of code. They seem similar, but behave very differently.
102+
103+
* `sql.execute("SELECT * FROM table WHERE ID = " + id);`
104+
* `sql.execute("SELECT * FROM table WHERE ID = ?", id);`
105+
The second line is parameterized. The same principle applies to other types, such as command line execution, etc.
106+
risk: |
107+
Systems vulnerable to injections may lead to data breaches, loss of data,
108+
unauthorized alteration of data, or complete database compromise or downtime.
109+
110+
This applies to SQL, NoSql, LDAP, XPath, email headers OS commands, etc.
111+
measure: |
112+
* Identify which of the types your application is using. Check that you use:
113+
* Use _parametrized queries_ (or _prepared statements_)
114+
* For database queries, you may also use:
115+
* Use _stored procedures_ ()
116+
* Use ORM (Object-Relational Mapping) tools that automatically handle input sanitization
117+
difficultyOfImplementation:
118+
knowledge: 1
119+
time: 2
120+
resources: 1
121+
usefulness: 3
122+
level: 1
123+
implementation:
124+
- $ref: src/assets/YAML/default/implementations.yaml#/implementations/owasp-parameterization-cheats
69125
references:
70126
samm2:
71127
- D-SR-1-A
@@ -75,6 +131,7 @@ Implementation:
75131
iso27001-2022:
76132
- Hardening is not explicitly covered by ISO 27001 - too specific
77133
- 8.22
134+
comments: ""
78135
App. Hardening Level 1:
79136
uuid: cf819225-30cb-4702-8e32-60225eedc33d
80137
risk:
@@ -155,7 +212,6 @@ Implementation:
155212
- Hardening is not explicitly covered by ISO 27001 - too specific
156213
- 8.22
157214
isImplemented: false
158-
evidence: ""
159215
comments: ""
160216
dependsOn:
161217
- App. Hardening Level 1
@@ -189,7 +245,6 @@ Implementation:
189245
- Hardening is not explicitly covered by ISO 27001 - too specific
190246
- 8.22
191247
isImplemented: false
192-
evidence: ""
193248
comments: ""
194249
dependsOn:
195250
- App. Hardening Level 2 (75%)

src/assets/YAML/default/Implementation/InfrastructureHardening.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -510,10 +510,12 @@ Implementation:
510510
uuid: ad23be9c-5661-4f1f-81a3-5a5dc7061629
511511
risk:
512512
Evil actors might be able to perform a man in the middle attack and sniff
513-
confidential information (e.g. authentication factors like passwords)
514-
measure:
513+
confidential information (e.g. authentication factors like passwords).
514+
measure: |-
515515
By using encryption at the edge of traffic in transit, it is impossible
516-
or at least harder to sniff credentials being outside of the organization.
516+
or at least harder to sniff credentials or information being outside of the organization.
517+
518+
Using standard secure protocols like HTTPS is recommended.
517519
difficultyOfImplementation:
518520
knowledge: 2
519521
time: 2
@@ -699,7 +701,7 @@ Implementation:
699701
description: |
700702
Begin with the WAF in a monitoring state to understand the traffic and threats. Progressively enforce blocking actions based on intelligence gathered, ensuring minimal disruption to legitimate traffic.
701703
dependsOn:
702-
- Contextualized encoding
704+
- Context-aware output encoding
703705
implementation: []
704706
references:
705707
samm2:

src/assets/YAML/default/InformationGathering/Monitoring.yaml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -291,15 +291,23 @@ Information Gathering:
291291
iso27001-2022:
292292
- Not explicitly covered by ISO 27001 - too specific
293293
- 5.26
294-
isImplemented: false
295-
evidence: ""
296294
comments: ""
297295
Simple application metrics:
298296
uuid: e9a6d403-a467-445e-b98a-74f0c29da0b1
299297
risk: Attacks on an application are not recognized.
300-
measure:
301-
Gathering of application metrics helps to identify incidents like brute
302-
force attacks, login/logout.
298+
measure: |-
299+
Gathering of application metrics helps to identify incidents like brute force attacks, login/logout patterns, and unusual spikes in activity. Key metrics to monitor include:
300+
- Authentication attempts (successful/failed logins)
301+
- Transaction volumes and patterns (e.g. orders, payments)
302+
- API call rates and response times
303+
- User session metrics
304+
- Resource utilization
305+
306+
Example: An e-commerce application normally processes 100 orders per hour. A sudden spike to 1000 orders per hour could indicate either:
307+
- A legitimate event (unannounced marketing campaign, viral social media post)
308+
- A security incident (automated bulk purchase bots, credential stuffing attack)
309+
310+
By monitoring these basic metrics, teams can quickly investigate abnormal patterns and determine if they represent security incidents requiring response.
303311
difficultyOfImplementation:
304312
knowledge: 2
305313
time: 2
@@ -315,8 +323,6 @@ Information Gathering:
315323
- 12.4.1
316324
iso27001-2022:
317325
- 8.15
318-
isImplemented: false
319-
evidence: ""
320326
comments: ""
321327
Simple budget metrics:
322328
uuid: f08a3219-6941-43ec-8762-4aff739f4664

src/assets/YAML/default/TestAndVerification/Consolidation.yaml

Lines changed: 18 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,38 +21,9 @@ Test and Verification:
2121
- The number of network hops required to reach the asset (recommended)
2222
- Authentication requirements for access (recommended)
2323
dependsOn:
24-
- uuid:38d1bd10-7b5f-4ae1-868c-0ec813285425 # Fix based on severity
24+
- uuid:44f2c8a9-4aaa-4c72-942d-63f78b89f385 # Treatment of defects with severity high or higher:
2525
#- uuid:3260a15f-2df0-4173-8790-f11de2cb525a # Access applications accessibility TODO
26-
- uuid:2a44b708-734f-4463-b0cb-86dc46344b2f #iventory of apps
27-
implementation:
28-
references:
29-
samm2:
30-
- I-DM-3-B
31-
iso27001-2017:
32-
- 16.1.4
33-
- 8.2.1
34-
- 8.2.2
35-
- 8.2.3
36-
iso27001-2022:
37-
- 5.25
38-
- 5.12
39-
- 5.13
40-
- 5.10
41-
tags: ["vuln-action", "defect-management"]
42-
Fix based on severity:
43-
uuid: 38d1bd10-7b5f-4ae1-868c-0ec813285425
44-
risk: |-
45-
Overwhelming volume of security findings from automated testing tools. This might lead to ignorance of findings.
46-
measure: |
47-
Implement a very simple risk-based prioritization framework for vulnerability remediation based on the severity of the findings.
48-
49-
On level one, fix only critical findings.
50-
difficultyOfImplementation:
51-
knowledge: 2
52-
time: 2
53-
resources: 1
54-
usefulness: 3
55-
level: 1
26+
- uuid:2a44b708-734f-4463-b0cb-86dc46344b2f # Inventory of production components
5627
implementation:
5728
references:
5829
samm2:
@@ -168,11 +139,19 @@ Test and Verification:
168139
uuid: c1acc8af-312e-4503-a817-a26220c993a0
169140
risk:
170141
As false positive occur during each test, all vulnerabilities might be
171-
ignored.
172-
measure:
173-
False positives are suppressed so they will not show up on the next
174-
tests again. Most security tools have the possibility to suppress false positives.
175-
A Vulnerability Management System might be used.
142+
ignored. Specially, if tests are automated an run daily.
143+
measure: |-
144+
Findings from security tests must be triaged and outcomes persisted/documented to:
145+
- Prevent re-analysis of known issues in subsequent test runs
146+
- Track accepted risks vs false positives
147+
- Enable consistent decision-making across teams
148+
149+
At this maturity level, a simple tracking system suffices - tools need only distinguish between "triaged" and "untriaged" findings, without complex categorization. Some tools refer to this as "suppression" of findings.
150+
151+
Samples for false positive handling:
152+
- [OWASP Dependency Check](https://jeremylong.github.io/DependencyCheck/general/suppression.html)
153+
- [Kubescape with VEX](https://kubescape.io/blog/2023/12/07/kubescape-support-for-vex-generation/)
154+
- [OWASP DefectDojo Risk Acceptance](https://docs.defectdojo.com/en/working_with_findings/findings_workflows/risk_acceptances/) and [False Positive Handling](https://docs.defectdojo.com/en/working_with_findings/intro_to_findings/#triage-vulnerabilities-using-finding-status)
176155
difficultyOfImplementation:
177156
knowledge: 1
178157
time: 1
@@ -248,8 +227,7 @@ Test and Verification:
248227
iso27001-2022:
249228
- 8.8
250229
- 5.25
251-
isImplemented: false
252-
evidence: ""
230+
tags: ["vuln-action", "defect-management"]
253231
comments: ""
254232
Treatment of defects with severity high or higher:
255233
uuid: 44f2c8a9-4aaa-4c72-942d-63f78b89f385
@@ -274,7 +252,7 @@ Test and Verification:
274252
- 8.8
275253
- 5.25
276254
implementation: []
277-
isImplemented: false
255+
tags: ["vuln-action", "defect-management"]
278256
evidence: ""
279257
Treatment of defects with severity middle:
280258
uuid: 9cac3341-fe83-4079-bef2-bfc4279eb594
@@ -297,6 +275,7 @@ Test and Verification:
297275
- 8.8
298276
- 5.25
299277
implementation: []
278+
tags: ["vuln-action", "defect-management"]
300279
Usage of a vulnerability management system:
301280
uuid: 85ba5623-84be-4219-8892-808837be582d
302281
risk:

src/assets/YAML/default/TestAndVerification/Test-Intensity.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Test and Verification:
7070
risk:
7171
Time pressure and ignorance might lead to false predictions for the test
7272
intensity.
73-
measure: The intensity of the used tools are not modified to safe time.
73+
measure: The intensity of the used tools are not modified to save time.
7474
difficultyOfImplementation:
7575
knowledge: 1
7676
time: 1

src/assets/YAML/default/implementations.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ implementations:
4141
name: CWE Top 25 Most Dangerous Software Weaknesses
4242
tags: ["documentation", "threat"]
4343
url: https://cwe.mitre.org/top25/archive/2020/2020_cwe_top25.html
44+
cwe-838:
45+
uuid: ae97c9b0-308c-4dab-bff9-bf3330a897dc
46+
name: CWE-838 Inappropriate Encoding for Output Context
47+
tags: ["documentation", "cwe"]
48+
url: https://cwe.mitre.org/data/definitions/838.html
4449
docker-content-trust:
4550
uuid: ee81f93f-8230-4cfb-a132-ae4ec61cb8e6
4651
name: Docker Content Trust
@@ -430,6 +435,16 @@ implementations:
430435
name: OWASP Logging CheatSheet
431436
url: https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html
432437
tags: [logging, documentation]
438+
owasp-dom-xss-cheats:
439+
uuid: 2d61e48f-bade-4332-a383-adc50c29673a
440+
name: OWASP DOM based XSS Prevention CheatSheet
441+
url: https://cheatsheetseries.owasp.org/cheatsheets/DOM_based_XSS_Prevention_Cheat_Sheet.html
442+
tags: []
443+
owasp-parameterization-cheats:
444+
uuid: d880fa0f-9dbb-454e-a003-d844fad31ab4
445+
name: OWASP Parameterization CheatSheet
446+
url: https://cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html
447+
tags: []
433448
elk-stack:
434449
uuid: 38fe9d00-df8b-44b6-910d-ca0f02b5c5d3
435450
name: ELK-Stack

src/assets/YAML/schemas/dsomm-schema-implementation.json

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,17 @@
135135
"iso27001-2022"
136136
]
137137
},
138-
"isImplemented": {
139-
"type": "boolean"
138+
"teamsImplemented": {
139+
"type": "array",
140+
"items": {
141+
"type": "object"
142+
}
140143
},
141-
"evidence": {
142-
"type": "string"
144+
"teamsEvidence": {
145+
"type": "array",
146+
"items": {
147+
"type": "object"
148+
}
143149
},
144150
"comments": {
145151
"type": "string"
@@ -155,8 +161,6 @@
155161
"level",
156162
"implementation",
157163
"references",
158-
"isImplemented",
159-
"evidence",
160164
"comments"
161165
],
162166
"additionalProperties": false

0 commit comments

Comments
 (0)