Bezpieczeństwo systemów komputerowych

Podobne dokumenty
Bezpieczeństwo systemów komputerowych

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

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Bezpieczeństwo systemów komputerowych

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Czy otwarte znaczy bezpieczne?

(Pluggable Authentication Modules). Wyjaśnienie technologii.

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

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

7. zainstalowane oprogramowanie zarządzane stacje robocze

Programowanie Zespołowe

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

WYJAŚNIENIE TREŚCI SIWZ

Maciej Oleksy Zenon Matuszyk

Praktyka testowania dla początkujących testerów

SHAREPOINT SHAREPOINT QM SHAREPOINT DESINGER SHAREPOINT SERWER. Opr. Barbara Gałkowska

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Technologia Informacyjna

BIBLIOTEKA CYFROWA JAKO KONTENER TREŚCI DLA PORTALI INTERNETOWYCH. DLIBRA & DRUPAL DWA SYSTEMY, JEDNA WITRYNA.

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

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

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

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

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

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

sprawdzonych porad z bezpieczeństwa

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Pluskwy, robale i inne paskudztwo

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Luki w bezpieczeństwie aplikacji istotnym zagrożeniem dla infrastruktury krytycznej

Zdalne logowanie do serwerów

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Testowanie oprogramowania

Realne zagrożenia i trendy na podstawie raportów CERT Polska. CERT Polska/NASK

Windows Serwer 2008 R2. Moduł 5. Zarządzanie plikami

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

ECDL Podstawy programowania Sylabus - wersja 1.0

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

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

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

OPIS PRZEDMIOTU ZAMÓWIENIA w odniesieniu do zadania antywirus - dostawa oprogramowania antywirusowego

Program szkolenia: Bezpieczny kod - podstawy

"Administrowanie Sieciami Komputerowymi"

REFERAT PRACY DYPLOMOWEJ

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

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

Programowanie Komponentowe WebAPI

Usługa: Audyt kodu źródłowego

Programowanie obiektowe. Wprowadzenie

Działanie systemu operacyjnego

Federacja Bibliotek Cyfrowych w sieci PIONIER

Aplikacje internetowe - opis przedmiotu

I. Raport wykonywalności projektu

Audyty bezpieczeństwa dla samorządów i firm. Gerard Frankowski, Zespół Bezpieczeństwa PCSS

WYMAGANIA EDUKACYJNE: ZAJĘCIA KOMPUTEROWE KLASA 4. Oznaczenia występujące w tabeli:

Plan Testów Systemu SOS

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

KARTA PRZEDMIOTU. Tworzenie bezpiecznego kodu D1_13

Ełk, dn r. DOMSET Marcin Brochacki. ul. Wojska Polskiego 43 lok. 3, Ełk. Nip ZAPYTANIE OFERTOWE

Reguły plików cookies witryny i usług internetowych tsop.pl

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

Webowy generator wykresów oparty na programie gnuplot

Podstawy programowania

dr Beata Zbarachewicz

Internetowe BD P.Skrobanek 1. INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład IV. Paweł Skrobanek PLAN NA DZIŚ :

Wykaz zmian w programie Win Admin Replikator

Szczegółowy program,,laboratorium Bezpieczeństwa Systemów Informatycznych

System Zarządzania Treścią

Wyższa Szkoła Bankowa w Toruniu ul. Młodzieżowa 31a Toruń Toruń, dnia r. ZAPYTANIE OFERTOWE nr 1/NOR/0119/2014

Administrowanie systemami informatycznymi Kod przedmiotu

Działanie systemu operacyjnego

Zajęcia trwają 15 tygodni (2 godziny wykładu, 2 godziny laboratorium tygodniowo) Zaliczenie zajęć jest uwarunkowane zaliczeniem zajęć laboratoryjnych

Programowanie w C. dr inż. Stanisław Wszelak

PRZEWODNIK PO PRZEDMIOCIE

Wykaz zmian w programie WinAdmin Replikator

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Usługi sieciowe systemu Linux

Kierunek: Informatyka Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne. Wykład Ćwiczenia

Systemy operacyjne III

użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania

Systemy operacyjne. Informatyka Stosowana, I rok. Krzysztof Wilk. Katedra Informatyki Stosowanej i Modelowania

PRACA DYPLOMOWA INŻYNIERSKA

Temat 12. Rozkaz Wykonać! Języki programowania

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja

Studencka Pracownia Inżynierii Oprogramowania Zespół nr 2, IIUWR 2008/09. Bartłomiej Gałkowski, Marek Kembrowski, Tomasz Maciejewski.

OFERTA DLA MIAST, GMIN, INSTYTUCJI FINANSOWYCH I PODMIOTÓW KOMERCYJNYCH DOTYCZĄCA ZAGADNIEŃ ZWIĄZANYCH Z CYBERBEZPIECZEŃSTWEM

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

OCHRONA PRZED RANSOMWARE. Konfiguracja ustawień

Data modyfikacji:

Bezpieczeństwo usług oraz informacje o certyfikatach

Projektowanie baz danych za pomocą narzędzi CASE

Zagadnienia. Inżynieria Oprogramowania

Transkrypt:

Bezpieczeństwo systemów komputerowych Jak pisać poprawne programy? Aleksy Schubert (Marcin Peczarski) Instytut Informatyki Uniwersytetu Warszawskiego 6 listopada 2018 Na podstawie: David A. Wheeler Secure Programming for Linux and Unix HOWTO

