Jak odpowiednio przygotować program nauczania bezpieczeństwa aplikacji WWW? Jest to bardzo ważne zagadnienie, ponieważ zapotrzebowanie na usługi związane z zabezpieczaniem aplikacji internetowych stale rośnie. To zagadnienie na tapet wzięli naukowcy z Polsko-Japońskiej Akademii Technik Komputerowych w Warszawie wraz z naukowcami z UMCS. Miałem przyjemność być w gronie osób, które pracowały nad tym problemem. Razem z zespołem naukowców z Uniwersytetu Marii Curie-Skłodowskiej, czyli dr. Katarzyną Mazur, dr. Markiem Miśkiewiczem oraz specjalistą ds. cyberbezpieczeństwa dr. Damianem Rusinkiem, opracowaliśmy metodę nauczania bezpieczeństwa aplikacji WWW bazującą na systemie w ramach konwencji CTF, czyli Capture the Flag.

Dlaczego temat nauczania bezpieczeństwa aplikacji WWW jest dzisiaj tak ważny?

Ponieważ aplikacje internetowe są powszechnie używane. Prawie każdy korzysta z tej formy interakcji ze światem cyber. Podczas lockdownów spowodowanych pandemią rozkwitł e-handel i szereg usług, które przeniosły się do Internetu. Przez ostatnie dwa lata mogliśmy obserwować boom w sektorze aplikacji WWW. Zapotrzebowanie na aplikacje internetowe wzrosło kilkukrotnie. I co to spowodowało? Jeżeli weźmiemy pod uwagę sytuację jaka wystąpiła na rynku czyli wysokie zapotrzebowanie na aplikację i małą liczbę programistów, którzy są w stanie pracować nad takimi aplikacjami to zobaczymy, że powoduje to pewne problemy. Najczęściej problemy związane były z bezpieczeństwem aplikacji WWW. W związku z dużym zapotrzebowaniem aplikacje były tworzone bardzo szybko, często w oparciu o gotowe rozwiązania systemowe. W związku z deficytem programistów na rynku, nie było osób, które mogłyby dobrze przetestować te aplikacje pod kątem bezpieczeństwa. Brak odpowiedniej liczby specjalistów ds. bezpieczeństwa aplikacji hamuje postęp technologiczny. Firmy z sektora IT przyznają, że jest to jeden z hamulców, który najmocniej spowalnia rozwój. Jeśli sprawdzimy ogłoszenia o pracę to zauważymy ogromne zapotrzebowanie na specjalistów ds. cyberbezpieczeństwa. Obserwując programy nauczania stosowane obecnie na uniwersytetach możemy zauważyć, że nie są one dopasowane do zapotrzebowania na rynku. Programy akademickie dotyczą aspektów teoretycznych zaś rynek potrzebuje przede wszystkim osób, które mają doświadczenie z praktycznymi aspektami (w tym wypadku cyberbezpieczeństwa).

Potrzeba matką wynalazku

Jedną z motywacji do stworzenia CyberSkillera była potrzeba wprowadzenia do programu nauczania aspektów praktycznych. Ucząc cyberbezpieczeństwa bardzo często zastanawiałem się jak mogę przekazać uczniom czy studentom praktyczne zagadnienia. Tak, żeby studenci uczyli się praktycznych zagadnień, a nauka nie sprowadzała się wyłącznie do nudnej teorii. Chciałem pokazać prawdziwe cyberbezpieczeństwo, stworzyć cyberpoligon gdzie uczniowie mogliby szlifować swoje umiejętności praktyczne. Stworzyliśmy więc laboratorium z 2 kursami (Linux i bezpieczeństwo aplikacji WWW), które umożliwiało ćwiczenie praktycznych umiejętności cyberbezpieczeństwa. Tak właśnie powstał CyberSkiller.

Jakie są globalne standardy bezpieczeństwa aplikacji WWW?

