Skip to content

Commit e19b7c3

Browse files
committed
fixed stuff and removed placeholders
1 parent 4207e73 commit e19b7c3

19 files changed

Lines changed: 162 additions & 244 deletions

docs/assets/demo/fstec-sbom-demo.en.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
{
7070
type: "card",
7171
title: "A manifest-only run may be incomplete",
72-
body: "If the manifest does not expose transitive dependencies, this run does not provide the full component list. In such ecosystems dependency resolution in the environment is recommended for a complete inventory."
72+
body: "If the manifest does not expose transitive dependencies, this run does not provide the full component list. A complete inventory requires either a lock file or dependency resolution in a prepared project environment."
7373
},
7474
{
7575
type: "command",
@@ -94,7 +94,7 @@
9494
{
9595
type: "card",
9696
title: "What changed after resolve",
97-
body: "The agent used the specified <code>pip</code>, added the <code>pip freeze</code> result as <code>codescoring_pip_for_freeze</code>, saved the scan to a CLI project, and produced a local <code>bom-local.json</code>."
97+
body: "The agent used the specified <code>pip</code>, added the dependency resolution result as <code>codescoring_pip_for_freeze</code>, saved the scan to a CLI project, and produced a local <code>bom-local.json</code>. This mode should be run only in a controlled project environment, otherwise extra packages can end up in the SBOM."
9898
}
9999
]
100100
};

docs/assets/demo/fstec-sbom-demo.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
{
7070
type: "card",
7171
title: "Обычного запуска может быть недостаточно",
72-
body: "Если манифест не раскрывает транзитивные зависимости, такой запуск не даёт полного перечня компонентов. Для качественного инвентаря в таких экосистемах рекомендуется разрешение зависимостей в окружении."
72+
body: "Если манифест не раскрывает транзитивные зависимости, такой запуск не даёт полного перечня компонентов. Для качественного инвентаря нужен либо lock-файл, либо запуск с разрешением зависимостей в подготовленном окружении проекта."
7373
},
7474
{
7575
type: "command",
@@ -94,7 +94,7 @@
9494
{
9595
type: "card",
9696
title: "Что изменилось после resolve",
97-
body: "Агент использовал <code>pip</code> по указанному пути, добавил результаты <code>pip freeze</code> как <code>codescoring_pip_for_freeze</code>, сохранил анализ в CLI-проекте и сформировал локальный <code>bom-local.json</code>."
97+
body: "Агент использовал <code>pip</code> по указанному пути, добавил результат разрешения зависимостей как <code>codescoring_pip_for_freeze</code>, сохранил анализ в CLI-проекте и сформировал локальный <code>bom-local.json</code>. Такой режим стоит запускать только в контролируемом окружении проекта, иначе в SBOM могут попасть лишние пакеты."
9898
}
9999
]
100100
};

docs/assets/demo/johnny-build-report-demo.en.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,20 @@
7171
" --create-project \\",
7272
" --stage build \\",
7373
" --localization en \\",
74-
" --format \"coloredtable,junit&gt;&gt;junit.xml\" \\",
74+
" --format \"coloredtable,sarif&gt;&gt;report.sarif\" \\",
7575
" --ignore .git",
7676
" artifacts:",
7777
" paths:",
7878
" - bom.json",
79-
" - junit.xml",
79+
" - report.sarif",
8080
" when: always",
8181
" expire_in: 1 week"
8282
],
8383
outputDelay: 10
8484
},
8585
{
8686
type: "command",
87-
command: "johnny scan dir . --api_token $JOHNNY_API_TOKEN --api_url $JOHNNY_API_URL --project \"billing-service-cli\" --save-results --create-project --stage build --localization en --format \"coloredtable,junit>>junit.xml\" --ignore .git",
87+
command: "johnny scan dir . --api_token $JOHNNY_API_TOKEN --api_url $JOHNNY_API_URL --project \"billing-service-cli\" --save-results --create-project --stage build --localization en --format \"coloredtable,sarif>>report.sarif\" --ignore .git",
8888
output: [
8989
"Analysis ticket result_id: 8ce150e2-2ef4-45db-81d7-3c32ef407b07",
9090
"- Wait analysis result... [7s]",
@@ -141,10 +141,10 @@
141141
},
142142
{
143143
type: "command",
144-
command: "ls -1 bom.json junit.xml",
144+
command: "ls -1 bom.json report.sarif",
145145
output: [
146146
"bom.json",
147-
"junit.xml"
147+
"report.sarif"
148148
],
149149
outputDelay: 24
150150
},
@@ -159,7 +159,7 @@
159159
{
160160
type: "card",
161161
title: "Outputs are ready",
162-
body: "In this example, the Johnny Agent saved an SBOM, prepared `junit.xml`, and returned code `1` because the policies found issues that need attention."
162+
body: "In this example, the Johnny Agent saved an SBOM, prepared `report.sarif`, and returned code `1` because the policies found issues that need attention."
163163
}
164164
]
165165
};

