Bezpieczeństwo WebAplikacji

Prelegent: Tomasz Banasiak

Bezpieczeństwo WebAplikacji

Runda początkowa!

Jakie znacie zagrożenia dla WebAplikacji?

Bezpieczeństwo WebAplikacji

Agenda

  • Zagrożenia na poziomie infrastruktury
  • Zagrożenia na poziomie kodu - backend
  • Zagrożenia na poziomie kodu - frontend
  • Zagrożenia na pozomie człowieka: użytkownika, redaktora, administratora 

Bezpieczeństwo WebAplikacji

Zagrożenia dla infrastruktury

Bezpieczeństwo WebAplikacji

Distributed Denial Of Service

Skutki:

  • Przeciążenie infrastruktury serwerowej
  • Brak dostępu do aplikacji przez klientów
  • Potencjalne wycieki pamięci

 

Przeciwdziałanie:

  • Poprawna konfiguracja serwerów (firewalle, balancery)
  • Narzędzia anty-ddos (np. CloudFlare)
  • Dystrybucja serwerów na wiele podsieci

Bezpieczeństwo WebAplikacji

0days

Skutki:

  • Wykorzystanie błędów w oprogramowaniu do przejęcia kontroli nad serwerem
  • Wyłączenie lub zablokowanie serwera lub usługi
  • Kradzież danych

 

Przeciwdziałanie:

  • Poprawna konfiguracja serwerów (strategia)
  • Regularna (automatyczna) aktualizacja oprogramowania
  • Zasada ograniczonego zaufania

Bezpieczeństwo WebAplikacji

Ataki hakerskie

Skutki:

  • Przejęcie kontroli nad infrastrukturą IT
  • Wykorzystanie infrastruktury do działalności przestępczej
  • Kradzież danych, wyłączanie usług, podmiana witryny..

 

Przeciwdziałanie:

  • Poprawna konfiguracja serwerów (dostępy, zabezpieczenia)
  • Regularna (automatyczna) aktualizacja oprogramowania
  • Zasada ograniczonego zaufania, minimalny dostęp

Bezpieczeństwo WebAplikacji

Zagrożenia dla backendu

Bezpieczeństwo WebAplikacji

Upload plików

Skutki:

  • Potencjalne ryzyko uruchomienia złośliwego kodu
  • Celowe zużycie dostępnej przestrzeni dyskowej
  • Rozprzestrzenianie złośliwego oprogramowania

 

Przeciwdziałanie:

  • Sprawdzony walidator przesłanych danych
  • Upload do zewnętrznego serwera, np. CDN
  • Zasada ograniczonego zaufania

Bezpieczeństwo WebAplikacji

Przykład

// Check if only image has been uploaded
if (!preg_match('/^[a-zA-Z0-9\-\.\_]{2,100}\.(jpg|gif|png)/i', $fileName)) {
	throw new Exception('Unsupported file type!');
}
  • picture.jpg
  • some-Other_picture09.png
  • some-nasty-code.jpg.php

Bezpieczeństwo WebAplikacji

SQL Injection

Skutki:

  • Kradzież lub uszkodzenie danych
  • Nadanie sobie uprawnień (np. admina)
  • Modyfikacja zachowania oprogramowania

 

Przeciwdziałanie:

  • Korzystanie ze sprawdzonego ORM
  • Walidacja każdej danej wykorzystywanej w SQL
  • Rzutowanie typów

Bezpieczeństwo WebAplikacji

Przykład

$stmt = $db->prepare('SELECT * FROM table WHERE AND name = ?');
$stmt->bindValue(1, $this->input->get('name'), PDO::PARAM_STR);
$stmt->execute();
$stmt = $db->prepare('SELECT * FROM table WHERE name = ? ' 
        . ($this->input->get('age') ? ' OR age = ' . $this->input->get('age') : ''));
$stmt->bindValue(1, $this->input->get('name'), PDO::PARAM_STR);
$stmt->execute();

http://app.com/api/get?name=.&age=1 OR 1=1

SELECT * FROM table WHERE name = '.' OR age = 1 OR 1=1

Bezpieczeństwo WebAplikacji

