Obserwatorium bezpieczeństwa wydań · v0.7.2

Sprawdź, co naprawdę mówi stan bezpieczeństwa Twojej instancji Git.

VersionSec sprawdza jedną instancję Gitea lub Forgejo, która należy do Ciebie albo do której masz wyraźną autoryzację. Tylko czyta i niczego nie zmienia. Przegląd konfiguracji i przegląd runnera działają całkowicie offline, bez żadnych żądań sieciowych.

  • tylko odczyt
  • jeden autoryzowany cel
  • deterministycznie
  • Gitea i Forgejo
  • MD / JSON / SARIF

Apache-2.0 - bez konta, bez hostowanej warstwy sterującej, bez telemetrii.

versionsecread-only
$ versionsec scan \
  --url https://git.example.com \
  --authorized --product gitea \
  --format md,json,sarif

FG-VER          PASS   1.27.3 confirmed
FG-CVE-27771    PASS   fixed in this version
FG-ANON         WARN   anonymous API reachable
FG-REG          PASS   OCI root requires auth
FG-SIGNIN       WARN   repo browser is public

# 22 stable IDs · md + json + sarif written
aktualne wydanie
v0.7.2
kontrole
22 stabilnych ID
testy
433 przechodzi
proweniencja
podpisana atestacja
licencja
Apache-2.0

Pytania o stan, na które zwykle odpowiada się z pamięci

Większość własnych instancji konfiguruje się raz, a potem ufa im bezterminowo. VersionSec zamienia cztery powracające pytania w dowody, które można zachować, porównać i przekazać audytorowi.

Czy działająca wersja faktycznie jest podatna?

Stan wersji jest oceniany względem nazwanych biuletynów. Nieznana wersja jest raportowana jako nieznana - nigdy po cichu jako zaliczona.

Co widzi anonimowy odwiedzający?

Odpytywany jest zamknięty zestaw dozwolonych ścieżek, wyłącznie metodą GET, a raportowany jest dokładnie zaobserwowany status.

Czy konfiguracja zgadza się z tym, co zakładamy?

Zanonimizowany zrzut konfiguracji jest sprawdzany całkowicie offline, więc sama instancja nie jest dotykana.

Co zadanie CI na runnerze może zrobić hostowi?

Tryb uprzywilejowany, ekspozycja gniazda Dockera, montowania hosta, tryb sieci i czas życia poświadczeń są oceniane z zadeklarowanego zrzutu.

Cztery tryby przeglądu, jeden deterministyczny raport

Każdy tryb daje tę samą strukturę raportu, więc wyniki pozostają porównywalne w czasie.

Przegląd stanu na żywo

Jeden cel na uruchomienie, wyłącznie żądania GET wobec zamkniętej listy ścieżek. Bez zapisu, bez zmiany stanu, bez wyszukiwania innych hostów.

  • FG-VER
  • FG-ANON
  • FG-HTTP
  • FG-REG
  • FG-SIGNIN

Stan wersji wobec biuletynów

Nazwane biuletyny oceniane względem wersji potwierdzonej przez operatora: podatna, naprawiona albo nieznana - powiedziane wprost.

  • FG-CVE-27771
  • FG-CVE-78433
  • FG-FJ-TEMPLATE-20260910

Offline'owy przegląd konfiguracji

Sprawdza dostarczony przez Ciebie zanonimizowany zrzut. Zero żądań sieciowych, więc jest bezpieczny także tam, gdzie skan na żywo jest niedozwolony.

  • FG-CONFIG-REGISTRATION
  • FG-CONFIG-SIGNIN
  • FG-CONFIG-PRIVACY
  • FG-CONFIG-MFA

Offline'owy przegląd runnera Actions

Sprawdza jeden zadeklarowany zrzut runnera wobec zamkniętego schematu. Istotność wynika z zadeklarowanego zaufania do obciążeń, a nie z samej wersji.

  • FG-RUNNER-PRIVILEGED
  • FG-RUNNER-DOCKER
  • FG-RUNNER-VOLUMES
  • FG-RUNNER-NETWORK

Wersje kwalifikowane, a nie pełne wsparcie

Gitea i Forgejo mają osobne providery z własnymi kontrolami. To dokładnie te wersje, wobec których wydanie jest testowane - nie obietnica dla każdej wersji w obu liniach.

Provider
Kwalifikowane wersje serwera
Kwalifikowane wersje runnera
Gitea
1.26.41.27.3
3.4.2gitea-runner
Forgejo
15.0.816.0.4
13.0.013.1.0forgejo-runner

Inne wersje zwykle działają, ale poza tymi celami nic nie jest przedstawiane jako zweryfikowane.

Jak przebiega uruchomienie

1

Deklaracja celu

Podajesz jedną instancję i jej produkt oraz potwierdzasz, że masz autoryzację do jej sprawdzenia.

2

Ograniczone zbieranie

Odpytywane są tylko dozwolone ścieżki, wyłącznie GET. Tryby offline czytają plik i nie wysyłają nic.

3

Deterministyczna ocena

Każda kontrola zwraca PASS, FAIL, WARN, NOT_APPLICABLE albo UNKNOWN. Brak dowodu nigdy nie jest zaliczeniem.

4

Raport i eksport

Markdown dla ludzi, JSON dla pipeline'ów, SARIF 2.1.0 dla narzędzi code-scanning. Wszędzie stabilne ID.

Dowody i proweniencja

Opublikowane artefakty to dokładnie te, które zbudowało CI. Ich pochodzenie sprawdzisz jednym poleceniem, a zmodyfikowana kopia zostaje odrzucona.

