OpenBSD 6.2: bezpečnější jádro s KARL, vylepšený clang, ARM a porty

19. 10. 2017
Doba čtení: 5 minut

Sdílet

Vyšla nová verze OpenBSD s číslem 6.2. Přináší mimo výrazné podpory ARMv6/ARMv7 (hromady nových ovladačů) také nové verze DHCP a LibreSSL. Pokrok zaznamenal virtuální stroj VMM a opět došlo opět na vylepšení ochrany paměti systému.

Podpora pro Arm a Octeon

Pokud používáte armová zařízení, měli byste zaznamenat výrazné zlepšení podpory. Nově tu jsou ovladače pro Rockchipové sensory, powermanagement a podobně, dále ovladače pro zařízení Synopsis Design Ware (SD/MMC, ethernet, timer), Marvel ARMADA (SD, interupt, pins), TexasInstruments (LCD) atd., takže toto vydání je tak trochu pro milovníky Raspberry, Pine64 a podobných potvůrek.

Octeon dostal nové drivery pro SATA/USB3/sběrnici přerušení a další.

Bezpečnost: KARL a vyprázdněná nula

OpenBSD už dlouho pracuje na zabezpečení té oblasti, která je zranitelná velmi často (např. při přetečení bufferu), a tou je operační paměť. V podstatě jde o to, že pokud se program nějakou chybou dostane k přečtení stránek paměti, které mu nepatří, může se útočník probojovat k hromadě informací dokonce i těch aplikací, které jsou korektně naprogramované. Po změnách v posledních třech vydáních OpenBSD máme hlídače přístupu do paměti, jako je pledge, (která dovolí aplikacím sahat jen tam, kam mají), potom je tu mprotect, (ten existuje i na Linuxu, ale otázka je, kolik distribucí ho má zapnutý ve výchozím stavu) dále je tu realokace knihoven i kernelu po nahrání do paměti.

Asi zásadní novinkou je implementace technologie KARL. Stejně jako známější ochrana ASLR a její implementace pro kernel KASLR, i KARL se stará o to, aby jádro systému nebylo v RAM snadno dostupné, ovšem randomizace jde u KARL ještě dál. Kromě náhodné adresace v paměti má při bootu generovat vždy novou binárku kernelu s náhodnou vnitřní strukturou, takže využití potenciálních exploitů by mělo být zase složitější. Jedná se o technologii přímo z rukou Theo de Raadta, o kterou už projevilo zájem několik dalších projektů, mezi nimi i Linux.

Další bezpečnostní novinkou je zavedení funkce freezero(). Zjednodušeně řečeno je tato funkce podobná funkci free(), uvolni, která uvolní paměť po použití. Ovšem v některých případech, není jisté, že uvolněná paměť bude skutečně prázdná. V těchto případech freezero() po uvolnění skutečně zajistí vymazání původního obsahu, takže není možné ho při realokaci paměti omylem (nebo úmyslem) znovu přečíst.

Různé systémové procesy nyní získaly ochranu pledge a v ssh byla opravena chyba, která dělala problémy s pledge. Stejně tak nyní přibyl report o pokusech narušit pledge do denního bezpečnostního reportu systému.

OpenSSH dostalo opravu pro SFTP, kdy při read-only přístupu bylo původně možno zapsat prázdné soubory. OpenSSH dostalo vůbec všelijaká malá vylepšení a drobné ladění, které by mělo zvýšit průtok dat i pohodlnost práce s tímto programem/daemonem.

LibreSSL se těší také mnoha drobným vylepšením a opatřením pro zvýšení bezpečnosti, kupříkladu byla odebrána podpora pro DSS/DSA, dále bylo přidáno rozlišování mezi self-signed a self-issued certifikáty, zlepšená výměna klíčů mezi servery, zapracování CRL do libtls, vylepšena podpora standardů RFC 5280(při generování certifikátů) a RFC 6125 (při verifikaci), lepší komunikace přes IPv6 a hromada dalších.

Síť a PF

Wi-Fi – intelová zařízení nyní chytřeji navazují ztracenou komunikaci, automaticky se vybírá rychlejší APN a v n-kovém modu byly opraveny chyby u Aetherosu.

