J2ME a bezpečnost

29. ledna 2005

Spolu s možností jednoduché instalace javových programů kráčí ruku v ruce otázka bezpečnosti. Pro operační systém Symbian, který obsahuje čím dál více inteligentních telefonů, se již objevilo několik virů, i když bez aktivní pomoci uživatele by ani jeden z nich neměl šanci. A na podzim loňského roku také došlo k odhalení bezpečnostní mezery v KVM, což je virtuální stroj pro mobilní telefony…

Koncept bezpečnosti

V jazyku Java je na bezpečnost kladen velký důraz. Z důvodů omezeného množství zdrojů na malém zařízení byl koncept bezpečnosti pro CLDC oproti standardní edici Javy trochu zjednodušen. Tento koncept zahrnuje tři úrovně – nízkoúrovňovou bezpečnost na úrovni virtuálního stroje, bezpečnost na úrovni aplikace a end-to-end bezpečnost.

Nízkoúrovňová bezpečnost na úrovni virtuálního stroje

Tento typ bezpečnosti zaručuje, že budou spuštěny pouze javové třídy odpovídající sémantice jazyka Java, které nemohou svým během poškodit zařízení, na kterém aplikace běží. Javové třídy jsou po překladu do bajtkódu preverifikovány (předověřeny). Během tohoto procesu jsou do .class souborů přidány dodatečné atributy. Na zařízení probíhá na základě těchto atributů verifikace, která ověří, že aplikace nemůže poškodit paměť mimo rámec paměti alokované aplikací. Pokud jsou atributy preverifikace neplatné nebo chybí, je aplikace odmítnuta.

Bezpečnost na úrovni aplikace

Javová aplikace může použít pouze ty knihovny a zdroje, které jí umožní aplikační prostředí použít. Základem je model sandbox (pískoviště) společný s aplety. Aplikace běží v omezeném prostředí, jehož hranice nemůže překročit. Toto prostředí splňuje následující body:

  • Soubory .class jsou správně verifikovány.
  • Stažení, instalace a vůbec provoz javové aplikace zajišťuje standardní mechanismus, který programátor aplikace nemůže žádným způsobem ovlivnit.
  • Aplikace má k dispozici pouze knihovny CLDC, MIDP a knihovny přidané navíc výrobcem zařízení.
  • Sada nativních funkcí přístupná virtuálnímu stroji je uzavřená, aplikace nemůže nahrát žádnou další knihovnu rozšiřující přístup k nativním funkcím poskytnutým výrobcem zařízení.

Dále jsou chráněny systémové knihovny. Aplikace je nesmí předefinovat ani do nich přidávat nové třídy. Není možné si definovat vlastní zavaděč třídy (class loader). Aplikace může kromě knihoven používat pouze třídy ze svého JAR souboru a odnikud jinud.

„End-to-end“ bezpečnost

Zahrnuje bezpečnost transakce mezi zařízením a například serverem umístěným v internetové síti. Tento typ bezpečnosti CLDC přímo nepopisuje, je součástí profilu MIDP 2.0, kde bylo přidáno HTTPS spojení, zajišťující tuto end-to-end bezpečnost. Profil MIDP 1.0 tuto úroveň bezpečnosti nezahrnuje.

Důvěryhodné a nedůvěryhodné sady midletů v MIDP 2.0

Do specifikace MIDP 2.0 byl přidán mechanismus podpisování aplikací – aplikace mohou být nepodepsané, což znamená, že jsou nedůvěryhodné, nebo mohou být podepsané, tedy jsou důvěryhodné. S MIDP 1.0 aplikacemi se na zařízení podporujícím MIDP 2.0 zachází jako s nedůvěryhodnými aplikacemi. Rozdíl mezi důvěryhodnými a nedůvěryhodnými sadami midletů spočívá v tom, zda a za jakých okolností je jim povolen přístup k rozhraním, jež jsou považována za citlivá.

Nedůvěryhodné sady

Tabulka shrnuje přístup k jednotlivým funkcím pro nedůvěryhodné sady midletů:

API Popis Povoleno
javax.microedition.rms ukládání perzistentních dat ano
javax.microedition.midlet životní cyklus aplikace ano
javax.microedition.lcdui uživatelské rozhraní ano
javax.microedition.lcdui.game herní rozhraní ano
javax.microedition.media javax.microedition.media.control přehrávání zvuku ano
javax.microedition.io.HttpConnection HTTP spojení k povolení potřeba potvrzení uživatele
javax.microedition.io.HttpsConnection HTTPS spojení k povolení potřeba potvrzení uživatele
ostatní API další síťové protokoly (datagram, soket…), citlivá rozhraní z rozšiřujících knihoven podle implementace (k povolení potřeba potvrzení uživatele či zakázáno)

Důvěryhodné sady midletů

Myšlenka důvěryhodných sad midletů je založena na chráněných oblastech. Chráněná oblast definuje práva k použití citlivých rozhraní. Tato přístupová práva dostane aplikace zařazená do dané chráněné oblasti. Práva mohou být dvou typů:

  • povoleno – k použití není nutná žádná interakce uživatele
  • uživatel – uživatel je požádán o potvrzení použití citlivého rozhraní

