Skip to content

Some fixes#598

Merged
Nefrit0n merged 20 commits into
mainfrom
some_fixes
Jun 21, 2026
Merged

Some fixes#598
Nefrit0n merged 20 commits into
mainfrom
some_fixes

Conversation

@Nefrit0n

Copy link
Copy Markdown
Owner

No description provided.

Nefrit0n and others added 20 commits June 17, 2026 11:07
…inference (#593)

* feat(import): универсальный Generic JSON формат с гибкими типами и авто-выводом kind

- Убрано требование project_id из CanParse: он может приходить из query-параметра
- Добавлены flexSeverity/flexConfidence/flexStatus с UnmarshalJSON, принимающими
  как числа (0-N с клампингом), так и строки (critical/high/medium/low/open/fixed/…)
- Добавлен flexCWEIDs: принимает []int и []string ("CWE-79", "89") в любом сочетании
- Добавлено поле Status в genericFinding (ранее всегда хардкодился StatusOpen)
- Добавлен per-finding source_type для переопределения конвертного значения
- Добавлена функция inferGenericKind: выводит kind по набору полей когда не задан явно
  (порядок: secrets → iac → dast → sca → sast → other)
- Добавлены smoke-тесты: string/int severity, string status/confidence, cwe_ids mixed,
  per-finding source_type, CanParse без project_id, регрессия на SARIF/Trivy,
  все правила inferGenericKind включая "явный kind побеждает эвристику"
- Обновлён openapi.yaml: расширены описания /api/v1/import, добавлены схемы
  GenericImport и GenericFinding с документацией всех полей и допустимых значений

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdATyy4Y4nma1qwGADedFY

* docs(import): документация универсального Generic JSON формата импорта

Новый файл docs/import-formats.md содержит:
- Обзор всех поддерживаемых форматов с признаками автодетекта
- Описание endpoint, авторизации и передачи project_id
- Таблицу полей Generic-конверта и finding с делением на обязательные/рекомендуемые/опциональные
- Таблицы допустимых значений severity/confidence/status/kind (числовые и строковые синонимы)
- Документацию эвристики авто-вывода kind (порядок проверок)
- Эталонный JSON со всеми полями и минимальный валидный пример
- Примеры для каждого kind (sca/sast/dast/iac/secrets)
- Описание механизма дедупликации по fingerprint
- Раздел частых проблем с причинами и решениями

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdATyy4Y4nma1qwGADedFY

---------

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Signed-off-by: Viktor Kalistratov <viktor.calistratov27@gmail.com>
Параметр `sources` приходил с фронтенда, но бэкенд его игнорировал:
не было ни парсинга в findings handler, ни поля в FindingsFilter,
ни условия в WHERE. Добавлен SourceTypes в фильтр, условие
`f.source_type = ANY(...)` в buildBaseWhere и парсинг query-параметра.
Фасет by_source теперь исключает собственную ось при подсчёте.


Claude-Session: https://claude.ai/code/session_013UgZM7JCkw3n4v4yWUwBV6

Co-authored-by: Claude <noreply@anthropic.com>
Constrain the settings form to a centered max-width container, group each
section into bordered panels, strengthen labels and visibility toggle, and
tidy the save footer. Visual-only — form state, handlers and API unchanged.


Claude-Session: https://claude.ai/code/session_01PvW3zCqsEw1rCgHSxp6o7m

Co-authored-by: Claude <noreply@anthropic.com>
* fix(ci): устранить замечания линтера и уязвимости Trivy

Линтер (golangci-lint):
- projects.go: убрать избыточный if-return в UnmarshalJSON (revive)
- generic.go: переименовать параметры min/max в lo/hi, чтобы не
  переопределять встроенные функции (revive redefines-builtin-id)
- generic_test.go: убрать лишнее преобразование int() (unconvert)

Trivy (CRITICAL/HIGH в backend-образе):
- обновить golang.org/x/net до v0.55.0, x/crypto до v0.52.0,
  x/sys до v0.45.0 (плюс сопутствующие x/text, x/sync)
- зафиксировать базовый образ сборки golang:1.25.11-bookworm,
  закрывающий уязвимости стандартной библиотеки Go

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VgkiqgiJBPVaLMgAmraHEN

* fix(ci): перейти на trivy 0.71.2, починить hadolint и CVE chi

Trivy:
- заменить aquasecurity/trivy-action на «голый» trivy v0.71.2,
  устанавливаемый через официальный install.sh
- разделить отчёт и гейт: первый прогон с --exit-code 0 гарантированно
  генерирует и грузит SARIF в Security tab (даже при найденных CVE),
  отдельный прогон с --exit-code 1 валит билд на CRITICAL/HIGH.
  Раньше единый шаг падал до чистой загрузки, из-за чего инструмент
  отображался в Security tab как упавший.

Hadolint:
- backend/Dockerfile: вынести healthcheck в cmd/healthcheck вместо
  heredoc — heredoc ломал парсер hadolint (DL1000)
- объединить сборку бинарников в один RUN (DL3059)
- frontend/Dockerfile: вынести конфиги nginx в frontend/nginx/*.conf
  и подключить через COPY вместо heredoc-ов (DL3059)
- .hadolint.yaml: добавить gcr.io в trustedRegistries для distroless
  runtime-образа (DL3026)

Security:
- обновить github.com/go-chi/chi/v5 до v5.2.4 (CVE-2025-69725,
  Open Redirect)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VgkiqgiJBPVaLMgAmraHEN

---------

Co-authored-by: Claude <noreply@anthropic.com>
@Nefrit0n Nefrit0n merged commit be6130f into main Jun 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant