J2ME a bezpečnost
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
- Java 2 Micro Edition security vulnerabilities – prezentace Adama Gowdiaka (PDF soubor, cca 55 MB)
- Java Technology – na těchto stránkách jsou k dispozici specifikace CLDC 1.0 (JSR 30), CLDC 1.1 (JSR 139), MIDP 1.0 (JSR 37) a MIDP 2.0 (JSR 118)
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Jak nainstalovat šablonu ve WordPressu
23. července 2024 -
ZONER Webmail jako první v Česku přináší BIMI s VMC
11. července 2024 -
Vaše pošta může být špatně nastavena – svěřte ji profesionálům
13. července 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024