Błędy w logice aplikacji

Skutki:

  • Wykonywanie niedozwolonych akcji
  • Uszkodzenie danych
  • Wycieki pamięci, przeciążenie usług 

 

Przeciwdziałanie:

  • Testowanie kodu pod kątem bezpieczeństwa
  • Używanie sprawdzonych wzorców projektowych
  • Code-Review, audyty bezpieczeństwa

Bezpieczeństwo WebAplikacji

Kontrola dostępu

Skutki:

  • Wykonywanie niedozwolonych akcji
  • Kradzież danych
  • Dostęp do zabezpieczonych części aplikacji 

 

Przeciwdziałanie:

  • Użycie sprawdzonego wzorca autoryzacji
  • Testy bezpieczeństwa
  • Code-Review, audyty bezpieczeństwa

Bezpieczeństwo WebAplikacji

Przykład

$adminRole = ADMIN_NULL;
if ($this->input->post('user') == 'admin' && $this->checkAdminPassword($_POST['password'])) {
	$adminRole = ADMIN_ADMIN;
}

if ($this->input->post('log_in_as_a_user') {
	$adminRole = ADMIN_USER;
}

Bezpieczeństwo WebAplikacji

Boty, automaty

Skutki:

  • Wielokrotne duplikowanie wykonywanych akcji
  • Crawling, czyli kradzież informacji
  • Próby dodania niechcianych informacji (spamu) 

 

Przeciwdziałanie:

  • CSRF
  • Zabezpieczenie przed wielokrotnymi requestami
  • Logowanie podejrzanych zachowań

Bezpieczeństwo WebAplikacji

Zagrożenia dla frontendu

Bezpieczeństwo WebAplikacji

Modyfikacja parametrów

Skutki:

  • Wykonywanie akcji nie przewidzianych we froncie
  • Wstrzykiwanie fałszywych danych do aplikacji
  • Uzyskanie nieautoryzowanego dostępu do danych 

 

Przeciwdziałanie:

  • Walidacja wszystkich przychodzących danych
  • Walidacja uprawnień dla każdego requestu
  • Dbanie o brak wskazówek dla atakującego

Bezpieczeństwo WebAplikacji

Sniffning

Skutki:

  • Podsłuchiwanie wrażliwych danych
  • Ataki man-in-the-middle
  • Przechwycenie danych autoryzacyjnych 

 

Przeciwdziałanie:

  • Użycie SSL dla wrażliwych części aplikacji
  • Trzymanie wrażliwych danych po stronie serwera
  • Autoryzacja za pomocą bezpiecznych tokenów

Bezpieczeństwo WebAplikacji

Zagrożenia dla użytkownika końcowego 

Bezpieczeństwo WebAplikacji

Clickjacking

Skutki:

  • Wykonywanie akcji "w imieniu" użytkownika
  • Rozprzestrzenianie informacji bez wiedzy użytkownika
  • Użycie uprawnień użytkownika do przejęcia aplikacji

 

Przeciwdziałanie:

  • Analiza wystawionych publicznie metod
  • Zabezpieczanie akcji tokenami / cookies
  • Edukacja użytkowników

Bezpieczeństwo WebAplikacji

Pishing

Skutki:

  • Kradzież danych użytkownika
  • Wykonywanie akcji "w imieniu użytkownika"
  • Wprowadzenie użytkownika w błąd

 

Przeciwdziałanie:

  • CSRF
  • SSL
  • Edukacja użytkowników

Bezpieczeństwo WebAplikacji

Podsumowanie

  • Zabezpieczenia na poziomie architektury aplikacji
  • Sprawdzona metoda kontroli dostępów
  • Dobry zespół Administratorów
  • Brak zaufania do przesłanych danych
  • Testy i kontrola jakości

Bezpieczeństwo WebAplikacji

Dziękuję za uwagę!

Kontakt ze mną:

E-mail: tomasz.banasiak@rst.com.pl

WEB:    http://banasiak.pro

Bezpieczeństwo WebAplikacji

By Tomasz Banasiak

Bezpieczeństwo WebAplikacji

  • 939