Сканирование и отчеты Semgrep и Trivy
Сканирование и формирование отчетов Semgrep с помощью CLI
Отчет в формате JSON, загружаемый в TRON.ASOC, должен быть сохранен в кодировке в UTF-8 без BOM.
Вы можете запускать следующие сканирования с помощью Semgrep:
1. Сканирование с автоматическим выбором правил (--config=auto). Этот тип сканирования включает базовые правила для безопасности (security), ошибок (bugs) и стиля кода (correctness).
Чтобы запустить сканирование и формирование отчета, выполните команду:
semgrep scan --config=auto --metrics=on --json "C:\juice-shop-master" > auto_results.json

2. Сканирование с помощью специализированного набора для аудита безопасности (--config=p/security-audit). Этот тип сканирования включает только критические правила, связанные с уязвимостями (SQL-инъекции, XSS, десериализация, небезопасные криптографические алгоритмы, утечки чувствительных данных (API-ключи, пароли)).
Чтобы запустить сканирование и формирование отчета, выполните команду:
semgrep scan --config=p/security-audit --metrics=off --json "C:\juice-shop-master" > secaud_results.json

3. Сканирование качества кода и читаемости (--config=p/code-review). Этот тип сканирования включает антипаттерны (дублирование, избыточность), сложные условия/циклы, неочевидные ошибки.
Чтобы запустить сканирование и формирование отчета, выполните команду:
semgrep scan --config=p/code-review --metrics=off --json "C:\juice-shop-master" > codereview_results.json
Ниже представлен пример отчета о Semgrep-сканировании.
{
"errors": [
],
"results": [
{
"check_id": "generic.secrets.security.detected-twitter-oauth.detected-twitter-oauth",
"end": {
"col": 38431,
"line": 1,
"offset": 38430
},
"extra": {
"engine_kind": "OSS",
"fingerprint": "fc255e575f2b938f11bf70bb737def0a1aa3ea044296972c9c6ff5b66b0d931064731b30406fc873b300c2bcf73cb66797513b709991e334fd355599d60d53d8_0",
"is_ignored": false,
"lines": "<![A-Z]>",
"message": "Twitter OAuth detected",
"metadata": {
"category": "security",
"confidence": "LOW",
"cwe": [
"CWE-798: Use of Hard-coded Credentials"
],
"cwe2021-top25": true,
"cwe2022-top25": true,
"impact": "MEDIUM",
"license": "Commons Clause License Condition v1.0[LGPL-2.1-only]",
"likelihood": "LOW",
"owasp": [
"A07:2021 - Identification and Authentication Failures"
],
"references": [
"https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures"
],
"semgrep.dev": {
"rule": {
"origin": "community",
"rule_id": "BYUNq8",
"url": "https://semgrep.dev/playground/r/A8TRG6/generic.secrets.security.detected-twitter-oauth.detected-twitter-oauth",
"version_id": "A8TRG6"
}
},
"shortlink": "https://sg.run/Lwb7",
"source": "https://semgrep.dev/r/generic.secrets.security.detected-twitter-oauth.detected-twitter-oauth",
"source-rule-url": "https://github.com/dxa4481/truffleHogRegexes/blob/master/truffleHogRegexes/regexes.json",
"subcategory": [
"audit"
],
"technology": [
"secrets",
"twitter"
],
"vulnerability_class": [
"Hard-coded Secrets"
]
},
"metavars": {},
"severity": "ERROR"
},
"path": "/somedir/somefile.js",
"start": {
"col": 37650,
"line": 1,
"offset": 37649
}
}
],
"version": "1.33.2"
}
Сканирование и формирование отчетов отчетов Trivy с помощью CLI
С помощью инструмента Trivy вы можете выполнять следующие сканирования:
- сканирование уязвимостей (
--scanners vuln); - сканирование чувствительных данных (
secret); - сканирование конфигураций (
misconfig); - сканирование лицензий (
license).
Сканирование уязвимостей
Чтобы запустить сканирование уязвимостей, выполните команду:
trivy image --format json --scanners vuln --output "$(pwd)/vuln_malware_qa.json" pollysnegir/malware-qa:all-inclusive