docs/assets/demo/johnny-build-report-demo.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,20 @@
7171
" --create-project \\",
7272
" --stage build \\",
7373
" --localization ru \\",
74-
" --format \"coloredtable,junit&gt;&gt;junit.xml\" \\",
74+
" --format \"coloredtable,sarif&gt;&gt;report.sarif\" \\",
7575
" --ignore .git",
7676
" artifacts:",
7777
" paths:",
7878
" - bom.json",
79-
" - junit.xml",
79+
" - report.sarif",
8080
" when: always",
8181
" expire_in: 1 week"
8282
],
8383
outputDelay: 10
8484
},
8585
{
8686
type: "command",
87-
command: "johnny scan dir . --api_token $JOHNNY_API_TOKEN --api_url $JOHNNY_API_URL --project \"billing-service-cli\" --save-results --create-project --stage build --localization ru --format \"coloredtable,junit>>junit.xml\" --ignore .git",
87+
command: "johnny scan dir . --api_token $JOHNNY_API_TOKEN --api_url $JOHNNY_API_URL --project \"billing-service-cli\" --save-results --create-project --stage build --localization ru --format \"coloredtable,sarif>>report.sarif\" --ignore .git",
8888
output: [
8989
"Analysis ticket result_id: 8ce150e2-2ef4-45db-81d7-3c32ef407b07",
9090
"- Wait analysis result... [7s]",
@@ -141,10 +141,10 @@
141141
},
142142
{
143143
type: "command",
144-
command: "ls -1 bom.json junit.xml",
144+
command: "ls -1 bom.json report.sarif",
145145
output: [
146146
"bom.json",
147-
"junit.xml"
147+
"report.sarif"
148148
],
149149
outputDelay: 24
150150
},
@@ -159,7 +159,7 @@
159159
{
160160
type: "card",
161161
title: "Результаты готовы",
162-
body: "В этом примере агент Johnny сохранил SBOM, подготовил `junit.xml` и вернул код `1`, потому что политики нашли проблемы, требующие внимания."
162+
body: "В этом примере агент Johnny сохранил SBOM, подготовил `report.sarif` и вернул код `1`, потому что политики нашли проблемы, требующие внимания."
163163
}
164164
]
165165
};

docs/tutorials/basic-security-policies.en.md

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@ title: "Configure a basic set of security policies"
66

77
## Context
88

9-
After the first analysis in CodeScoring, you usually get a lot of information about dependencies and vulnerabilities, but without policies it is still just a list of findings. A basic set of rules helps separate the most important cases from the general flow of results and makes it easier to understand what deserves attention first.
9+
After the first analysis in CodeScoring.SCA, you usually get a lot of information about dependencies and vulnerabilities. A basic set of rules helps separate the most important cases from the general flow of results and makes it easier to understand what deserves attention first.
1010

11-
For a practical starting point, three rules at the `source` stage are enough: separately track vulnerabilities that already have a public exploit and a fix, highlight critical direct dependencies, and surface components that were published less than a month ago. This reduces risk quickly without turning the first rollout into a noisy setup or introducing hard blocks too early.
11+
For VCS projects at the `source` stage, a practical starting point is to create three separate policies:
12+
13+
- one for vulnerabilities that already have a public exploit and a fix;
14+
- one for direct dependencies with critical vulnerabilities;
15+
- one for components that were published less than a month ago.
16+
17+
These rules help set priorities faster without overwhelming the team with noisy alerts or introducing hard blocks too early.
1218

