Google nabídne řešení jak více zabezpečit Javu

12. 2. 2011

Sdílet

Společnost Google vyvíjí sadu rozšíření pro jazyk Java, které by mohly pomoci ochránit Java programy proti buffer overflow (přetečení zásobníku) útokům.

Minulý týden Google prozradil, že projekt, na kterém jeho vývojáři pracovali, aby přidali do Javy novou funkci nazvanou Contracts nebo DBC (Design-By-Contract), je nyní open source.

Implementace společnosti Google nazvaná Contracts For Java nebo zkráceně Cofoja je založena na Modern Jass, což je soubor Java anotací vyvinutých Johannesem Riekenem.

Primárně má tato technologie usnadnit programování, technologie Contracts nicméně poskytne vývojářům i jednodušší cestu, jak se bránit proti útokům přetečení zásobníku, prozrazují výzkumníci.

Přetečení zásobníku je jedna z nejstarších technik počítačových pirátů, ale stále je velkým problémem. V prosinci společnost Microsoft zjistila 2,6 miliónů možných útoků, které by mohli být provedeny využitím přetečení zásobníku v JRE (Java Runtime Engine).

Stručně řečeno, technologie Contracts funguje tak, že pokaždé, když je v programu volána nějaká procedura, každá hodnota, která je v ní použita, musí splňovat řadu předem stanovených kritérií. Stejně tak, když tato procedura vrací hodnoty, tak tyto hodnoty také musí splňovat zadaná kritéria.

"DBC by mohlo být chápáno jako spojení mezi komponentami softwaru," vysvětluje Rieken.

Výzkumníci si tuto myšlenku vypůjčili z jiného jazyka, Eiffel, jehož koncept je znám jako DBC. Příznivci jazyka Eiffel tvrdí, že díky DBC je tento jazyk více zabezpečen než jiné.

V blogovém postu oznamujícím vydání vývojáři společnosti Google tvrdí, že Contracts je cesta jak zjednodušit Java programování, protože pomáhá najít chyby v těle nefunkčního kódu.

Nicméně technologie Contracts také může napomoci tomu, aby Java kód byl bezpečnější, tvrdí Andreas Leitner, testovací softwarový inženýr ve společnosti Google a člen týmu Cofoja.

"Pomocí anotace kódu využitím technologie Contracts je více pravděpodobné, že odhalíte chyby již v dřívějších fázích vývoje," tvrdí Leitner. Také tato technologie může být využitelná v hledání chyb, které nezpůsobí pád programu, ale přepnou ho do "nestandardního stavu", pokračuje Leitner. Tyto stavy by mohly "být zneužity útočníky k získání dat nebo kontroly nad počítačem," dodává.

I bez DBC má jazyk Java mnoho výhod oproti ostatním pokud jde o bezpečnost, jelikož beží v "sandboxu" a vyžaduje, aby programátoři definovali datové typy proměnných před tím, než jsou použity. Nicméně technologie DBC by mohla poskytovat širší bezpečnost tím, že zabraňuje útokům přetečení zásobníku, při kterých může program spadnout nebo být jinak ovlivňován vyšší hodnotou na vstupu než očekává.

Technologie Contracts "může zajistit, že vstupní data nepřesáhnou určitou délku," vysvětluje Rieken.

Vývojáři společnosti Google pracují na projektu Cofoya během 20 procent pracovní doby, při kterých Google povoluje zaměstnancům pracovat na jednotlivých osobních projektech.