Gdy mówimy o bezpieczeństwie aplikacji WWW to standardem w tej dziedzinie jest OWASP (Open Web Application Security Project). OWASP koncentruje się na aspektach bezpieczeństwa aplikacji WWW i przedstawia je w formie TOP Listy. Lista jest niejako przewodnikiem osoby, która tworzy aplikacje internetowe; wskazuje na jakie zagadnienia programista powinien zwrócić uwagę. TOP Lista zmienia się co kilka lat; wraz z wykryciem sposobów wykorzystywanych do łamania systemów zabezpieczeń aplikacji internetowych. Zmiany wprowadzane są także w oparciu o ankiety, które skierowane są do specjalistów ds. cyberbezpieczeństwa. Zagadnienia przetasowują się (numer jeden może stać się numerem pięć), a także pojawiają się nowe zagadnienia. W 2021 roku pojawiła się aktualizacja listy, na której znalazły się dwa nowe zagadnienia (numer 9 i 10 na liście). Na jakie zagadnienia zwraca uwagę OWASP?

1. Broken access control– Sposób w jaki można przełamać zasady kontroli dostępu do aplikacji WWW, które przygotowali jej twórcy.

2. Cryptographic failures Problemy dotyczące kryptografii. Dotyczy to całego kryptosystemu czyli implementacji poszczególnych algorytmów i konfiguracji poszczególnych elementów składowych dotyczących stosowania kryptografii. 

3. InjectionsRóżnego rodzaju wstrzykiwania dokonywane do bazy danych aplikacji. Najpopularniejsze z nich to SQL Injection, ale występują też inne rodzaje wstrzykiwań. OWASP wskazuje te rodzaje.

4. Insecure designZagadnienie dotyczące budowania bezpieczeństwa całej architektury aplikacji WWW. Na etapie tworzenia wymogów funkcjonalnych i wymogów bezpieczeństwa powinni być obecni specjaliści ds. cyberbezpieczeństwa, którzy zadbają o wykrycie ewentualnych luk w systemach bezpieczeństwa aplikacji już na etapie ich planowania. 

5. Security misconfiguration– Błędy w konfiguracji. Dotyczy to stosowania domyślnych ustawień bezpieczeństwa w implementowanych do aplikacji modułach. Bezpieczeństwo modułów powinno być dopasowane do bezpieczeństwa całej aplikacji, tak aby zmniejszyć podatności na ataki. 

6. Vulnerable and outdated componentsDotyczy problemów podczas implementacji modułów. Należy sprawdzić czy zaimplementowane moduły spełniają aktualne standardy zabezpieczeń. Jeżeli moduły będą przestarzałe sprawi to, że będą bardziej podatne na ataki. 

7. Identification and authentication failuresBłędy dotyczące uwierzytelaniania podczas dostępu do aplikacji.

8. Software and data integrity failuresBłędy dotyczące integralności danych. Zgodności danych obecnych w systemie z pożądanym stanem.

9. Security logging and monitoring failuresDotyczy prowadzenia dziennika aktywności w systemie. Sprawdzenia jakie zdarzenia miały miejsce, a następnie wnioskowanie czy dane zdarzenie było nadużyciem.
10. Server-side request forgeryDotyczy próby oszustwa i modyfikacji zapytań po stronie serwera.

Przygotowany na PJATK program nauczania bezpieczeństwa aplikacji WWW został oparty na zagadnieniach z OWASP.

Wszystkie zagadnienia zostały przygotowane w formie zadań praktycznych umieszczonych na platformie CyberSkiller. Studenci mogli rozwiązywać te zadania na cyberpoligonie i obserwować jak w rzeczywistości działają pewne słabości oprogramowania. Program ten został wprowadzony w ramach przedmiotu BSI (bezpieczeństwo systemów informatycznych) na Polsko-Japońskiej Akademii Technik Komputerowych w Warszawie. Były to studia stacjonarne, a przedmiot BSI prowadzony jest na 5 semestrze. W programie wzięło udział 250 studentów. Wszystkie zadania były umieszczone na platformie CyberSkiller dzięki czemu studenci mogli je rozwiązywać zarówno w siedzibie PJATK jak i poza nią. Podczas analizowania danych zauważyliśmy, że zadania były rozwiązywane 7 dni w tygodniu w różnych godzinach. To pokazuje, że każdy student ma swój rytm, w którym lubi pracować. Ważnym elementem programu było to, że zadania zostały zaprojektowane w formule CTF. W każdym zadaniu była ukryta flaga, którą student musiał znaleźć. Jakie efekty przyniósł program?