1319
!!! tip "Why this starter set works"
14-
[OpenSSF](https://best.openssf.org/Concise-Guide-for-Evaluating-Open-Source-Software.html) recommends prioritizing dependency risk instead of treating all findings as equal, and [OWASP](https://owasp.org/www-community/Component_Analysis) notes that direct dependencies are usually the most practical place to start remediation. CodeScoring research also shows that a useful starter set separates three different risk classes: urgent vulnerabilities that are already exploited and already fixable, critical direct dependencies as the most manageable part of the graph, and very young components that have not yet had enough time to accumulate trust signals from the ecosystem.
20+
[OpenSSF](https://best.openssf.org/Concise-Guide-for-Evaluating-Open-Source-Software.html) recommends prioritizing dependency risk instead of treating all findings as equal, and [OWASP](https://owasp.org/www-community/Component_Analysis) notes that direct dependencies are usually the most practical place to start remediation. CodeScoring research also shows that a useful starter set separates three different queues: vulnerabilities that are already exploited and already fixable, direct dependencies with critical vulnerabilities, and very young components that still need additional verification before wider use.
1521

1622
## What you will get
1723

18-
By the end of this scenario, CodeScoring will contain three active policies:
24+
By the end of this scenario, CodeScoring will contain three active policies for VCS projects at the `source` stage:
1925

2026
- a policy for vulnerabilities with a public exploit and a fixed version at the `source` stage;
21-
- a policy for critical direct dependencies at the `source` stage;
27+
- a policy for direct dependencies with critical vulnerabilities at the `source` stage;
2228
- a policy for very young components at the `source` stage.
2329

2430
After a repeated SCA run, you will be able to see which of these rules already produce useful alerts.
@@ -27,7 +33,7 @@ After a repeated SCA run, you will be able to see which of these rules already p
2733

2834
Before you start, make sure you have:
2935

30-
- access to CodeScoring with permissions to work in `Settings -> Policies`;
36+
- access to CodeScoring with the `Administrator` or `Security Manager` role;
3137
- at least one connected VCS project that can be rescanned with SCA;
3238
- a clear decision on whether this starter set should be applied to all projects immediately or only to a pilot project first.
3339

@@ -40,7 +46,7 @@ This rule helps surface not just any vulnerabilities, but the ones that are alre
4046
1. Go to `Settings -> Policies`.
4147
2. Click **Create**.
4248
3. Fill in the policy context:
43-
- **Name** — for example, `Source: exploit + fix`;
49+
- **Name** — for example, `Exploit and fix`;
4450
- **Stages**`source`;
4551
- **Level** — choose the severity level that fits your process;
4652
- **Is Active** — enable it;
@@ -51,35 +57,31 @@ This rule helps surface not just any vulnerabilities, but the ones that are alre
5157
- **Vulnerability has fixed version**.
5258
6. Click **Create**.
5359

54-
```html
55-
<!-- VIDEO REQUIRED: In CodeScoring, open Settings -> Policies, create a new policy, set its name, choose the source stage, enable Is Active, keep Blocker disabled, add the Vulnerability has exploit and Vulnerability has fixed version conditions, and save the policy. -->
56-
<iframe src="https://minio.example.com/path/to/video" style="aspect-ratio: 16 / 9; width: 100%" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0" allowfullscreen></iframe>
57-
```
60+
!!! note "Why Blocker should stay off at first"
61+
For a starter set it is more useful to see what the rule really catches and how noisy it is before turning it into an enforcement point. That makes it easier to shape the process without stopping scans or everyday work too early.
5862

59-
After that, the platform will have a rule that raises alerts for the most actionable vulnerability cases in VCS projects.
63+
After that, the platform will have a rule that creates alerts for the most actionable vulnerability cases in VCS projects.
6064

61-
### Step 2. Create a policy for critical direct dependencies
65+
### Step 2. Create a policy for direct dependencies with critical vulnerabilities
6266

6367
Starting with direct dependencies is practical because the list is usually smaller and easier to manage than the full dependency graph. These findings are often easier to assign and fix quickly.
6468

6569
1. Open the policy created in the previous step.
6670
2. Click **Create a copy**.
6771
3. Change the main fields:
68-
- **Name** — for example, `Source: direct critical dependency`;
72+
- **Name** — for example, `Direct dependency with a critical vulnerability`;
6973
- **Stages** — keep `source`;
7074
- **Is Active** — keep it enabled;
7175
- **Blocker** — keep it disabled.
72-
4. Remove the previous conditions and create a new group with the **AND** expression:
73-
- **Relation** = `direct`;
76+
4. Remove the previous conditions and create a top-level group with the **AND** expression:
77+
- **Relation** = `direct`.
78+
5. Inside that group, create a nested group with the **OR** expression and add:
79+
- **CVSS2 Severity** = `critical`;
80+
- **CVSS3 Severity** = `critical`;
7481
- **CVSS4 Severity** = `critical`.
75-
5. Click **Create**.
76-
77-
```html
78-
<!-- VIDEO REQUIRED: On the existing policy page, click Create a copy, change the name, keep the source stage, replace the conditions with Relation = direct and CVSS4 Severity = critical, and save the new policy. -->
79-
<iframe src="https://minio.example.com/path/to/video" style="aspect-ratio: 16 / 9; width: 100%" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0" allowfullscreen></iframe>
80-
```
82+
6. Click **Create**.
8183

82-
At this point, the starter set also includes a separate rule for severe issues in dependencies that the team controls directly.
84+
At this point, the starter set also includes a separate rule for direct dependencies that have at least one critical severity signal in one of the CVSS versions.
8385

8486
### Step 3. Create an informational policy for very young components
8587

@@ -90,21 +92,20 @@ This rule helps isolate dependencies that were published very recently. For a st
9092

9193
1. In `Settings -> Policies`, click **Create** again.
9294
2. Fill in the policy context:
93-
- **Name** — for example, `Source: young component`;
95+
- **Name** — for example, `Component younger than 30 days`;
9496
- **Stages**`source`;
9597
- **Is Active** — enable it;
9698
- **Blocker** — keep it disabled.
9799
3. If you want a gradual rollout, specify a pilot project in **Projects** if needed.
98-
4. In the conditions block, create one group with the **AND** expression and add:
99-
- **Dependency age (days)** < `30`.
100+
4. In the conditions block, create a top-level group with the **OR** expression:
101+
- in the first **AND** group, add **Dependency age (days)** < `30`;
102+
- in the second **AND** group, optionally add a condition for dependencies where age information is missing.
100103
5. Click **Create**.
101104

102105
If you want to refine the threshold later or extend the rule, the full list of supported criteria is described in [policy setup](/on-premise/how-to/policies.en).
103106

104-
```html
105-
<!-- VIDEO REQUIRED: In CodeScoring, create a new policy, choose the source stage, enable Is Active, keep Blocker disabled, optionally specify a project, add the Dependency age (days) < 30 condition, and save the policy. -->
106-
<iframe src="https://minio.example.com/path/to/video" style="aspect-ratio: 16 / 9; width: 100%" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0" allowfullscreen></iframe>
107-
```
107+
!!! note "What to keep in mind about dependency age"
108+
The platform determines the dependency publication date for supported ecosystems. Before rolling this rule out to all projects, it is better to validate it on a pilot project first and confirm that the criterion behaves as expected for your packages and sources.
108109

109110
After that, very recently published components start appearing in a separate alert stream, making it easier to review them before they spread widely across projects.
110111

@@ -118,14 +119,9 @@ Policies start working during analysis, so after configuring them it is worth ve
118119
4. Open the `Policy alerts` section.
119120
5. Check whether new alerts appear for:
120121
- vulnerabilities with an exploit and a fix;
121-
- critical direct dependencies;
122+
- direct dependencies with critical vulnerabilities;
122123
- very young components.
123124

124-
```html
125-
<!-- VIDEO REQUIRED: On the project page, start an SCA run, wait until it finishes, then open Policy alerts and show alerts triggered by the new source-stage policies. -->
126-
<iframe src="https://minio.example.com/path/to/video" style="aspect-ratio: 16 / 9; width: 100%" allow="autoplay; encrypted-media; fullscreen; picture-in-picture; screen-wake-lock;" frameborder="0" allowfullscreen></iframe>
127-
```
128-
129125
At this point, the starter set is already in use: all three rules produce alerts after analysis and separate the most important cases into different review tracks.
130126

131127
## Result

0 commit comments

Comments
 (0)