Ευπάθειες διαδικτυακών εφαρμογών

Οι διαδικτυακές εφαρμογές έχουν κάποιες ευπάθειες τις οποίες εκμεταλλεύονται οι hackers για να επιτύχουν πρόσβαση στους υπολογιστές που αυτές εκτελούνται.
Όταν εντοπιστεί μία ευπάθεια κάποιας εφαρμογής, τότε δημιουργείται ένα πρόγραμμα το οποίο ονομάζεται exploit που μπορεί να εκμεταλλευτεί τις ευπάθειες αυτές.
Τα exploits μπορούν να χρησιμοποιηθούν σε κάποιον χρήστη ή ακόμη κι από τον ίδιο τον server μέσω του οποίου μπορούν να συλλέξουν πληροφορίες, να αλλοιωθούν τα δεδομένα ή και να κάνουν επιθέσεις άρνησης υπηρεσιών (Denial-of-service, DoS) έτσι ώστε να μην μπορεί κάποιος να συνδεθεί στον server.

SQL injection

SQL injection είναι μία επίθεση που επιτρέπει στον hacker να αλλάξει ό,τι θέλει στην βάση δεδομένων ή και να πάρει πληροφορίες.
Αυτό γίνεται με το να δώσει σε κάποια σελίδα login ή γενικότερα δυναμικού περιεχομένου (όπως μια σελίδα PHP) δεδομένα που θα οδηγήσουν στην εκτέλεση των αντίστοιχων εντολών SQL.
Ακολουθεί ένα παράδειγμα SQL injection για την ανάκτηση πληροφοριών:
http://www.victim.com/index.php?id=-45 union all select 1,2,3,4 from database

Cross-Site Scripting (XSS Injection)

Η επίθεση XSS γίνεται όταν ο hacker χρησιμοποιεί μία διαδικτυακή εφαρμογή για να στείλει κακόβουλο κώδικα (σε μορφή javascript) σε έναν άλλο χρήστη μέσω του server.
Η επίθεση αυτή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε φόρμα του server με την προϋπόθεση ότι δεν κωδικοποιούνται τα δεδομένα που στέλνονται και ταυτόχρονα δεν γίνεται έλεγχος για κακόβουλο κώδικα από τον server. Μόλις λάβει ο χρήστης τον κώδικα αυτόν, ο browser δεν έχει τρόπο να καταλάβει ότι είναι κακόβουλος και έτσι τον τρέχει. Επειδή ο κώδικας προέρχεται από έμπιστη πηγή, μπορεί να έχει πρόσβαση σε cookies, session tokens, ή άλλες ευαίσθητες πληροφορίες του χρήστη.
Παράδειγμα:
Στην αρχή ο hacker πρέπει να ελέγξει αν η σελίδα είναι ευπαθής σε XSS επιθέσεις και αυτό το κάνει με ένα απλό σενάριο (script) που δείχνει ένα παράθυρο μηνύματος (alert).
<script>alert("XSS!");</script>
Αν βρει ότι είναι ευπαθής σε XSS επιθέσεις, φτιάχνει ένα script και το ανεβάζει στον server σε τέτοιο σημείο ώστε όταν το θύμα συνδεθεί στον server να τρέξει το script.

Cross Site Request Forgery (CSRF)

Το CSRF είναι επίθεση που αναγκάζει τον τελικό χρήστη να εκτελέσει ανεπιθύμητες ενέργειες σε μια εφαρμογή δικτύου στην οποία είναι πιστοποιημένος.
Στέλνοντας κάποιον σύνδεσμο (μέσω email/chat), ο hacker μπορεί να αναγκάσει τους χρήστες να εκτελέσουν ενέργειες που που έχει επιλέξει.
Αυτό γίνεται εφικτό από τον τρόπο που λειτουργίας και εκτέλεσης των αιτημάτων των χρηστών. Στην αρχή εκτελείται μια συναλλαγή στο δίκτυο από μία τράπεζα και συλλέγονται τα δεδομένα: 
http://bank.com/transfer.do?acct=BOB&amount=100
Από αυτό καταλαβαίνουμε ότι στέλνονται στον BOB 100€.
Το αλλάζουμε σε
http://bank.com/transfer.do?acct=BILLY&amount=1000
και έτσι αποστέλλονται 1000€ στον BILLY.
Ο hacker μπορεί να στείλει τον σύνδεσμο στο θύμα και έτσι κάθε φορά που κάποιος πατάει τον σύνδεσμο, ο BILLY θα έχει 1000€ παραπάνω στον λογαριασμό του.

Προστασία

Οι ευπάθειες (exploits) υπάρχουν σε κάθε εφαρμογή - ορισμένοι hackers μάλιστα πληρώνονται από εταιρίες για να εντοπίσουν αυτές ακριβώς τις ευπάθειες στους εταιρικούς server. Αυτή η εργασία μπορεί να βοηθήσει τις εταιρίες να προστατευθούν καλύτερα από κακόβουλες επιθέσεις hacker (οι οποίοι ονομάζονται κράκερ, αγγλ. cracker, βλ. Χάκερ).
Η δουλειά των hacker είναι να κάνουν Penetration Testing, να προσπαθούν δηλαδή με διάφορους τρόπους να πάρουν πρόσβαση στον server. Εφόσον το καταφέρουν, δίνουν αναλυτική αναφορά με τα πεπραγμένα τους έτσι ώστε να μπορεί η εταιρία να ασφαλίσει καλύτερα τον server του.
Για να προστατευτεί ο server από τέτοιες επιθέσεις υπάρχουν τα τείχη προστασίας διαδικτυακών εφαρμογών (Web Application Firewall, WAF), που δίνουν μια ολοκληρωμένη λύση για όλες τις γνωστές επιθέσεις που υπάρχουν.