Program, który powinien być bezpieczny Znajduje się na granicy bezpieczeństwa. Pobiera dane ze źródła, które posiada inne prawa dostępu niż sam program. Przykłady: przeglądarka danych, serwer, aplikacja webowa, skrypt uruchamiany automatycznie przez przeglądarkę, program typu setuid, setgid, program uruchamiany z prawami administratora, jądro systemu operacyjnego.

Uwagi ogólne Bezpieczeństwo i wygoda obsługi nie są niezależne bezpieczna konfiguracja wymaga poświecenia więcej czasu. Występuje konflikt między bezpieczeństwem a poziomem abstrakcji: ze specyfikacji trudno wywnioskować, czy wysokopoziomowe funkcje biblioteczne są bezpieczne; można samemu zaimplementować potrzebne komponenty; można zaufać bibliotece. Należy stosować wiele mechanizmów bezpieczeństwa na każdym poziomie oprogramowania.

Dlaczego powstają niebezpieczne programy? (1) Nie ma zajęć poświęconych wyłącznie pisaniu bezpiecznych programów. Większość zajęć z bezpieczeństwa poświęconych jest kryptografii i protokołom sieciowym. Nie ma wielu podręczników z tego tematu. Prawie nikt nie używa formalnych metod weryfikacji. Wiele kodu pisze się w C, który nie sprzyja powstawaniu bezpiecznych programów, a operacje na napisach w bibliotece C są szczególnie narażone na nadużycia. Wiele bibliotek dla innych języków programowania jest napisanych w C. Programiści nie myślą o wielu użytkownikach.

Dlaczego powstają niebezpieczne programy? (2) Programiści są ludźmi, a ludzie są leniwi. Często wybierają uproszczone rozwiązania, a gdy one zadziałają, nigdy nie są poprawiane. Niestety wielu programistów nie jest dobrymi programistami. Wielu programistów nie jest specjalistami od bezpieczeństwa, nie myśli jak potencjalny agresor. Teoretyczne modele bezpieczeństwa są okropne. Typowi użytkownicy mają niewielkie pojęcie o bezpieczeństwie i rzadko troszczą się o bezpieczeństwo. Bezpieczeństwo kosztuje: dodatkowe kodowanie, testy.

Open source a bezpieczeństwo (1) Tekst źródłowy jest wystawiony zarówno dla atakujących, jak i dla obrońców. Otwarcie tekstu źródłowego sprzyja poprawie jego jakości. Otwarte oprogramowenie ma większe szanse być bezpieczniejsze, ale samo otwarcie tekstu źródłowego nie zapewnia bezpieczeństwa. Jeden ekspert, czytając tekst źródłowy, znajdzie więcej niż wielu przypadkowych programistów. Opieranie się na sekrecie, który jest zaszyty w kodzie programu i którego nie można zmienić, jest poważnym błędem. Nie ma skutecznego sposobu ochrony przed odczytaniem sekretnego kodu (ang. reverse engineering). Samo stwierdzenie, że kod jest otwarty, może uśpić czujność. Wiele projektów open source tworzonych jest przez rozproszone grupy programistów trudno kontroluje się jakość tak powstającego oprogramowania.

Open source a bezpieczeństwo (2) Otwarcie tekstu źródłowego nie oznacza, że zostanie on zweryfikowany. Analiza łat tworzonych dla systemów otwartych dostarcza agresorom wiedzy o podobnych problemach w systemach zamkniętych. Wiele ataków to DoS. Łatwiej jest sprawić, aby program przestał działać niż zmienić jego funkcjonalność do tego nie trzeba znać tekstu źródłowego. Atakujący może poszukiwać w kodzie programu wzorców potencjalnych luk: zarówno w tekście źródłowym, jak i w kodzie maszynowym (dekompilacja). Utajnianie luk w oprogramowaniu opóźnia ich usuwanie. Otwarte oprogramowanie jest mniej narażone na umieszczenie w nim konia trojańskiego.

Open source a bezpieczeństwo (3) Otwarcie tekstu źródłowego, który był dotychczas zamknięty, powoduje chwilowe zmniejszenie jego bezpieczeństwa mogą ujawnić się nieznane dotąd luki. Jednak nikt nie zagwarantuje, że luki te nie były znane wcześniej i wykorzystywane przez wąskie grono agresorów. Istnieją programy skanujące tekst źródłowy w poszukiwaniu potencjalnych luk. Otwarcie tekstu źródłowego wcale nie musi zachęcić do jego przeglądania i poprawiania kto chce pracować za darmo dla jakiejś firmy? Co z tego, że wielu patrzy (na tekst źródłowy), skoro nikt z nich nie wie, jak powinien wyglądać bezpieczny program? Nawet jeśli luki w programie są poprawiane szybko, dystrybucja poprawek do użytkowników odbywa się bardzo wolno i opornie. Każdy może poprawić błąd w programie open source.

Paranoja jest zaletą Pisanie bezpiecznych programów wymaga specjalnego podejścia do błędów. Każdy program zawiera mnóstwo błędów. Jeśli błędy nie są poważne, użytkownik uczy się używać programu tak, aby je omijać program nie traci wiele ze swej użyteczności. W programach, które muszą być bezpieczne, poszukuje się nawet drobnych, subtelnych, rzadko objawiających się błędów, aby je wykorzystać do przeprowadzenia ataku.