Firmy sprzedające urządzenia oparte na ESPHome będą mogły wkrótce przygotować wykaz składników oprogramowania (SBOM) bez ręcznego poprawiania. 24 października 2026 do kodu ESPHome trafiły dwie zmiany, dzięki którym program zapisuje dane czytane przez narzędzie esp-idf-sbom od Espressifa. Autor wprost podaje powód: norma EN 18031 i unijny akt o cyberodporności (Cyber Resilience Act) oczekują takiego wykazu od urządzeń podłączonych do sieci. Zmiany są w gałęzi rozwojowej, więc powinny trafić do ESPHome 2026.11.

Czego brakowało

esp-idf-sbom już wcześniej tworzył SBOM z kompilacji ESP-IDF na podstawie pliku build/project_description.json. Samo ESP-IDF i komponenty z rejestru Espressifa opisują się same, więc wychodziły poprawnie. Gorzej było z kodem, który dokłada ESPHome. Projekt dostawał numer wersji ESPHome, samo ESPHome pojawiało się jako component-src bez wersji, dostawcy i licencji, a komponenty zewnętrzne i przekonwertowane biblioteki PlatformIO były do niego doklejane albo wypisywane bez wersji.

Teraz ESPHome zapisuje w katalogu kompilacji pliki sbom.yml dla części, o których wie tylko ono:

  • projekt, z nazwą i wersją z sekcji esphome: project: (bez ustawionego project plik nie powstaje);
  • samo ESPHome, z wersją, licencją GPL-3.0-only obejmującą jego część w C++, dostawcą i repozytorium; instalacja z gita jest rozpoznawana po rewizji, a wydanie po znaczniku wersji;
  • każdy komponent zewnętrzny jako osobny pakiet, z repozytorium i rewizją, z której go zbudowano; lokalne komponenty zewnętrzne dostają własny, nazwany pakiet i nie są już przypisywane do ESPHome;
  • przekonwertowane biblioteki PlatformIO, z nazwą i wersją, chyba że biblioteka ma własny plik opisu. Licencji tu nie ma, bo opisy bibliotek często zawierają dowolny tekst, a esp-idf-sbom przerywa pracę na wszystkim, co nie jest poprawnym wyrażeniem SPDX.

Z tego samego powodu ESPHome zapisuje tylko wartości, które przejdą kontrolę narzędzia. Kompilacje, przy których nikt nie uruchamia esp-idf-sbom, niczego nie odczują.

Dostawca i kontakt w sprawie bezpieczeństwa

Druga zmiana dodaje do esphome: project: opcjonalny blok sbom: na dane, których ESPHome nie zgadnie. supplier to nazwa firmy, która wytwarza i dostarcza oprogramowanie, contact to adres e-mail do zgłaszania problemów z bezpieczeństwem, a url to strona do tego samego celu. Jeśli blok jest w konfiguracji, supplier jest obowiązkowy, podobnie jak co najmniej jedno z pól contact i url. Wartości trafiają do wykazu jako dostawca pakietu projektu i producent całego dokumentu SBOM, zarówno w formacie SPDX, jak i CycloneDX.

Blok działa tylko na ESP32, bo tylko kompilacje dla ESP32 z ESP-IDF tworzą te pliki. Na innych platformach konfiguracja nie przejdzie sprawdzenia, więc nikt nie będzie przekonany, że ma SBOM, którego w rzeczywistości nie ma. Klucza license dla projektu celowo nie dodano, bo esp-idf-sbom sam łączy licencje poszczególnych części.

Sam wykaz nadal tworzy narzędzie Espressifa, poleceniem esp-idf-sbom create build/project_description.json. Autor sprawdził obie zmiany na konfiguracji prawdziwego produktu z ESP32-S3 i ESP-IDF 5.5.6, generując pliki SPDX i CycloneDX.

Dla kogoś, kto wgrywa ESPHome do gniazdka albo czujnika we własnym domu, nic się nie zmienia. Zmiana jest skierowana do firm sprzedających w Unii urządzenia z ESPHome, które dotąd musiały składać taki wykaz z kilku źródeł. Dokumentacja nowych kluczy czeka jeszcze na scalenie.