Co jest najważniejsze w security - wg eksperta z Microsoftu
W maju po raz 13. odbyła się konferencja technologiczna Infoshare 2019. W AmberExpo w Gdańsku, na największym tego typu wydarzeniu w Europie Środkowo-Wschodniej, spotkało się kilka tysięcy uczestników, a ponad 200 osób wystąpiło ze swoimi wykładami. Prelegentami byli polscy i światowi eksperci, którzy chętnie dzielili się wiedzą na scenie, jak i poza nią.
Jako CTO Bulldogjob.pl, przeprowadziłem wywiad na temat branży security z jednym z prelegentów - Barrym Dorransem z Microsoftu. Pracuje on tam już od prawie 10 lat i od początku związany był z kwestiami bezpieczeństwa. Obecnie jego stanowisko to ASP.NET Security Czar.
Barry jest „zrzędą od bezpieczeństwa” Microsoft .NET, co oznacza, że zajmuje się strukturami .NET i ASP.NET, narzędziami i kodem narzędzi, szukając potencjalnych zagrożeń. Sprawdza zgłoszone luki, zanim ktoś inny je naprawi, co oznacza, że zgarnia dla siebie całą zabawę.
Adam: Wysłuchałem kilku Twoich wystąpień.
Barry: Przykro mi.
Adam: Nie. Były świetne! Mówisz w nich, że Twoja praca polega na upewnianiu się, że ludzie dokonują właściwych wyborów... A jeśli nie, to je naprawiasz.
Barry: To moje zadanie. Moja praca w Microsoft jest powiązana z frameworkiem .NET. W ramach tej pracy staramy się być jak najbezpieczniejsi. Wymaga to czasem tego, by docelowi programiści korzystający z .NET Framework wykonywali właściwe kroki. Dbamy o to, aby nasi klienci mieli domyślnie dostarczone właściwe rozwiązanie. I choć bardzo chciałbym powiedzieć, że wszystko jest zawsze w 100% sprawne, to jednak nie jest to prawda. Każdy popełnia błędy. I kiedy te błędy już zostają popełnione, to ja jestem osobą, która musi przedwcześnie kończyć swój miesiąc miodowy.
Adam: O rany!
Barry: To była zabawna sytuacja. Jestem również osobą, która próbuje znaleźć odpowiednich opiekunów dla każdego obszaru. Z zespołem przyglądamy się potencjalnemu rozwiązaniu, testujemy je, popychamy dalej, a następnie nakłaniamy naszych klientów do aktualizacji.
Adam: Powiedz, czy istnieją jakieś rzeczy, które ułatwiają Twoją pracę, jeśli chodzi o umożliwianie ludziom dokonywania właściwych wyborów?
Barry: Trzeba zawsze pamiętać, że bezpieczeństwo nie stoi w miejscu. Wybory dokonane w zeszłym roku mogą nie być odpowiednie w obecnym. Dla przykładu, nikt nie lubi zaznaczać kolejnych pól prywatności - to był dla mnie szok, kiedy zameldowałem się wczoraj w moim hotelu i miałem do zaznaczenia cztery różne pola prywatności - ale tak właśnie działa RODO. Wszystko się zmienia, np. hasła i sposób ich przechowywania. Kiedyś można było użyć MD5 jako mechanizmu hashowania. Ale teraz MD5 jest nieodwracalnie złamany. Tak więc przeszliśmy z MD5 do SHA1, a następnie do SHA2. Nie możemy stać w miejscu, ale niestety wiele osób to robi.
Problem, jaki ma z tym Microsoft, polega na tym, że jesteśmy bardzo skupieni na kompatybilności wstecznej. Nie możemy usunąć rzeczy, które nie są już odpowiednie dla programistów, ponieważ psujemy wówczas istniejące programy. Dlatego programiści, szukając algorytmów dla haseł, mogą znaleźć bardzo stary artykuł w Google lub StackOverflow, w którym mówi się, że należy użyć MD5. Następnie widzą, że MD5 jest nadal obecne w .NET i mówią "OK, to musi znaczyć, że mogę tego spokojnie użyć". Mimo że w Dokumentacji jest napisane "proszę, już tego nie używaj" - nikt nie czyta dokumentacji. Bądźmy szczerzy. Musisz mieć świadomość, że to, co możesz znaleźć lub to, co zrobiłeś dwa lata temu, nie jest już właściwe. I to jest kwestia zarówno edukacji, jak i frameworka.
Udostępniamy mechanizm zarządzania użytkownikami, w ramach którego umożliwimy Ci przechowywanie nazw użytkowników i haseł. Co kilka lat zmieniamy te algorytmy do przechowywania, aby nadążyć za bezpieczeństwem. Staramy się pomóc użytkownikowi, ale jeśli unika on korzystania z niektórych z naszych narzędzi i wywoła bezpośrednio prymitywy i algorytmy - nie możemy mu w tym pomóc. Są inne rzeczy, które są tam od 10 lat. Np. z pewnych typów serializatorów, czy sposobów, w jakie dane są formatowane i zapisywane, nie można już bezpiecznie korzystać.
Tak więc, co ułatwiłoby mi pracę? Naprawdę chciałbym, aby programiści byli świadomi, że nic nie stoi w miejscu. Trzeba trzymać rękę na pulsie, czytać dokumentację i stale się kształcić w zakresie tego, co jest bezpieczne, a co nie. Istnieje strona internetowa owasp.org, która co kilka lat publikuje listę 10 najbardziej popularnych podatności w sieci. Tłumaczy, dlaczego rzeczy nadal są zepsute i co można zrobić, żeby je naprawić. To bardzo dobre źródło wiedzy. Czytam ją co roku, by wiedzieć, jak się sprawy mają i co zrobić ze swoim kodem.
Adam: Czyli polecasz regularne odwiedziny na OWASP?
Barry: Owszem. Cyberbezpieczeństwo to szybko rozwijająca się dziedzina, wręcz tak zawrotnie szybko, że naprawdę ciężko za nią nadążyć. To jak z frameworkami JavaScript - co tydzień pojawia się nowy. Z bezpieczeństwem jest podobnie.
Adam: A co poleciłbyś komuś, kto chce rozpocząć karierę w dziedzinie bezpieczeństwa?
Barry: Bezpieczeństwo jest zarówno wspaniałym, jak i przygnębiającym obszarem pracy. Bardzo dużo czasu zajęło mi pogodzenie się ze smutnym faktem, że w bezpieczeństwie większość czasu poświęcasz na robieniu zaleceń.
Nie możesz po prostu powiedzieć "musimy zrobić tak". Stale analizujesz różne rodzaje ryzyka, np. kod, który ktoś napisał. Następnie zgłaszasz to ryzyko kierownictwu, a oni dopiero podejmują decyzję, czy coś zostanie zmienione, czy też nie. Zmiana może być czasem zbyt kosztownym rozwiązaniem. Może się zdarzyć, że ryzyko jest w rzeczywistości mniejsze, niż ci się wydawało. Kierownictwo może Ci np. powiedzieć: "Dobrze, na razie zaakceptujemy to ryzyko, ponieważ nie mamy na to czasu". Więc musisz być na to przygotowany, jeśli masz zamiar pracować w dziedzinie bezpieczeństwa i aplikacji. Twoje dobre intencje mogą się okazać bez znaczenia.
Łatwo jest, gdy zaczynasz od początku. Jest to o wiele trudniejsze, jeśli masz stare oprogramowanie, które trzeba poprawić, ponieważ może to pociągać za sobą wiele zmian, które są w danym momencie po prostu zbyt drogie. Musisz więc być bardzo dobry w wyjaśnianiu, jakie są zagrożenia i być w tym dokładnym.
Jest taka amerykańska bajka dla dzieci o Kurczaku Małym. Kurczak Mały biegał w kółko i mówił wszystkim, że niebo zaraz spadnie. Wszyscy go ignorowali, ponieważ wiedzieli, że to się nie wydarzy. Jednak potem niebo rzeczywiście spadło… Ale jest też podobna, choć zupełnie odwrotna bajka o chłopcu, który wołał o pomoc dla żartu, a kiedy jej faktycznie potrzebował, to nikt nie przyszedł.
Bardzo trudno jest uzasadnić swoje stanowisko. Musisz być naprawdę dokładny, gdy przedstawiasz ryzyko. Nie możesz kłamać na jego temat, aby spróbować zwiększyć stopień ryzyka, lub by dopiąć swego. I musisz być przygotowany na to, że ludzie i tak powiedzą Ci, że nie można tego teraz naprawić.
Adam: Czy myślisz, że takie umiejętności są do wytrenowania?
Barry: Chyba tak. Ja zacząłem pracować w bezpieczeństwie przez przypadek. Nie mam za sobą zbyt wiele formalnego szkolenia, co często zauważają moi koledzy. Ale są już przyzwyczajeni do mojej postawy, więc być może uchodzi mi to na sucho, że nie jestem tak subtelny, jak powinienem być, jeśli mam do czynienia z innymi zespołami, ludźmi, którzy spotkali mnie wcześniej. Może to być bardzo trudne, ponieważ potrafię być ostry i nieprzyjemny, a czasami jestem tak czymś podekscytowany, że po prostu się zapominam.
Ludzie nazywają to umiejętnościami miękkimi, ale one wcale nie są miękkie. Ciężko jest je tak po prostu zdobyć. Ciężko jest zmienić swoje nastawienie, aby wytłumaczyć coś innym ludziom. Ale najlepszym sposobem na to jest przekazanie innym korzyści, wytłumaczenie, jak im to pomoże, zamiast mówienia, w jaki sposób pomoże to Tobie, jako osobie odpowiedzialnej za bezpieczeństwo.
Adam: Jak myślisz, jaki jest obecny stan branży, jeśli chodzi o bezpieczeństwo?
Barry: Stan branży? Cóż, próbuję wymyślić sposób, aby Ci to powiedzieć bez przeklinania, bo jeśli będę przeklinał, to nasi PR-owcy będą na mnie wściekli. Bezpieczeństwo jest trudne i trudno się do niego dostać. Szybko się zmienia i nie jest tak przyjazne dla niedoświadczonych specjalistów, jak programowanie.
U nas tworzą się różne obozy. W niektórych kręgach security panuje przekonanie, że jeżeli nie potrafisz atakować i psuć rzeczy, to nie jesteś prawdziwym specem od security... A niektórzy ludzie, którzy to robią, mają jeszcze gorsze umiejętności społeczne niż ja - a trzeba powiedzieć, że moje są już złe... Nie są inkluzywni. Nie chcą się dzielić wiedzą. Podczas gdy druga strona - strona, która chroni rzeczy, dużo chętniej wymienia się informacjami. Jednak hakerzy też mają własne konferencje, jak DefCon, gdzie mogą się dzielić wiedzą między sobą. Takie działania są ważne zarówno w obrębie Twojej firmy, jak i całej branży.
Gdy atakujesz, budujesz swoją reputację, znajdując coś nowego. Ale dla tych, którzy zajmują się ochroną, reputacja rośnie, gdy dzielisz się wiedzą i pomagasz branży. Nie oznacza to jednak, że atakujący nie pomagają. Gdy znajdą nową podatność, a my ją naprawimy, to branża zyskuje nową wiedzę. To bardzo dziwna dynamika branży, szczególnie gdy próbujesz się w niej rozwijać.
Odpowiadając na Twoje wcześniejsze pytanie, myślę, że tych rzeczy można się nauczyć, a na pewno można wytrenować się w atakowaniu. A skoro możemy nauczyć się atakowania - to możemy też nauczyć się obrony. Jednak czuję, że najważniejsze by było nauczenie się prawidłowej postawy wobec ludzi, a to jak do tej pory idzie powoli. Co prawda niektórzy mają tego kompletnie dosyć, do czasu aż przyjdą właściwi ludzie, którzy zdają sobie sprawę, że niedobrze mieć takie nastawienie.
Adam: Tak. To jest dobry cytat na zakończenie tego wywiadu.
Barry: Już czuję, jak nasi PR-owcy mówią: "Boże, coś Ty powiedział?". Ale to jest ważne. Prawidłowa postawa. I choć postawy można się nauczyć, to jest ona też czymś, do czego powinniśmy sami dochodzić.