Сканирование чувствительных данных и конфигураций
Чтобы запустить сканирование чувствительных данных и конфигураций, выполните команду:
trivy image --format json --scanners secret,misconfig --output "$(pwd)/secret_misconfig_malware-qa.json" pollysnegir/malware-qa:all-inclusive

Комплексное сканирование
Чтобы запустить комплексное сканирование, выполните команду:
trivy image --format json --scanners vuln,secret,misconfig --output "$(pwd)/malware_qa.json" pollysnegir/malware-qa:all-inclusive

Формирование SBOM-отчетов
Чтобы сформировать SBOM-отчеты по результатам сканирования, выполните команду:
trivy image --format cyclonedx --output "$(pwd)/sbom_malware_qa.json" pollysnegir/malware-qa:all-inclusive

Ниже представлен пример SBOM-отчета о сканировании.
{
"SchemaVersion": 2,
"ArtifactName": "sbom.json",
"ArtifactType": "cyclonedx",
"Metadata": {
"ImageConfig": {
"architecture": "",
"created": "0001-01-01T00:00:00Z",
"os": "",
"rootfs": {
"type": "",
"diff_ids": null
},
"config": {}
}
},
"Results": [
{
"Target": "requirements.txt",
"Class": "lang-pkgs",
"Type": "pip",
"Vulnerabilities": [
{
"VulnerabilityID": "CVE-2013-7445",
"PkgID": "linux-libc-dev@6.1.55-1",
"PkgName": "linux-libc-dev",
"InstalledVersion": "6.1.55-1",
"Status": "will_not_fix",
"Layer": {
"Digest": "sha256:938cae48a646a95127345a544f75f4e0b83f5fa612858e524aedea6981af4a1e",
"DiffID": "sha256:dfe25755ef07309fcb76dd47b2bb21e6dd92adedce8d9aa7f5bbceaf7fc726c9"
},
"SeveritySource": "nvd",
"PrimaryURL": "https://avd.aquasec.com/nvd/cve-2013-7445",
"DataSource": {
"ID": "debian",
"Name": "Debian Security Tracker",
"URL": "https://salsa.debian.org/security-tracker-team/security-tracker"
},
"Title": "kernel: memory exhaustion via crafted Graphics Execution Manager (GEM) objects",
"Description": "The Direct Rendering Manager (DRM) subsystem in the Linux kernel through 4.x mishandles requests for Graphics Execution Manager (GEM) objects, which allows context-dependent attackers to cause a denial of service (memory consumption) via an application that processes graphics data, as demonstrated by JavaScript code that creates many CANVAS elements for rendering by Chrome or Firefox.",
"Severity": "HIGH",
"CweIDs": [
"CWE-399"
],
"VendorSeverity": {
"nvd": 3,
"redhat": 2,
"ubuntu": 2
},
"CVSS": {
"nvd": {
"V2Vector": "AV:N/AC:L/Au:N/C:N/I:N/A:C",
"V2Score": 7.8
},
"redhat": {
"V2Vector": "AV:N/AC:M/Au:N/C:N/I:N/A:P",
"V2Score": 4.3
}
},
"References": [
"https://access.redhat.com/security/cve/CVE-2013-7445",
"https://bugzilla.kernel.org/show_bug.cgi?id=60533",
"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-7445",
"https://lists.freedesktop.org/archives/dri-devel/2015-September/089778.html (potential start towards fixing)",
"https://nvd.nist.gov/vuln/detail/CVE-2013-7445",
"https://www.cve.org/CVERecord?id=CVE-2013-7445"
],
"PublishedDate": "2015-10-16T01:59:00.12Z",
"LastModifiedDate": "2015-10-16T16:22:25.587Z"
}
]
}
]
}