Nowy program nauczania spodobał się studentom

W sumie studenci rozwiązali zadania ponad 26 tysięcy razy. Średnio w laboratorium spędzali 17 godzin. Zapytaliśmy studentów o opinię dotyczącą programu nauczania. W odpowiedziach studenci wskazywali, że bardzo lubili pracować w formule CTF przy pomocy platformy CyberSkiller. Studenci mieli bardzo dużą satysfakcję z procesu uczenia się. Właśnie na takim efekcie nam zależało. Na budowaniu zaangażowania w proces nauki i osiągania z niego satysfakcji, gdyż pomaga to w zapamiętywaniu informacji. Studenci chwalili program nauczania: 

“Jestem pod wrażeniem platformy i sposobu nauczania. Z dosyć nudnej teorii zrobiono świetną zabawę, która przyda się każdemu w informatyce, ale też w życiu wśród komputerów”. Świetna zabawa jest kluczem. Należy dać uczniom rozrywkę podczas opracowywania trudnych tematów aby zbudować zaangażowanie. Uczniowie mają wtedy ciągłą motywację do pracy.

“Uważam, że to najlepszy przedmiot na uczelni, ponieważ w przystępny oraz praktyczny sposób podchodzi do zagadnienia. Jak dla mnie nauka na błędach (nieprawidłowo zabezpieczonych stronach) jest najlepszym sposobem nauki. Zawsze bardzo doceniam innowacje i w tym momencie jestem bardzo zachwycony sposobem prowadzenia zajęć z BSI. CyberSkiller to bardzo ciekawe narzędzie, które powinno być wykorzystywane na innych przedmiotach”  

“Według mnie to jest bardzo dobry sposób na realizację zajęć, studenci mogą zrobić zadania wybranym przez siebie czasie. Można wykonywać je tydzień po tygodniu bądź za jednym razem. Wszyscy zadowoleni”

“Projekt CyberSkiller za bardzo udany, zachęcająca platforma i ciekawe zadania oraz bardzo dobre materiały pomocnicze” Ta opinia wskazuje na bardzo ważne zagadnienie- materiały pomocnicze. 

“Jest to dla mnie świetna inicjatywa. Przed pierwszymi zajęciami BSI byłem bardzo sceptycznie nastawiony co do tego przedmiotu. Dzięki wykorzystaniu platformy CyberSkiller zmieniło się o 180 stopni. Wręcz zachęciło to do rozwijania się na tej ścieżce kariery”. Pamiętam jak kilka lat temu spośród grupy 200 studentów tylko kilka osób było zainteresowanych ścieżką kariery w cyberbezpieczeństwie. Obecnie jest to znacznie więcej osób.

“Bardzo fajna inicjatywa pomagająca zrozumieć cyberbezpieczeństwo z praktycznej strony. Dzięki niej zainteresowałem się bardziej tym tematem”

Materiały pomocnicze mają znaczenie

Warto zwrócić uwagę na materiały pomocnicze stosowane w programie nauczania. Podczas nauczania cyberbezpieczeństwa (ale nie tylko cyberbezpieczeństwa, zjawisko to ma miejsce podczas nauczania wielu innych zagadnień) nie można oczekiwać od uczniów samodzielnego wyszukiwania materiałów pomocniczych. Tworzy to spory próg wejścia, przez co wiele osób rezygnuje z dalszej nauki już na tym etapie. Materiały pomocnicze muszą być także łatwe do zrozumienia, tak aby uczeń nie zniechęcił się przytłoczony ilością koniecznej do przyswojenia wiedzy. Warto także zadbać o gotowe działające narzędzia pracy. Jeżeli uczniowie sami będą musieli zadbać o narzędzia to mogą się zniechęcić przez częste problemy techniczne. Platforma CyberSkiller pomaga rozwiązać wszystkie te problemy. Zintegrowane narzędzia sprawiają, że uczniowie nie mają problemów technicznych. Dostępne na platformie materiały pomocnicze są łatwe w zrozumieniu, a także podzielone tak aby jak najbardziej pomagały w nauce. Dodatkowo platforma posiada podpowiedzi w formie wideo, które prowadzą ucznia krok po kroku przez rozwiązanie zadania. Uczeń poprzez powtórne oglądanie wideo może nauczyć się sposobu w jaki zadanie powinno być rozwiązane. Uczniowie którzy pracują z platformą CyberSkiller, podkreślają, że sposób jej funkcjonowania pomaga im w codziennej nauce i wpływa pozytywnie na ich umiejętności.

