211service.com
Prawdziwym problemem bezpieczeństwa oprogramowania jesteśmy my
Kolega niedawno opisał zabawną piątkową noc dla swojego nastoletniego syna: pozostanie w domu i rozmawianie przez Internet. Od czasu do czasu odbywa się impreza, na której wszyscy jego przyjaciele rozmawiają na laptopach.
Coraz bardziej przyzwyczajamy się do życia w takich wirtualnych przestrzeniach — jednak należy dokonać ważnego rozróżnienia między wirtualnymi przestrzeniami a rzeczywistymi fizycznymi przestrzeniami, w których się poruszamy. Zwykle oczekujemy, że możemy przejść przez most lub wejść do budynku bez zawalenia się konstrukcji. Nie mamy takiego zaufania do programów komputerowych.
Uwierz w to, że nie, w niedalekiej przyszłości moglibyśmy żyć w świecie, w którym oprogramowanie nie zawodzi w sposób losowy i katastrofalny. Nasze systemy oprogramowania mogą wytrzymać ataki. Nasze prywatne media społecznościowe i dane dotyczące zdrowia mogą zobaczyć tylko te osoby, które mają na to pozwolenie. Wszystko czego potrzebujemy to odpowiednie poprawki.
Problem z nowoczesnym oprogramowaniem polega na tym, że budujemy nasze drapacze chmur przy użyciu tych samych materiałów i technik, które są używane do budowy chat. Oprogramowanie zaczęło się jako zbiór klocków: proste procedury, sekwencje poleceń do obliczeń, gry i ciekawostki. Dekady później mamy miliony procedur współdziałających ze sobą na połączonych ze sobą maszynach z dostępem do wszelkiego rodzaju tajnych informacji. Jednak nadal używamy podobnych języków i narzędzi.
Jeśli chcemy, aby nasze systemy miały mniej podatności, musimy użyć lepszych materiałów budowlanych. Języki, których ludzie używają dzisiaj, sprawiają, że programiście zbyt łatwo popełniają błędy, a ich wykrywanie jest zbyt trudne.
Lepszym sposobem byłoby użycie języków, które zapewniają nam gwarancje, których potrzebujemy. Luka Heartbleed pojawiła się, ponieważ ktoś zapomniał sprawdzić, czy fragment pamięci skończył się tam, gdzie powinien. Może się to zdarzyć tylko w języku programowania, w którym programista jest odpowiedzialny za zarządzanie pamięcią. Dlaczego więc nie używać języków, które automatycznie zarządzają pamięcią? Dlaczego nie sprawić, by języki programowania zajęły się ciężką pracą?
Innym sposobem byłoby ułatwienie analizy oprogramowania. Facebook miał tak wiele problemów ze zrozumieniem używanego oprogramowania, że stworzył Hack and Flow, wersje PHP i JavaScript z adnotacjami, aby uczynić te dwa języki bardziej zrozumiałymi.
To częściowo nasza wina. Uważamy, że życie online jest zabawne, dlatego zwykle pozwalamy stronom robić, co chcą, z naszymi danymi osobowymi. Firmy produkujące oprogramowanie reagują, dostarczając nowe funkcje tak szybko, jak to możliwe, używając najwygodniejszych materiałów i narzędzi kosztem bezpieczeństwa.
Zmiana nie nastąpi, dopóki nie zażądamy, aby się wydarzyła. Nasze oprogramowanie może być równie dobrze skonstruowane i niezawodne jak nasze budynki. Aby tak się stało, wszyscy musimy cenić poprawność techniczną nad nowość. Od nas zależy, czy życie w sieci będzie równie bezpieczne, co przyjemne.
Jean Yang jest adiunktem na Uniwersytecie Carnegie Mellon i współzałożycielem Cybersecurity Factory, akceleratora zajmującego się bezpieczeństwem oprogramowania.