Zweryfikuj pobrany plik
$ gh attestation verify \
  versionsec-0.7.2-py3-none-any.whl \
  --repo gexiro-global/versionsec

# wheel  sha256
ea7d40357d808ed490113a62b6dae7fe
4af7e655b61c687c77689b4041828f5d
# sdist  sha256
fcbacb335a17d43436c819507fdb968a
12ff0754644ea6ee7e0e73fc5221b79d

Podpisana proweniencja builda

Oba artefakty mają atestację Sigstore wygenerowaną przez własny workflow CI projektu.

Opublikowane sumy kontrolne

SHA-256 dla wheel i sdist są dołączone do wydania i zgadzają się z atestowanymi obiektami.

Testy kontraktu wydania

Każde udokumentowane polecenie jest uruchamiane jako realny podproces wobec zainstalowanych skryptów.

Stabilne identyfikatory

ID znalezisk i identyfikatory schematu nie zmieniają się między wydaniami z powodów brandingowych.

Formaty wyjścia

Markdown

Czytelny raport z pełną tabelą znalezisk, dla ludzi i do załączania w zgłoszeniach.

JSON

Stabilny dokument maszynowy z wersjonowanym identyfikatorem schematu dla pipeline'ów.

SARIF 2.1.0

Standardowy format wymiany analizy statycznej, dla dashboardów code-scanning i adnotacji CI.

VersionSec dawniej nazywał się ForgeGuard

Wydania do 0.6.0 włącznie były publikowane jako ForgeGuard i pozostają dostępne oraz niezmienione. Od 0.7.0 kanoniczna nazwa to VersionSec.

Dotychczasowi użytkownicy nic nie tracą: polecenie forgeguard i import forgeguard działają dalej przez warstwę zgodności wskazującą na tę samą implementację, a FORGEGUARD_TOKEN jest nadal czytany.

Przewodnik migracji

Dlaczego identyfikatory FG-* zostają

ID znalezisk takie jak FG-VER i identyfikatory schematu takie jak forgeguard.assessment.v1 to tożsamość kontraktu, nie branding. Zmiana nazw zepsułaby istniejące procesy raportowania, listy wyjątków i baseline'y SARIF - dlatego pozostają celowo bez zmian.

Errata do 0.7.0

W 0.7.0 brakowało przełącznika wersji, więc versionsec --version kończyło się błędem nieznanej opcji. Skanowanie, przegląd konfiguracji i przegląd runnera działały poprawnie. 0.7.1 to naprawia i zastępuje 0.7.0.

Instalacja

PyPI: Opublikowane na PyPI i instalowalne bezpośrednio. Mostek zgodności <code>forgeguard==0.7.2</code> instaluje tę samą implementację dla dotychczasowych użytkowników.
instalacja z pypi v0.7.2
$ python -m pip install versionsec==0.7.2

$ versionsec --version
VersionSec 0.7.2

# existing ForgeGuard users
$ python -m pip install forgeguard==0.7.2
pierwsze uruchomienie
$ versionsec providers
$ versionsec checks
$ versionsec config review --snapshot snap.json
$ versionsec runner review --snapshot runner.json

Czego VersionSec nie robi

Użycie jest ograniczone do instancji, która należy do Ciebie albo do której masz wyraźną autoryzację. Podstawa prawna pozostaje odpowiedzialnością operatora.

Żadnej eksploatacji podatności, żadnych payloadów, żadnych żądań zmieniających stan.
Żadnego wyszukiwania celów ani skanowania masowego - jeden zadeklarowany cel na uruchomienie.
Żadnego twierdzenia, że instancja nie została skompromitowana, i żadnego ustalania kompromitacji.
Żadnej certyfikacji bezpieczeństwa ani zgodności.

Pytania, które naprawdę padają

Czy Gitea i Forgejo są wspierane tak samo?
To osobne providery z własnymi kontrolami i własnymi wersjami kwalifikowanymi. Żaden nie jest nakładką na drugi.
Czy potrzebny jest dostęp sieciowy?
Do przeglądu na żywo tak, do jednego zadeklarowanego celu. Przegląd konfiguracji i runnera nie wysyłają żadnych żądań.
Czy potrzebny jest token administratora?
Nie. Przegląd na żywo jest z założenia anonimowy; token jest opcjonalny i używany tylko wtedy, gdy operator sam go poda.
Czy coś zmieni na mojej instancji?
Nie. Przegląd na żywo wysyła wyłącznie żądania GET wobec listy dozwolonych ścieżek.
Co, jeśli kontroli nie da się ocenić?
Jest raportowana jako UNKNOWN albo NOT_APPLICABLE. Brak dowodu nigdy nie jest zaliczeniem.
Czy wersja spoza listy kwalifikowanej jest niewspierana?
Zwykle działa, ale testowane są tylko wymienione wersje - i tylko one są przedstawiane jako zweryfikowane.
Używam ForgeGuard. Co się zepsuje?
Nic. Polecenie, ścieżka importu, zmienna środowiskowa i wszystkie ID FG-* działają dalej.
Jaka licencja?
Apache-2.0. Pełne źródła, artefakty wydania i zestaw testów są publiczne.

Kontakt

W sprawie narzędzia, integracji albo ograniczonego zakresowo przeglądu hardeningu. Wybierz temat, żeby wiadomość trafiła we właściwe miejsce.

Zgłaszasz podatność w samym VersionSec? Użyj polityki bezpieczeństwa w repozytorium, żeby zgłoszenie poszło udokumentowaną ścieżką. Polityka bezpieczeństwa.