sobota, 26 grudnia 2009

Psychoza w bezpieczeństwie

Kończy się przerwa świąteczna, a ja natchniony kilkoma wypowiedziami na forum GoldenLine chciałbym coś z siebie wyrzucić. Dodatkowo mój serdeczny kolega zauważył, że stał się bohaterem jednego z wpisów - (Najtrudniejsze) Podstawy bezpieczeństwa aplikacji.... Zastanawiam się jak bardzo unikalni w naszym kraju są programiści, których ciekawią problemy związane z bezpieczeństwem aplikacji, które tworzą. Przyznam szczerze, że znam ich dosłownie kilku, a pozostali... no cóż, bezpieczeństwo dla nich to: przymus, kara, opóźnienia, niechciane marzenia, niepotrzebne gadżety, killerzy biznesu - nadal często z takimi określeniami spotykam się od ładnych paru lat, głównie na początku współpracy. Są też wyjątki "nawróconych" :-)

Prawda jest taka, że jeżeli wymagam od programisty by aplikacja była wolna od znanych błędów/podatności, a w żaden sposób mu w tym nie pomagam to nie przesadzę napisząc, że to jak wymaganie od początkującego kierowcy bez uprawnień na prowadzenie pojazdów, by jeździł bezpiecznie. Niby już wie gdzie gaz, hamulec, sprzęgło, skrzynia biegów, po osiedlu jeździ, ale co z ze skomplikowanymi skrzyżowaniami kiedy w dodatku światła zostały wyłączone? Staje prawie na środku, inni trąbią, wyzywają, pomagają by stres zrobił swoje - pomagają popełnić błąd. Wcześniej nie przerabiał takiego scenariusza. Nie oczekujmy, że ten przyszły kierowca na pewno zachowa się w tej sytuacji dobrze.

Wiecie już co mam na myśli? :)

Zadałem takie pytanie na forum, ale może ktoś trafi na mojego bloga: Czy widziałaś/widziałeś oferty pracy dla programistów, gdzie jednym z wymagań była choćby podstawowa znajomość zagadnienień związanych z bezpieczeństwem? - technologii z jaką miałaby taka osoba pracować albo chociaż ogólnie: bezpieczeństwa aplikacji.

Pomijam oferty z firmy Google, oni prawdopodobnie potwierdzają regułę.

Krótkie zastanowienie i może trochę przedwczesne wnioski, "Nie ma takich ofert pracy bo":
1) nie ma takich programistów - moim zdaniem są, chociaż nie ma ich zbyt wielu, dlaczego? kto zna szkolenia w Polsce, na których programista może poznać zagrożenia związane z atakami na aplikacje i nauczyć się jak z nimi walczyć?
2) pracodawcy nie myślą o tym, nie czują problemu - bo przecież taki programista ma inne zadania, bezpieczeństwo to "ficzer"
3) bezpieczeństwo to temat dla kogoś z bezpieczeństwa, jak znajdą jakieś błędy to programista usunie je - kiedyś na takie teksty otwierał mi się scyzoryk w kieszeni, teraz potrafię spokojnie przedstawić ten temat w taki sposób by dał do myślenia
4) w Javie pisze się tylko bezpieczne aplikacje - za krótko obracam się w środowisku programistów języku Java by to dobrze wytłumaczyć dlaczego jest takie myślenie, ale przykro mi, że muszę to zrobić: aplikacje w Javie nie są bezpieczne "by default". Nie są, przykro mi.
5) nie ma dostatecznie dobrego dialogu pomiędzy samym IT, a osobami z bezpieczeństwa. Za krótko żyję na tym świecie by mieć kilkanaście i więcej lat doświadczenia na styku IT <-> Bezpieczeństwo -> wymierną próbkę, ale dlaczego tak mało rozmawiamy? Jeśli już to bardzo oficjalnie i głównie o nakazach/zakazach. Tuż przed świętami sporo rozmawiałem ze znajomym, który szukał podstaw uzasadniających kilka punktów w umowie dla pracownika IT. Jak dla mnie były to punkty ze świata absurdu co też mu powiedziałem. Zacznijmy od pracy u podstaw!
6) i w konsekwencji z 5) - nie ma programu/pomysłu w firmie zapewniającego bezpieczeństwo aplikacji. J/w. Praca u podstaw. Tomasz Kopacz z firmy Microsoft, na którego prezentacji podczas CONFidence 2009 2.0 miałem okazję być, powiedział, że wprowadzenie Secure SDLC w takiej firmie jak gigant z Redmond było i jest bardzo kosztowne. Musiało wyniknąć z samej góry (Bill Gates) i tylko z jej błogosławieństwem miało/ma szansę powodzenia. MS to bardzo duża firma i może nie być najlepszym przykładem w naszych warunkach, ale chciałbym powiedzieć, że da się to zrobić bez bardzo dużych kosztów. Ba, one się nawet zwrócą. Przynajmniej do czasu zanim nie trafi się na firmę, która będzie chciała na tym duuuużo zarobić.

Całkiem możliwe, że znajdzie się sporo osób o odmiennym zdaniu, jeżeli tak to bardzo serdecznie zapraszam do komentowania tego wpisu - w ten sposób mam nadzieję uda się zrobić coś dobrego dla nas wszystkich, którzy korzystają później z takich aplikacji.

