Podsumowanie XXXV spotkania SPINu

Podsumowanie XXXV spotkania SPINu
XXXV spotkanie SPINu już za nami. Ponownie Paweł Goleń wprowadził nas w tematykę testowania bezpieczeństwa aplikacji internetowych. Tym razem jednak, zamiast typowej prezentacji, Paweł przygotował dla nas garść cennych informacji, którymi chcielibyśmy się z Wami podzielić i które znajdziecie poniżej:

 

1. Przykładowe projekty z posianymi błędami:
- OWASP WebGoat:
http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
- OWASP Broken Web Applications Project
http://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project

Aplikacje udostępniane w tych dwóch powyższych projektach można pobrać do siebie i spokojnie na nich ćwiczyć.

2. Materiały publikowane przez projekt OWASP
- Listy OWASP Top10, wersja aktualna to OWASP Top 10 2010: http://www.owasp.org/index.php/Top_10_2010

Jest to ważna i pouczająca lektura, choć w obecnej wersji może wydać się nieco zbyt sformalizowana.

Można też przyglądnąć się wcześniejszym wydaniom tej listy:
http://www.owasp.org/index.php/Top_10_2004
http://www.owasp.org/index.php/Top_10_2007

Wcześniejsze wersje mogą być łatwiejsze do przyswojenia, przynajmniej na samym początku.

3. Opracowanie 'Top 25 Most Dangerous Software Errors'
2010 CWE/SANS Top 25 Most Dangerous Software Errors: http://cwe.mitre.org/top25/

To opracowanie Paweł poleca przede wszystkim programistom, choć również dla osób testujących przydatna jest wiedza skąd biorą się błędy.

4. OWASP Testing Guide
Wracając do dokumentów udostępnionych przez OWASP, dla osób zainteresowanych testowaniem bezpieczeństwa dostępny jest dokument OWASP Testing Guide: http://www.owasp.org/index.php/OWASP_Testing_Project

To bardzo dobre wprowadzenie odnośnie tego, jak szukać typowych błędów. Informacje zawarte w wymienionych wyżej materiałach pozwolą rozpocząć przygodę z testowaniem bezpieczeństwa aplikacji, najpierw tych przykładowych. Znalezienie ciekawej dziury to naprawdę niezła frajda!

5. OWASP ASVS
Na spotkaniu Paweł starał się pokazać różnicę między szukaniem błędów (podatności) a weryfikacją poprawności (mechanizmów bezpieczeństwa) w aplikacji. Wspominał o liście OWASP ASVS. Opis projektu, jak i sama lista, dostępna jest tutaj:
http://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project

My w naszej pracy zwykle operujemy na poziomie drugim (Level 2), konkretnie na Level 2A - Security Test, choć przegląd kodu źródłowego, nawet częściowy, ma swoje ogromne zalety wówczas mówimy o poziomie 2B - Code Review.

Oczywiście na sprawdzeniu tej listy testy się nie kończą, przynajmniej nie w każdym przypadku. Ważna jest również identyfikacja zagrożeń, weryfikacja scenariuszy ataków czy weryfikacja błędów w logice biznesowej aplikacji.

6. Procesy budowania oprogramowania a bezpieczeństwo
Podczas spotkania Paweł wspominał też o różnych propozycjach modyfikacji procesów tworzenia oprogramowania po to, by bezpieczeństwo było wbudowane w
aplikacje od samego początku ich tworzenia.
- Microsoft SDL: http://www.microsoft.com/security/sdl/
- OWASP OpenSAMM: http://www.opensamm.org/
- Building Security In Maturity Model: http://bsimm.com/

Warto rzucić okiem na pomysły tam prezentowane. Interesujące może być self assessment, przykładowe ankiety dostępne są dla MS SDL i OpenSAMM:
- Dla MS SDL (jeden z dokumentów): http://www.microsoft.com/security/sdl/getstarted/assess.aspx
- Dla OpenSAMM: http://www.opensamm.org/download/
W szczególności:
http://www.opensamm.org/downloads/resources/20090925-SAMM-Assessment-v0.4.xls
http://www.opensamm.org/downloads/resources/20090607-SAMMAssessmentInterviewTemplate-1.0.xls

Można na początku zorientować się gdzie nasza organizacja znajduje się w tej chwili. Materiałów tam prezentowanych nie trzeba traktować jako wyroczni, warto jednak zapoznać się z ich ogólnymi pomysłami.

7. Technika Stride-per-element
Paweł krótko pokazywał również technikę Stride-per-element. Bardziej rozbudowane przykłady:
- Uncover Security Design Flaws Using The STRIDE Approach: http://msdn.microsoft.com/en-us/magazine/cc163519.aspx
- Getting Started With The SDL Threat Modeling Tool: http://msdn.microsoft.com/en-us/magazine/dd347831.aspx
- Application Threat Modeling: http://www.owasp.org/index.php/Application_Threat_Modeling, http://www.owasp.org/index.php/Application_Threat_Modeling#STRIDE

8. Spotkania OWASP
Paweł wspominał również o spotkaniach OWASP. Adres strony polskiego chapteru: http://www.owasp.org/index.php/Poland
Paweł lojalnie jednak uprzedza, że aktywność OWASP aktualnie jest w pewnym kryzysie, jednak dla zachęty kilka prezentacji ze spotkań:
- Marcowe spotkanie OWASP - PHP
[video]: http://www.varlog.pl/2010/03/marcowe-spotkanie-owasp-php-video/
- Majowe spotkanie OWASP
[video]: http://www.varlog.pl/2010/06/majowe-spotkanie-owasp-video/
- Czerwcowe spotkanie OWASP
[video]: http://www.varlog.pl/2010/06/czerwcowe-spotkanie-owasp-video/

9. Backdoor
Jeśli kogoś zainteresował przykład próby ukrycia backdoora korzystając z "drobnej" różnicy między uid == 0 i uid = 0, to więcej informacji na ten temat można znaleźć tu: Linux: Kernel "Back Door" Attempt: http://kerneltrap.org/node/1584

10. Ataki czasowe
Paweł wspominał też o atakach czasowych wynikających z drobnych różnic w czasie wykonania operacji takich jak porównanie. Tu praktyczny przykład ataku na Java Server Faces: http://netifera.com/research/

A tu potężna dawka teorii:
- Automated Padding Oracle Attacks with PadBuster
http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/
- Timing-independent array comparison
http://rdist.root.org/2010/01/07/timing-independent-array-comparison/


Wielkie podziękowania dla Pawła i za spotkanie i za podsumowanie.
 

To powinno Cię zainteresować