Historia zmian
Kanonicznym źródłem jest
CHANGELOG.md
samej enodia — ta strona go odzwierciedla, jest synchronizowana wraz
z resztą witryny przy każdym wydaniu i zawiera linki do pozostałych
części dokumentacji tam, gdzie zmiana wpływa na faktyczny sposób
konfiguracji. Tagi mają postać MAJOR.MINOR.PATCH+BUILD, bez prefiksu
v; +BUILD to metadane kompilacji semver, używane wyłącznie przy
ponownej kompilacji bez zmian funkcjonalnych, a nie do omijania
rzeczywistego podbicia wersji.
2.0.0+0 — 2026-09-23
Dział zatytułowany „2.0.0+0 — 2026-09-23”Wersja główna z powodu dużej funkcji, a nie niezgodności: korelacja CVE
to pierwsza oś oceny, która nie dotyczy cyklu życia. Istniejące pliki
enodia.yaml, settings.yaml i inwentarze działają bez zmian — nowy
blok cve: jest opcjonalny, a konfiguracja bez niego zachowuje się
dokładnie tak jak w 1.2.
- Korelacja CVE z dwiema lokalnymi bazami danych, BDU
FSTEC i NIST NVD. enodia nigdy ich nie pobiera:
vulxml.zipz BDU i roczne plikinvdcve-2.0-<year>.json.gzz NVD pobiera się samodzielnie i wskazuje wcve.bdu.path/cve.nvd.pathwenodia.yaml(plik, a w przypadku NVD — katalog plików). Każde źródło działa samodzielnie. Oba są parsowane strumieniowo i buforowane: pierwsze uruchomienie po zmianie bazy danych trwa około minuty dla całego NVD i BDU, każde kolejne — poniżej sekundy. Zobacz, jak je pobrać, w tym dodatkowy certyfikat CA potrzebny dla bdu.fstec.ru. - 52 dopasowywane sondy (53 nazwy produktów w upstream —
sshliczy się zarówno jako OpenSSH, jak i Dropbear), czyli każda sonda z użytecznymi danymi w którymkolwiek źródle. Celowo niedopasowywane, każde z podanego powodu: dystrybucje Linuksa ogólnego przeznaczenia (ich CVE dotyczą pakietów), systemy BSD i Solaris, ESXi/vCenter i Synology DSM (poziomy poprawek i sufiksy kompilacji, których mechanizm dopasowujący jeszcze nie odczytuje) — zobacz, które produkty są dopasowywane, oraz strony poszczególnych produktów. - Dopasowywanie z uwzględnieniem edycji dla
GitLab,
Vault,
Nextcloud i
MongoDB: instancja community nie
widzi już znalezisk dotyczących wyłącznie wersji enterprise (na
prawdziwych danych GitLab 19.2.2 CE widzi 4 z 9 znalezisk NVD,
Nextcloud 27.1.3 CE — 11 z 23). Te cztery sondy zapisują teraz edycję
serwera w
extra.enterprise; przy nieznanej edycji zachowywane są wszystkie znaleziska. - Cele
sshsą dopasowywane jako OpenSSH lub Dropbear na podstawie banera; każdy inny stos SSH nie jest wyszukiwany w bazach CVE, zamiast dostawać CVE OpenSSH. - Kolumna
CVESw widokach compact i drift poleceniacheck, licząca różne CVE. - Lista dla każdego CVE w
export --format html, w czystym CSS bez JavaScriptu, dzięki czemu raport inline pozostaje plikiem offline bez żadnego<script>: jeden wiersz na CVE z linkami do NVD, cve.org i bdu.fstec.ru, rosyjski tekst BDU, jeśli BDU zawiera dane CVE, kolorowa ocenaCRITICAL · CVSS 3.1 9.8, od najpoważniejszego. export --format jsonzawiera każde znalezisko z każdego źródła w tablicycveskażdej oceny, w tym ustrukturyzowaną ocenę CVSS sparsowaną z obu źródeł.- Sonda
fortiosdla Fortinet FortiGate, przez jego REST API z tokenem REST API Admin. - Raporty HTML w trybie CDN zapamiętują dla każdego odbiorcy zamknięcie ostrzeżenia „wymaga dostępu do internetu”.
- Blok
cve:jest odczytywany z konfiguracji faktycznie używanej w danym uruchomieniu —--config,$ENODIA_CONFIGlub domyślnych ścieżek wyszukiwania. - Ścieżki Windows działają bez cudzysłowów, w pojedynczych
cudzysłowach, z ukośnikami zwykłymi lub jako ścieżki UNC.
W podwójnych cudzysłowach YAML
\ti\nstają się tabulatorem i znakiem nowego wiersza, więc taka ścieżka jest odrzucana przy wczytywaniu ze wskazówką. cisco-ios-xena dobre wypadł z planu rozwoju.
1.2.1+0 — 2026-09-10
Dział zatytułowany „1.2.1+0 — 2026-09-10”Naprawiono
Dział zatytułowany „Naprawiono”p4d/p4pnie stosowałytimeoutdo podprocesu CLIp4, który wywołują — każda inna sonda w tym drzewie ogranicza własny transport dotimeout, zanim sięgnie do sieci, a ta tego nie robiła. Procesp4zawieszony na łączeniu z nieosiągalnym serwerem bezpośrednim (brak odpowiedzi, brak resetu — dokładnie to zachowanie sieci, które jest w ogóle powodem, dla którego te dwie sondy wywołująp4) wisiał w nieskończoność, blokując cały przebieg zbierania danych. Zgłoszone bezpośrednio na podstawie prawdziwego zawieszenia na produkcji.
1.2.0+0 — 2026-09-10
Dział zatytułowany „1.2.0+0 — 2026-09-10”- Sondy
p4dip4pdla Perforce Helix Core Server i Perforce Proxy. Własny protokół RPC Perforce został w pełni odtworzony metodą inżynierii wstecznej, a ręcznie zbudowany klient poprawnie odtworzył jego handshake z prawdziwym proxy, ale dokładnie ten sam, zweryfikowany bajt po bajcie handshake jest po cichu odrzucany przez prawdziwe bezpośrednie serweryp4dz powodów niewidocznych po stronie klienta. Obie sondy wywołują zamiast tego własne CLIp4operatora — to pierwsze sondy w enodia, które uruchamiają zewnętrzny proces zamiast bezpośrednio mówić protokołem sieciowym. Ścieżkę pliku binarnego można skonfigurować dla każdego celu przezoptions.binary(z powrotem dop4z$PATH); działa to identycznie w systemie Windows, ze wskazaniem nap4.exe. Odpowiedź proxy odróżnia się od odpowiedzi serwera bezpośredniego po obecności jej własnego polaproxyVersion— każda z sond odrzuca kształt odpowiedzi tej drugiej.
Naprawiono
Dział zatytułowany „Naprawiono”- Parser wyniku
p4 -Ztagnie usuwał windowsowych znaków końca wiersza: prawdziwyp4.exezapisuje\r\n, pozostawiając końcowe\rw wartościach pól, takich jakServerID. probe.Observation.Resolver(dodane w 1.1.0+0 dla SonarQube) było zwykłą strukturą, a nie wskaźnikiem —omitemptywencoding/jsonnie ma pojęcia „pustej” wartości dla struktury, więc każda pojedyncza obserwacja serializowała w eksportach JSON zbędne"resolver":{}, a nie tylko obserwacje SonarQube. Poprawiono na wskaźnik, z tego samego powodu, dla któregotlsVerifiedjuż jest nullable, a nie gołymfalse.
1.1.1+0 — 2026-09-10
Dział zatytułowany „1.1.1+0 — 2026-09-10”Naprawiono
Dział zatytułowany „Naprawiono”debianzgłaszał samą wersję główną (13) zamiast faktycznego wydania punktowego (13.6) —VERSION_IDw/etc/os-releaseDebiana nigdy go nie zawiera, nawet w w pełni załatanej instalacji; wydanie punktowe znajduje się tylko w/etc/debian_version.debianprzeniesiono ze wspólnego mechanizmuosReleaseFamilyProbedo własnej, dedykowanej sondy, która odczytuje oba pliki i ufadebian_versiondopiero po potwierdzeniuID=debianoraz tego, że zawartość jest zwykłą liczbą z kropkami — potwierdzono, że prawdziwy obraz Ubuntu zawiera identyczny plik z bezużyteczną, odziedziczoną zawartością.ubuntumiał tę samą lukę:VERSION_IDnigdy się nie zmienia po wydaniu, więc w pełni załatany host22.04zgłaszał samo22.04, a nie22.04.5.ubunturównież przeniesiono ze wspólnego mechanizmu do własnej sondy, która preferuje wydanie punktowe z polaVERSIONwos-release, gdy jest ono ściśle bardziej precyzyjne niżVERSION_ID. Każdy inny produkt ze wspólnej rodziny identyfikacji systemu operacyjnego przez SSH został sprawdzony w ten sam sposób; żaden z pozostałych nie ma tej luki.
W żadnym z nich nie zmienia się konfiguracja — ta sama wartość
product:, te same poświadczenia, ten sam endpoint. Jedynie zgłaszane
version stało się bardziej precyzyjne.
1.1.0+0 — 2026-09-10
Dział zatytułowany „1.1.0+0 — 2026-09-10”- Resolver cyklu życia
github-tagsdla produktu, który nie publikuje w ogóle GitHub Releases, a jedynie tagi w postaci bez kropek — dał pgAdmin pierwszy działający resolver (tagipgadmin-org/pgadmin4toREL-9_17, konwertowane na9.17, przy czym wybierany jest tag o najwyższej sparsowanej wersji, a nie pierwszy z nich). - Zmienna środowiskowa
GITHUB_TOKEN— uwierzytelnia każde wyszukiwanie cyklu życia oparte na GitHubie, podnosząc limit bez uwierzytelniania z 60 żądań na godzinę do 5000 na godzinę. Zobacz Obsługiwane produkty. - Sonda może teraz nadpisać resolver cyklu życia swojego produktu dla pojedynczej obserwacji — na rzadki przypadek, gdy właściwy kalendarz można poznać dopiero po zobaczeniu odpowiedzi producenta z wersją. Po raz pierwszy użyte do rozdzielenia SonarQube na SonarQube Server i SonarQube Community Build — dwa osobne produkty od podziału wprowadzonego przez SonarSource pod koniec 2024 roku, śledzone jako dwie różne strony endoflife.date z różnymi danymi cykli.
Naprawiono
Dział zatytułowany „Naprawiono”- Błędy resolvera były wcześniej pokazywane w raporcie tylko jako
resolver_error, bez możliwości odróżnienia limitu żądań GitHuba od błędu DNS czy zmienionego API.enodia check/exportwypisują teraz w takim przypadku na stderr rzeczywisty błąd źródłowy. - SonarQube był zawsze porównywany z kalendarzem cyklu życia Community Build, nawet w przypadku instancji SonarQube Server — zbieranie wersji działało, ale raport i tak pokazywał niedopasowany cykl. Teraz jest to rozstrzygane dla każdej instancji na podstawie samego ciągu wersji.
Zmieniono
Dział zatytułowany „Zmieniono”- Publikowanie obrazu kontenera (
ghcr.io/epicmorg/enodia, z kopiami lustrzanymi także w Docker Hub i Quay) zostało całkowicie przeniesione z potoku wydań tego repozytorium do monorepozytoriumEpicMorg/docker, według własnego harmonogramu kompilacji tamtego repozytorium. Adres publikowanego obrazu i tagi (latest,1, dokładna wersja) się nie zmieniły, ale sam obraz jest teraz wyłącznielinux/amd64i działa jako root — zobacz Pierwsze kroki.
1.0.0+0 — 2026-09-09
Dział zatytułowany „1.0.0+0 — 2026-09-09”Pierwsze wydanie. collect → inventory.jsonl → evaluate → assessment → render od początku do końca, zweryfikowane na prawdziwej infrastrukturze
produkcyjnej:
- 87 sond, każda w jednym pliku, wkompilowana i jawnie zarejestrowana — większość mówi przez HTTP, niektóre (Redis, PostgreSQL, MySQL, MongoDB) bezpośrednio własnym protokołem sieciowym, a rosnąca grupa (każda popularna dystrybucja Linuksa, systemy BSD, macOS, OPNsense, Proxmox VE, TrueNAS, Synology DSM, urządzenia sieciowe) jest odpytywana przez SSH lub HTTP API producenta, zamiast zakładać, że endpoint z wersją w ogóle istnieje.
product: generic— sonda definiowana wyłącznie w konfiguracji, dla wszystkiego, co wewnętrzne, z celowo zamrożonym słownikiem (bez warunków, pętli i szablonów).- Rozwiązywanie cyklu życia z użyciem endoflife.date i GitHub Releases, buforowane na dysku, oceniane na trzech niezależnych osiach (odstęp od poprawek, faza cyklu życia, nowsza gałąź) zamiast jednego spłaszczonego werdyktu — zobacz Koncepcje.
- Cztery widoki raportu w wynikach w postaci tabeli, HTML, JSON i Prometheus.
enodia serve— serwer HTTP oparty wyłącznie na migawkach; zbieraniem zajmuje się ticker w tle, a handlery zawsze tylko odczytują ostatnią migawkę.- Schemat konfiguracji z podstawianiem
${VAR}/${VAR:-default}, dedykowanym magazynem poświadczeń oraz przypinaniem TLS i jawnym włączaniem trybu insecure dla każdego celu. - Pakiety:
.deb,.rpm,.apki.pkg.tar.zstdla Archa, dedykowany, nieuprzywilejowany użytkownik systemowyenodia, strony man dla każdego polecenia, surowe archiwa dla Linuksa/Windows/macOS/Androida (Termux) i obraz kontenera — zobacz Pierwsze kroki. Sumy kontrolne podpisywane przez cosign w trybie keyless (OIDC, bez klucza, którym trzeba zarządzać lub który mógłby wyciec).