IP má vylepšený výkon díky tomu, že z forwarding/incoming paketů byl sňat KERNEL_LOCK. IPv6 stack je vyčištěn a jsou aplikována drobná vylepšení. PF nyní prohlíží AH pakety tak, že IPv4 autentizační hlavičky fungují jako v IPv6.

V PF je nyní nově volba allow-opts, která odfiltruje exotické pakety, jenž mají hop-by-hop option header a destination option header (mají tyhle hlavičky český název?).

DHCP klient a server

Server – vylepšena podpora pro čtení z bpf, přidána funkcionalita pro echo-client-id statement a opravena inkonzistence v předávání dhcprelay přes zařízení typu CARP.

Klient – tady to je lepší podpora routování, vylepšené využití dhclient.conf, bezpečnější IPv6, zvýšena kontrola dhcp zápůjčky a v neposlední řadě i zefektivněné a vyčištěné logování. Těch malých oprav dhcp klienta je tam skutečně asi padesát…

Virtualizace o krok dál

Virtuální stroj VMM, kterému jsme tu na Rootu už věnovali dva články, přináší výrazná zlepšení na více úrovních. Praktická je například funkce pauznout stroj a migrovat ho včetně načtené paměti na jiný server, při spouštění po pauze dojde nově k synchronizaci času přes VM RTC.

Virtualizovaní hosté mohou nyní použít až 32 GB RAM, lepší emulace některých prvků, síťová karta virtio má nyní dvojnásobný průtok zásobníkem a CPU virtualizovaných strojů mohou nyní využívat vlastnosti AVX/AVX2, což může výrazně zvýšit výkon při určitých operacích.

Porty a balíčky

Porty a balíčky, čili software třetích stran, se na zářijovém hackatonu stalo tématem a vývojáři skutečně věnovali spoustu energie tomu, aby opravili problémy při kompilaci s clangem. Kromě jiného byla omezena podpora gtk1, takže třeba původní minimalistické a hackery oblíbené xmms už si tak snadno nenainstalujete. Dále padlo zajímavé rozhodnutí, že se zjednoduší podpora bezpečnostních záplat pro každé jedno vydání, ovšem kromě balíčků pro amd64 a i386 přibudou balíky a binární opravy pro následující architektury: alpha, arm,hppa, mips64, mips64el, powerpc a sparc64 (dříve se muselo pro tyto architektury individuálně kompilovat updaty).

bitcoin_skoleni

V tuto chvíli je počet dostupných binárních balíků softwaru třetích stran mezi 9 000 a 10 000 v závislosti na architektuře (pro srovnání, třeba Debian má podle zapnutých repozitářů cca 16 000 – 26 000). Tady ale stojí zato dodat, že v případě Debianu je to počet balíků i včetně kernelu a základního systému, kdežto v případě OpenBSD se jedná jen o počet balíčků třetích stran, jelikož hromada programů a kernel je už přímo v systému. Ten není v balíčcích, ale je distribuován jako součást vydání nebalíčkově, takže porovnání kulhá.

Jaké verze balíků jsou aktuálně v OpenBSD? Jen pro zajímavost například:

  • Chromium 61.0.3163.100
  • GCC 4.9.4
  • Gimp 2.8.22
  • GNOME 3.24.2
  • LLVM/Clang 5.0.0
  • MariaDB 10.0.32
  • Mozilla Firefox 56.0.0
  • PHP 5.6.31 a 7.0.23
  • PostgreSQL 9.6.5
  • Postfix 3.2.2 and 3.3–20170910
  • Xfce 4.12

Různé

  • Clang se stal výchozím kompilátorem pro architektury i386 a amd64.
  • Ksh má opět vylepšenou podporu UTF-8 při práci s editory Emacs a Vim.
  • Soubor historie v ksh je nyní v textovém formátu (býval binárkou).
  • Od píky je přepsaná implementace locale striktně podle POSIXu.
  • Automatická hibernace se aktivuje při velmi nízkém stavu baterie.
  • Ovladače audio pro azalia přestaly šumět.
  • ddb má spoustu vylepšení, například ctf importované ze Solarisu.
  • A také ještě spoustu dalších.

Hlavní a zajímavé zdroje

Autor článku

Petr Topiarz vystudoval angličtinu a pracuje jako systémový administrátor v jedné pražské IT firmě.