Pixy - analiza statyczna skryptów PHP

Podobne dokumenty
TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

KARTA PRZEDMIOTU. Programowanie aplikacji internetowych

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

Należy ściągnąć oprogramowanie Apache na platformę

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

Wybrane działy Informatyki Stosowanej

Baza danych sql. 1. Wprowadzenie

Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Szczegółowy opis zamówienia:

Języki programowania wysokiego poziomu. Blog

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Języki programowania wysokiego poziomu. Ćwiczenia

Zapisywanie algorytmów w języku programowania

WYMAGANIA EDUKACYJNE. Witryny i Aplikacje Internetowe klasa I

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

E-commerce. Genialnie proste tworzenie serwisów w PHP i MySQL.

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Projektowani Systemów Inf.

Oracle11g: Programowanie w PL/SQL

Podstawy technologii WWW

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Wymagania edukacyjne z przedmiotu Witryny i aplikacje internetowe klasa 2iA. tworzenia stron. animację - multimedia

Wstęp. Ale po co? Implementacja

REFERAT PRACY DYPLOMOWEJ

Java EE produkcja oprogramowania

Java jako język programowania

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

KARTA KURSU. Języki hipertekstowe i tworzenie stron WWW. Opis kursu (cele kształcenia) Warunki wstępne. Efekty kształcenia. Nazwa

Archiwum DG 2016 PL-SOFT

Bezpieczne udostępnianie usług www. BłaŜej Miga Zespół Bezpieczeństwa PCSS

Języki programowania wysokiego poziomu. Forum

REFERAT PRACY DYPLOMOWEJ

Kompilator języka C na procesor 8051 RC51 implementacja

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

PRZEWODNIK PO PRZEDMIOCIE

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Spis treści. Część I Wprowadzenie do pakietu oprogramowania Analysis Services

Bezpieczeństwo systemów komputerowych

Oracle10g: Programowanie w PL/SQL

PyPy's Approach to Virtual Machine Construction

SQL Server Analysis Services Procedury składowane. Grzegorz Stolecki

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

Full Stack JavaScript z Angular i Nest. Dni: 5. Opis: Adresaci szkolenia

Bazy danych i strony WWW

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

OpenLaszlo. OpenLaszlo

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Tworzenie oprogramowania

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

media Blitz wydajne sytemy szablonów

Podstawy programowania obiektowego

Specyfikacja implementacyjna aplikacji serwerowej

Aspekty bezpieczeństwa aplikacji internetowych

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Programowanie Komponentowe WebAPI

Internetowa ogólnopolska baza informatycznych projektów badawczych otwartej innowacji Platforma współpracy SPINACZ 1/46

Informacja o firmie i oferowanych rozwiązaniach

Smarty PHP. Leksykon kieszonkowy

Programowanie obiektowe

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Drzewo wad (2) Dodatkowo możliwe jest przypisanie maszyny/ urządzania/źródła dla każdej z faz procesu

Część I Rozpoczęcie pracy z usługami Reporting Services

Baza danych do przechowywania użytkowników

Wprowadzenie do programowania aplikacji mobilnych

Wymagania edukacyjne: Statyczne witryny internetowe (na podstawie programu nr )

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

6. Bezpieczeństwo przy współpracy z bazami danych

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Witryny i aplikacje internetowe

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Imię, nazwisko i tytuł/stopień KOORDYNATORA (-ÓW) kursu/przedmiotu zatwierdzającego protokoły w systemie USOS Dr Adam Naumowicz

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Aplikacje RMI

Skuteczność NCBrain. Funkcja NCBrain. Usuwanie zbędnych przejść w powietrzu. Automatyczne dodawanie ścieżek w obszarach przeciążenia narzędzia

Transkrypt:

- analiza statyczna skryptów PHP MIMUW 4 kwietnia 2012 - analiza statyczna skryptów PHP

Co to jest? Analiza statyczna Bezpieczeństwo skryptów PHP Analiza programu bez jego uruchamiania Zazwyczaj pod konkretnym kątem Zazwyczaj dużo szybsza i prostsza do uruchomienia od testowania czy weryfikacji wszystkich możliwych przebiegów programu Wspomaga na bieżąco proces tworzenia oprogramowania Kompilatory i zewnętrzne narzędzia - analiza statyczna skryptów PHP

Co można analizować? Analiza statyczna Bezpieczeństwo skryptów PHP zgodność typów niezainicjalizowane zmienne i nieużywane przypisania odwołania do złych miejsc w pamięci (null pointer, poza zakres) nieprawidłowe korzystanie z funkcji bibliotecznych, zasobów możliwe wartości zmiennych (analiza przepływu danych), osiągalność bloków kodu, szukanie miejsc podatnych na atak styl programowania (metryki itp) mniej lub bardziej czuła na przepływ sterowania zazwyczaj może się mylić w obie strony - analiza statyczna skryptów PHP