Toto jsou práva obsažená v MIDP 2.0 (další implementovaná rozhraní mohou mít navíc další práva):

  • javax.microedition.io.Connector.http
  • javax.microedition.io.Connector.socket
  • javax.microedition.io.Connector.https
  • javax.microedition.io.Connector.ssl
  • javax.microedition.io.Connector.datagram
  • javax.microedition.io.Connector.serversocket
  • javax.microedition.io.Connector.datagramreceiver
  • javax.microedition.io.Connector.comm
  • javax.microedition.io.PushRegistry

Důvěryhodná sada midletů specifikuje ve svém deskriptoru aplikace seznam práv potřebných pro svůj běh (MIDlet-Permissions) a seznam dodatečných práv, která využívá, ale bez nichž je stále funkční (MIDlet-Permissions-Opt).

Při instalaci důvěryhodné aplikace musí být sada midletů přiřazena do některé chráněné oblasti. Toto přiřazení proběhne na základě ověření podpisu sady midletů. K ověřování důvěryhodné sady midletů slouží certifikáty X.509. Při instalaci ovšem mohou nastat různé výjimečné stavy.

Za těchto podmínek aplikace nebude nainstalována:

  • Některé z práv potřebných pro běh aplikace zařízení nezná.
  • Chráněná oblast, kam byla sada midletů přidělena, neobsahuje některé z práv nutných pro běh aplikace.

Další stavy, které mohou při instalaci nastat:

  • Zařízení nezná některá z dodatečných práv – tato práva se ignorují a instalace aplikace pokračuje.
  • Chráněná oblast neobsahuje některá z dodatečných práv – aplikace je nainstalována, byť s omezenou funkčností.
  • Některé z požadovaných práv je typu „uživatel“ v přidělené chráněné oblasti – uživatel je požádán o povolení.

Ověření podpisu

Při instalaci sady midletů mobilní zařízení zjistí, zda deskriptor aplikace obsahuje atribut MIDlet-Jar-RSA-SHA1. Pokud jej neobsahuje, zachází se sadou midletů dále jako s nedůvěryhodnou. Je-li atribut MIDlet-Jar-RSA-SHA1 přítomen v deskriptoru aplikace, pokračuje instalace ověřením certifikátu podle specifikace RFC2459. Neověří-li sadu midletů žádný certifikát, není tato sada midletů nainstalována.

Symbian a viry

Nejprve k již zmíněným virům na OS Symbian. První z nich se šíří pomocí bluetooth a uživatel musí potvrdit, že jej chce skutečně nainstalovat. Pokud jej nainstaluje, začne tento vir vyhledávat další bluetooth zařízení v okolí a snaží se na ně také nainstalovat. Bez potvrzení uživatelem by se tedy nemohl šířit.

Další vir se schovává v ilegální verzi hry Mosquitos. Na telefon se může dostat pouze tak, že si uživatel nainstaluje nelegální verzi této hry a ignoruje při tom, že je od neznámého výrobce. Po spuštění pak hra odesílá bez potvrzení uživatele premium SMS, které stojí uživatele nemalé peníze. Pokud bude instalovat uživatel pouze aplikace z ověřeného zdroje (podepsané důvěryhodným certifikátem), nic takového se mu nemůže stát.

Bezpečnostní mezera v KVM

V říjnu 2004 oznámil polský výzkumník Adam Gowdiak objevení dvou bezpečnostních mezer v KVM, jejichž použitím je možné uniknout ze sandboxu KVM a spustit neverifikovaný kód. Adam Gowdiak prezentoval podrobně svůj postup na konferenci Hack in the Box 2004 a jeho prezentace je volně přístupná. Společnost Sun, kterou informoval v srpnu 2004, během dvou týdnů rozeslala záplaty společnostem, které prodávají telefony s podporou Javy.

K praktickému využití bezpečnostních mezer v KVM je ovšem potřeba podrobně znát operační systém zařízení. K této znalosti se lze dobrat reverzním inženýrstvím, ale není to nijak triviální. Adamovi Gowdiakovi trvalo čtyři měsíce, než byl schopen objevené mezery využít na jednom konkrétním telefonu (Nokia 6310i).

S využitím těchto bezpečnostních mezer mohou midlety získat data z adresáře, číst SMS zprávy uložené v telefonu nebo seznam volaných telefonních čísel, používat GPRS nebo wapové spojení (například k odesílání citlivých údajů), blokovat nebo měnit uživatelem odesílané SMS zprávy a podobně. Dále může takový midlet přepsat trvalou paměť telefonu, takže telefon se může stát zcela nepoužitelným.

Adam Gowdiak předpověděl, že během půl roku bude objevena i možnost vzdáleného napadení zařízení s KVM. Pokud se tato bezpečnostní mezera neobjeví, budou všichni uživatelé používající pouze aplikace z ověřených zdrojů v bezpečí, protože souhlas s instalací aplikace a spuštěním aplikace zatím nikdo obejít neumí.

Odkazy a zdroje

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Předchozí článek treking.cz
Další článek pankix.cz
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *