# Trivy FS

### Overview

Trivy FS (режим `trivy fs`) используется в TRAIO для сканирования репозитория/файловой системы на уязвимости (CVE) в зависимостях. Обычно Trivy анализирует lock-файлы и манифесты зависимостей

### Supported Stack

* `package-lock.json`
* `npm-shrinkwrap.json`
* `yarn.lock`
* `pnpm-lock.yaml`
* `bun.lockb`
* `requirements.txt`
* `Pipfile.lock`
* `poetry.lock`
* `Gemfile.lock`
* `gems.locked`
* `pom.xml`
* `build.gradle`
* `build.gradle.kts`
* `gradle.lockfile`
* `go.mod`
* `go.sum`
* `Cargo.lock`
* `composer.lock`
* `packages.lock.json`
* `packages.config`
* `Package.resolved`
* `Podfile.lock`
* `pubspec.lock`
* `mix.lock`
* `conan.lock`

### Requirements

* В **Sequences** перед этим инструментом должен быть добавлен job **Code Downloader**

### How it works

Сканер использует официальный docker-образ:

* `aquasec/trivy:latest`

Пример команды:

```sh
if [ "$TRIVY_MODE" = "image" ]; then
  trivy image --format json --output "/data/$REPORT_FILE_NAME" "$DOCKER_IMAGE" || true
elif [ "$TRIVY_MODE" = "iac" ]; then
  trivy config --format json --output "/data/$REPORT_FILE_NAME" ./ || true
else
  trivy fs --format json --output "/data/$REPORT_FILE_NAME" ./ || true
fi
echo "Trivy report saved to /data/$REPORT_FILE_NAME"
cat "/data/$REPORT_FILE_NAME"
```

### Variables

| Переменная         | Пример          | Обязательная | Описание                                             |
| ------------------ | --------------- | ------------ | ---------------------------------------------------- |
| REPORT\_FILE\_NAME | `trivy-fs.json` | Да           | Имя файла отчёта, который TRAIO забирает из `/data`. |
| SCAN\_TYPE         | `Trivy Scan`    | Да           | Тип сканирования для парсинга в TRAIO.               |
| TRIVY\_MODE        | `fs`            | Да           | Режим запуска.                                       |

### **Offline mode:**

**Trivy DB-Included - Need to Choose Mode** — job для запуска Trivy в полностью оффлайн контуре на базе образа `registry.gitlab.com/traio-group/tools/trivy-offline:0.68.2`, где базы (Trivy DB и Java DB) уже предзагружены в образ.&#x20;

В этом job нужно выбрать режим сканирования через TRIVY\_MODE: fs (сканирование файловой системы/репозитория), iac (сканирование IaC через trivy config) или image (сканирование контейнерного образа через trivy image). Если TRIVY\_MODE не задан, стандартно используется режим fs.

### Links

* Trivy (Filesystem scanning): <https://aquasecurity.github.io/trivy/latest/docs/target/filesystem/>
* Trivy docs: <https://aquasecurity.github.io/trivy/>