Wnioski z sugerują dalsze działania

Wróćmy do wyników programu. Wraz z trwaniem kursu widoczny był wzrost zaangażowania studentów. Na początku liczba godzin jakie grupa spędziła na rozwiązywaniu zadań wynosiła około 1000. Na końcu kursu ta liczba wynosiła już około 7000. Widać było liniowy wzrost zaangażowania. Na początku studenci poznawali platformę, co przełożyło się na małą ilość pracy. Wraz z poznaniem platformy i wzrostem umiejętności temat (bezpieczeństwo aplikacji WWW) coraz bardziej ich interesował, przez co spędzali więcej czasu na rozwiązywaniu zadań. 
Podczas analizy wyników zauważyliśmy, że odpowiednie oznaczenie poziomu trudności zadań jest kluczowe. Poziom trudności zadania był określany przed rozpoczęciem kursu przez eksperta. Trudność zadania była definiowana w 10 stopniowej skali oznaczanej gwiazdkami (w tym kursie najtrudniejsze zadanie miało poziom trudności równy 5 gwiazdkom). Anonimowe dane zbierane przez platformę pozwalają sprawdzić średni czas spędzany przez studenta na rozwiązywaniu zadania, a także średnią liczbę prób rozwiązania. Analiza wyników wykazała, że oznaczony przed rozpoczęciem kursu przez eksperta poziom trudności zadania musi być aktualizowany. Zauważyliśmy, że występowały przypadki, w których na rozwiązanie zadania posiadającego jedną gwiazdkę trudności studenci potrzebowali tyle samo prób jak na rozwiązanie zadań z poziomem trudności 4 lub 5 gwiazdek. Podobna zależność działa też w drugą stronę. Zadania oceniane jako trudne studenci rozwiązywali bez większych problemów. Aktualizowanie oceny poziomu trudności zadań jest więc konieczne. Pracujemy obecnie nad algorytmem, który będzie analizował czas i ilość prób potrzebnych do rozwiązania zadania, a następnie dopasowywał poziom trudności. Jeżeli zadanie w kursie na początku ma poziom 4 gwiazdek to po danym czasie może zmienić swój poziom trudności, dostosowując go do wyników analizy zebranych danych. Czas jaki student poświęca na rozwiązanie zadań, co jest bezpośrednio skorelowane z poziomem trudności jest niezwykle ważny z punktu widzenia nauczyciela. Jeżeli wiemy ile czasu uczeń będzie potrzebował na rozwiązanie zadania będziemy mogli dopasować przypisaną tygodniowo ilość zadań do rozwiązania do poziomu uczniów. Pozwala to stworzyć zbalansowany system nauki, który wspiera efektywność i zaangażowanie uczniów.

Podsumowanie

Nauczanie bezpieczeństwa aplikacji WWW jest niezwykle ważne. Aby odpowiednio nauczać takich zagadnień potrzebujemy programu nauczania, który będzie dopasowany do standardów rynkowych. Warto zwrócić też uwagę na dopasowanie poziomu programu nauczania do wiedzy uczniów, tak aby wyeliminować progi wejścia, które mogłyby zniechęcać uczniów do pracy. Musimy zadbać o jakość szkolenia programistów, gdyż to oni tworzą otaczający nas cyberświat i bezpośrednio wpływają na jego bezpieczeństwo. A bezpieczna cyberprzestrzeń to bezpieczny świat.

.