Podsumowując, nie chcę i nie obarczam programistów winą za błędy bezpieczeństwa w aplikacji. Uważam, że w większości przypadków nie ma odpowiedniej organizacji ich pracy co skutkuje często mniejszymi/większymi katastofami. Nie zwalniam z odpowiedzialności za tą sytuację osoby zajmujące się bezpieczeństwem, chociaż i oni czasami nie są przygotowani do tematu bezpieczeństwa aplikacji. Natomiast od kogoś musi to wyjść.

PS
Tak się stało, że od grudnia 2009 jestem nowym liderem OWASP Poland Local Chapter. Kilka miesięcy temu, aktualny wtedy lider - Andrzej Targosz, poinformował mnie, że nie będzie miał czasu na aktywne prowadzenie Chapteru i czy nie jestem zainteresowany przejęciem go. Ku mojej uciesze, drugi ze współzałożycieli OWASP Poland - Robert Pająk, wskazał mnie jako osobę, do której mógłby trafić oddział. Chociaż początkowo odmówiłem to po kilku miesiącach stwierdziłem, że warto spróbować. Serdecznie zapraszam na spotkania OWASP Poland! Tam dowiecie się tego jak nie być koniem i jak tworzyć bezpieczne aplikacje webowe!

6 komentarze:

XANi pisze...

Podstawowy problem to to że ich szefowie (tzn. Ci co mówią im co robić i za co im zapłacą) myślą o security dopiero gdy się "sparzą", albo myślą na zasadzie "ale przecież nikt nam złośliwie nie wpisze ' OR 1=1'".
A dopiero gdy przez wpadkę firma poniesie straty to zaczyna się nagonka na winnych ;].
Z drugiej strony porgramowanie czegoś pod security różni się sporo od zwykłego "popisywania", większość programistów rzeczywiście nie ma pojęcią co może spowodować np. podatność na XSS. Ale z drugiej strony napisanie funkcji walidujących dane wejściowe nie jest takie trudne i nie wymaga specjalistycznej wiedzy.

Przemyslaw Skowron (rezos) pisze...

@XANi:

Tak, nie jest to specjalnie trudne. Nawet bym powiedziałem, że programiści często piszą dużo trudniejsze fragmenty kodu. Za to zgodzę się ze zdaniem kilku znanych mi konsultantów, że usunięcie XSS'a z dużej aplikacji może już do prostych zadań nie należeć.

Paweł Goleń pisze...

Niedoświadczony kierowca bez uprawnień zwykle nie kieruje cysterną pełną niebezpiecznej substancji, nie prowadzi autobusu, nie (...). Niestety, podobnego stwierdzenia w odniesieniu do niedoświadczonych programistów zastosować nie można. I to mnie trochę przeraża...

Robert pisze...

Rozmawiając z ponad 30 firmami tworzącymi aplikacje na temat bezpieczeństwa ich produktów, testowania w trakcie tworzenia, dowiedziałem się wielu ciekawych rzeczy, mianowicie:
- szef każe nam napisać aplikację szybko, więc nie ma czasu na testy bezpieczeństwa
- bezpieczeństwo? Przecież nasze aplikacje są bezpieczne bo korzystamy z co najmniej 3-4 języków na raz
- chciałbym zabezpieczać aplikacje tworzone w naszej firmie, ale szef nie da kasy na aplikację do testowania...

etc. z tych wszystkich firm, tylko jeden człowiek, powiedział, że bardzo jest zainteresowany takim tematem, że szukają aplikacji do analizy ich aplikacji etc. Ale po 5 latach działalności czy to nie za późno o jakieś .... 5 lat? Chociaż lepiej późno niż wcale.

pozdrawiam

Przemyslaw Skowron (rezos) pisze...

@Robert:

Bardzo ciekawy komentarz. Czy możesz coś więcej powiedzieć o tych ponad 30 firmach? Z jakiego kraju pochodzą, dla jakiej części globu pracują, kto jest ich klientem (choćby sektorami podaj). Z góry dzięki za każde informacje :)

Robert pisze...

Uzupełnienie:

Przemysławie, co do firmy, wszystkie były z Polski. Były to firmy zarówno małe (kilku programistów i szef) a także większe (zatrudnienie w okolicach 40-60 osób). Przerażający jest fakt, że podchodzą do zagadnień bezpieczeństwa swoich produktów z taką beznamiętną ignorancją. Zajmując się bezpieczeństwem, sam oczekiwałbym od każdej z tych firm, żeby chociaż przetestowała swoje aplikacje (np. internetowe) pod kątem możliwości wykonania ataków, ale jak widać, płacąc za produkt, nie koniecznie dostaje się to na co się liczy (z punktu widzenia funkcjonalnego może i tak, ale z punktu ryzyka użytkowania i przetwarzania danych, już nie do końca).

Co do Klientów tych firm, najciekawsze jest to, że widziałem na stronach referencje np. dużych firm przemysłowych, operatorów transportowych, nawet firm ubezpieczeniowych czy finansowych o bankach nie wspominając.

Pytanie jakie nasuwa się w takim momencie to czy wszyscy Klienci tych firm, podeszli do zagadnienia bezpieczeństwa z taką samą ignorancją, jak twórcy aplikacji?

Jako firma zajmująca się bezpieczeństwem staramy sie propagować bezpieczeństwo. Nawet w ofercie mamy rozwiązania służące analizie poziomu bezpieczeństwa czy to infrastruktury sieciowej, czy aplikacji. Ale jak widać, inni muszą dorosnąć do tego, aby zrozumieć, że takie rozwiązania są im potrzebne.

Szczęśliwego nowego roku i oby był on bardziej bezpieczny od 2009 :)