Nowy język programowania, którego hakerzy nie polubią

Wyvern powstał na zlecenie NSA i wyłapuje w kodzie błędy, korzystając z pięciu różnych języków programowania zintegrowanych z narzędziem. Mogą to być dowolne języki, nie tylko te, które są powszechnie używane do pisania aplikacji.

Specjaliści oceniają, że w programie liczącym sobie 512 tysięcy lub więcej linijek kodu w każdym tysiącu linii można znaleźć od czterech do nawet stu błędów. Błędy takie wyszukują w oprogramowaniu cyberprzestępcy, wykorzystując je następnie do przeprowadzania na systemy IT różnego rodzaju ataków. Właśnie dlatego informatycy od dawna pracują nad narzędziami, które potrafią identyfikować luki znajdujące się w aplikacjach, zwiększając tym samym bezpieczeństwo pracy centrów danych.

Twórcą jednego z takich narzędzi jest Carnegie-Mellon University. To język programowania Wyvern, który powstał na zlecenie NSA (National Security Agency; amerykańska Agencja Bezpieczeństwa Narodowego). Grupą naukowców kieruje profesor Jonathan Aldrich. Wyvern wyłapuje w kodzie błędy, korzystając z usług maks. pięciu różnych języków programowania (wskazanych przez dewelopera oraz zintegrowanych z narzędziem). Mogą to być dowolne języki - nie tylko te, które są powszechnie używane do pisania aplikacji.

Zobacz również:

  • Cyberobrona? Mamy w planach

Niektórzy mają wątpliwości, czy Wyvern spełni pokładane w nim nadzieje. Jednym ze sceptyków jest Robert Coleridge - szef firmy Secure Channels. Warto przypomnieć, że Secure Channels opatentowała nową, niezwykle skuteczną technologię szyfrowania danych. Świadczy o tym fakt, że na tegorocznej konferencji Black Hat USA 2014 ponad 150 hakerów próbowało bez skutku odczytać dane zaszyfrowane przy użyciu właśnie tej technologii.

Większość specjalistów do spraw bezpieczeństwa jest jednak przekonana, że Wyvern to krok we właściwym kierunku. Narzędzie to pozwala przecież deweloperowi zaimportować pięć różnych języków programowania. Ważne jest to, że może to być również język stworzony przez samego programistę (np. na potrzeby określonego środowiska pracy), o ile spełnia określone wymagania. Można zapytać, czy twórcy rozwiązania nie przesadzili wprowadzając do narzędzia aż tyle zewnętrznych języków. Twierdzą oni iż jest to konieczne, ponieważ programowanie jest na tyle skomplikowane, że jeden język nie jest w stanie podołać wszystkim wymaganiom. Należy bowiem pamiętać, że analizowane kody mogą realizować zupełnie różne zdania. I tak np. język SQL optymalizuje zapytania kierowane do bazy danych, podczas gdy C# jest wykorzystywany do pisania aplikacji wykonujących inne zadania.

Obecnie programiści mogą również pisać aplikacje posiłkując się kilkoma językami programowania. Doświadczenie pokazuje jednak, że nie jest to dobra metoda, gdyż w aplikacjach takich z reguły pojawia się wiele błędów. Można np. wstawić do projektu ciąg zapytań do bazy danych przez zaimportowanie odpowiedniej biblioteki, a następnie przekazanie jej tego ciągu. Jednak metoda taka nie jest bezpieczna i lepiej jest budować zapytania bezpośrednio przy użyciu języka SQL.

Do samo dotyczy aplikacji HTML. Tu również można posłużyć się wymienioną powyżej techniką, jednak kod może być wtedy dziurawy (z reguły są to błędy typu “cross site scripting” lub „injection”), co jest mało prawdopodobne w przypadku użycia bezpośrednio języka HTML.

Natomiast Wyvern sprawdza również, czy w programie nie ma technicznych błędów wynikających np. z faktu, że deweloper nie zadbał o to, aby poszczególne moduły współpracowały ze sobą w płynny sposób. Programista może bowiem zaimportować bibliotekę i przekazać jej odpowiednie polecenia SQL. Jeśli jednak nie zadba o to, aby poszczególne zadania były wykonywane w odpowiedniej kolejności, przywołana biblioteka może popaść w konflikt z inną. Wyvern wykrywa takie konflikty.

Wyvern nie jest klasycznym językiem programowania w pełnym tego słowa znaczeniu, ale meta-językiem stworzonym z myślą o łataniu możliwie jak największej ilości dziur w tworzonym przez dewelopera oprogramowaniu. Po to został właśnie stworzony. Nie oznacza to jednak, że hakerzy również i w tym narzędziu nie znajdą słabych stron, które umożliwią im atakowanie systemów komputerowych. Jest to wysoce prawdopodobne, że tak się stanie. Dlatego specjaliści ostrzegają, że nie jest to panaceum na wszystkie błędy, jakie popełniają programiści.

A jak doszło do zainicjowania prac nad językiem Wyvern? Agencja NSA zwróciła się w 2013 roku z prośbą do kilku ośrodków naukowych o podjęcie prac nad narzędziami, które będą analizować aplikacje i likwidować dostrzeżone w nich dziury. W efekcie agencja wybrała cztery takie ośrodki, a jednym z nich został Carnegie-Mellon University.

W opinii wielu specjalistów, może to być przysłowiowy bicz na poczynania cyberprzestępców. Rzecz bowiem w tym, że wiele firm zajmujących się problemem bezpieczeństwa systemów IT koncentruje obecnie swoją uwagą raczej na dziurach w sieci dzięki którym hakerzy mogą uzyskać dostęp do aplikacji, nie zajmując się specjalnie samymi programami. A przecież gdyby nie luki w aplikacjach, hakerowi niewiele dałoby to, że sforsował zaporę. Dzięki nowemu meta-językowi programowania haker może być niemile zaskoczony, gdyż po przebrnięciu przez zaporę stwierdzi, że w upatrzonej przez niego aplikacji nie ma dziury, która może posłużyć do zagnieżdżenia szkodliwego kodu.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200