Zagrożenia w skryptach PHP Analiza statyczna Bezpieczeństwo skryptów PHP Dane pochodzące od użytkownika SQL injection Cross-site scripting itp include/eval czegokolwiek Możliwość uruchomienia innego skryptu, niż zakładał autor register globals - analiza statyczna skryptów PHP

Jak sobie radzić z zagrożeniami? Analiza statyczna Bezpieczeństwo skryptów PHP Nieprzekazywanie danych użytkownika bezpośrednio do bazy danych/wyświetlenia/include/eval Funkcje oczyszczające dane (htmlspecialchars, addslashes) Ostrożna konstrukcja zapytań do bazy Wyłączenie register globals Wyłączenie wyświetlania błędów/ostrzeżeń w wersji produkcyjnej :) - analiza statyczna skryptów PHP

Czemu to może być trudne? Analiza statyczna Bezpieczeństwo skryptów PHP Brzydki kod, z funkcjonalnościami dodawanymi przez lata przez przypadkowych autorów Obrabianie danych wyświetlanych/przekazywanych do bazy rozproszone po kodzie Spaghetti code, na dodatek przemieszany z HTML, JavaScript itd Dużo includowanych plików, które coś robią a nie tylko definiują funkcje Przepisanie wszystkiego od nowa może być nieopłacalne - analiza statyczna skryptów PHP

Działanie Wyniki analiza statyczna skryptów PHP pod kątem zagrożeń XSS i SQL injection napisany w javie analiza przepływu danych od źródeł (użytkownik/baza danych) do ujść (baza danych/wyświetlanie danych na stronie/inne groźne funkcje) http://pixybox.seclab.tuwien.ac.at/ - analiza statyczna skryptów PHP

Działanie Działanie Wyniki parsowanie w oparciu o orginalną gramatykę PHP, tłumaczenie do P-tac i grafu przepływu sterowania analiza źanieczyszczenia danych, od źródeł do ujść opis zachowania się funkcji wbudowanych flow-sensitive, interprocedural, context sensitive analiza literałów: do obsługi include ów, indeksowania tablic analiza aliasów ($a =& $b) brak obsługi obiektowości - analiza statyczna skryptów PHP

Analiza literałów Działanie Wyniki Krata przenoszonych wartości + funkcja przejścia reprezentacja dowolnych literałów, obsługa tablic w miarę możliwości - analiza statyczna skryptów PHP

Analiza literałów - tablice Działanie Wyniki - analiza statyczna skryptów PHP

Analiza aliasów Działanie Wyniki nie musi być włączana pozwala stwierdzić które zmienne mogą lub muszą wskazywać na dane przypisane do innych zmiennych po przeprowadzeniu analizy aliasów odkrycia nanoszone na diagram przepływu dla literałów - analiza statyczna skryptów PHP

Analiza źanieczyszczeń Działanie Wyniki dane mogą być zanieczyszczone lub nie w odpowiednim kontekście (XSS/SQLi) analiza przepływu z uwzględnieniem informacji zdobytych w poprzednich analizach modele funkcji wbudowanych mogących wpływać na zanieczyszczenie danych: strong sanitization weak sanitization multi-dependency inverse multi-dependency evil opis w których zmiennych środowiskowych są bezpieczne dane, a w których nie (przy analizie SQLi - 2 poziomy czystości) + flagowanie całych tablic jako czyste - analiza statyczna skryptów PHP

Demo Działanie Wyniki - analiza statyczna skryptów PHP

Wyniki Działanie Wyniki - analiza statyczna skryptów PHP

Zalety i wady Zalety i wady Bibliografia Narzędzie sprawdziło się w praktyce Wymaga stosunkowo niewielkiego nakładu pracy Łatwe dostosowanie modeli do własnych funkcji oczyszczających dane itp Dość precyzyjne Nie obsługuje obiektowości (ze względu na wydajność) Nie uznaje oczyszczeń przez wyrażenia regularne Nie wnioskuje o powiązanych ze sobą rozgałęzieniach kodu Możliwe pomyłki w obie strony Nie radzi sobie z polskimi znaczkami, początkiem xmla itp - analiza statyczna skryptów PHP

Bibliografia Zalety i wady Bibliografia 1 Nenad Jovanovic, Christopher Kruegel, Engin Kirda: : A Static Analysis Tool for Detecting Web Application Vulnerabilities (Technical Report) 2 Nenad Jovanovic, Christopher Kruegel, and Engin Kirda: Precise Alias Analysis for Static Detection of Web Application Vulnerabilities 3 http://pixybox.seclab.tuwien.ac.at/pixy/ - analiza statyczna skryptów PHP