diff --git a/2019/el-gr/dist/owasp-api-security-top-10.odt b/2019/el-gr/dist/owasp-api-security-top-10.odt new file mode 100644 index 000000000..f1ae74a0e Binary files /dev/null and b/2019/el-gr/dist/owasp-api-security-top-10.odt differ diff --git a/2019/el-gr/dist/owasp-api-security-top-10.pdf b/2019/el-gr/dist/owasp-api-security-top-10.pdf new file mode 100644 index 000000000..503425959 Binary files /dev/null and b/2019/el-gr/dist/owasp-api-security-top-10.pdf differ diff --git a/2019/el-gr/src/0x00-header.md b/2019/el-gr/src/0x00-header.md new file mode 100644 index 000000000..f0bcfde10 --- /dev/null +++ b/2019/el-gr/src/0x00-header.md @@ -0,0 +1,15 @@ +![OWASP LOGO](images/owasp-logo.png) + +## OWASP API Security Top 10 2019 στα Ελληνικά + +Τα 10 Κορυφαία Ρίσκα Ασφαλείας API - Ελληνική μετάφραση του "The Ten Most Critical API Security Risks" + +30/6/2022 + +![WASP Logo URL TBA](images/front-wasp.png) + +| | | | +| - | - | - | +| https://owasp.org | Η παρούσα εργασία διατίθεται υπό την άδεια [Creative Commons Attribution-ShareAlike 4.0 International License][1] | ![Creative Commons License Logo](images/front-cc.png) | + +[1]: http://creativecommons.org/licenses/by-sa/4.0/ diff --git a/2019/el-gr/src/0x00-notice.md b/2019/el-gr/src/0x00-notice.md new file mode 100644 index 000000000..2c369cfdc --- /dev/null +++ b/2019/el-gr/src/0x00-notice.md @@ -0,0 +1,14 @@ +Σημείωση +====== + +Το παρών είναι η έκδοση κειμένου του OWASP API Security Top 10 που χρησιμοποιείται σαν πηγή +για την επίσημη έκδοση και διατίθεται σαν Portable Document Format (PDF). + +Οποιαδήποτε συνεισφορά στην εργασία όπως σχόλια, διορθώσεις, ή μεταφράσεις +θα πρέπει να γίνονται εδώ. Για περισσότερες πληροφορίες για το Πως να συνεισφέρετε, +παρακαλώ δείτε το CONTRIBUTING.md. + +* Erez Yallon +* Inon Shkedy + +[1]: ../../CONTRIBUTING.md diff --git a/2019/el-gr/src/0x00-toc.md b/2019/el-gr/src/0x00-toc.md new file mode 100644 index 000000000..ffc4035e5 --- /dev/null +++ b/2019/el-gr/src/0x00-toc.md @@ -0,0 +1,24 @@ +Πίνακας Περιεχομένων +================= + +* [Πίνακας Περιεχομένων](0x00-toc.md) +* [Σχετικά με το OWASP](0x01-about-owasp.md) +* [Πρόλογος](0x02-foreword.md) +* [Εισαγωγή](0x03-introduction.md) +* [Σημειώσεις Έκδοσης](0x04-release-notes.md) +* [Ρίσκα Ασφαλείας API](0x10-api-security-risks.md) +* [OWASP Τα 10 Κορυφαία Ρίσκα Ασφαλείας API – 2019](0x11-t10.md) +* [API1:2019 Broken Object Level Authorization](0xa1-broken-object-level-authorization.md) +* [API2:2019 Broken User Authentication](0xa2-broken-user-authentication.md) +* [API3:2019 Excessive Data Exposure](0xa3-excessive-data-exposure.md) +* [API4:2019 Lack of Resources & Rate Limiting](0xa4-lack-of-resources-and-rate-limiting.md) +* [API5:2019 Broken Function Level Authorization](0xa5-broken-function-level-authorization.md) +* [API6:2019 Mass Assignment](0xa6-mass-assignment.md) +* [API7:2019 Security Misconfiguration](0xa7-security-misconfiguration.md) +* [API8:2019 Injection](0xa8-injection.md) +* [API9:2019 Improper Assets Management](0xa9-improper-assets-management.md) +* [API10:2019 Insufficient Logging & Monitoring](0xaa-insufficient-logging-monitoring.md) +* [Επόμενα Βήματα για Προγραμματιστές](0xb0-next-devs.md) +* [Επόμενα Βήματα για DevSecOps](0xb1-next-devsecops.md) +* [Μεθοδολογία και Δεδομένα](0xd0-about-data.md) +* [Ευχαριστίες](0xd1-acknowledgments.md) diff --git a/2019/el-gr/src/0x01-about-owasp.md b/2019/el-gr/src/0x01-about-owasp.md new file mode 100644 index 000000000..0063de67b --- /dev/null +++ b/2019/el-gr/src/0x01-about-owasp.md @@ -0,0 +1,57 @@ +Σχετικά με το OWASP +=========== + +Το OWASP (Open Web Application Security Project) είναι μια ανοιχτή κοινότητα +που αποσκοπεί στο να βοηθήσει οργανισμούς να παράγουν, να προμηθεύονται και +να συντηρούν εφαρμογές και API που θα είναι ασφαλή. + +Στο OWASP θα βρείτε δωρεάν διαθέσιμα και ελεύθερα προσβάσιμα σε όλους τα παρακάτω: + +* Εργαλεία ασφαλείας εφαρμογών καθώς και πρότυπα ασφαλείας (standards). +* Ολόκληρα βιβλία για testing ασφαλείας εφαρμογών, ανάπτυξη ασφαλούς κώδικα, και +ελέγχου (review) ασφαλούς κώδικα. +* Παρουσιάσεις και [βίντεο][1]. +* [Σκονάκια][2] (cheatsheets) σε πολλά συνήθη θέματα. +* Standard ελέγχους ασφαλείας και βιβλιοθήκες. +* [Τοπικά chapters σε όλο τον κόσμο][3]. +* Κορυφαίες έρευνες. +* [Συνέδρια σε όλο τον κόσμο][4]. +* [Λίστες ταχυδρομείου][5]. + +Μάθετε περισσότερα στο: [https://www.owasp.org][6]. + +Όλα τα εργαλεία, έγγραφα, βίντεο, παρουσιάσεις και παραρτήματα (chapters) του OWASP είναι δωρεάν διαθέσιμα και ελεύθερα προσβάσιμα σε όλους όσους ενδιαφέρονται να βελτιώσουν την ασφάλεια των εφαρμογών τους. + +Προσεγγίζουμε την ασφάλεια εφαρμογών ως ένα πρόβλημα ανθρώπων, +διεργασιών και τεχνολογίας, καθώς οι πιο αποτελεσματικές προσεγγίσεις +στο πρόβλημα απαιτούν βελτιώσεις στους παραπάνω τομείς. + +Το OWASP είναι ένα νέο είδος οργανισμού. Η ανεξαρτησία μας από τυχόν εμπορικές πιέσεις +μας επιτρέπει να παρέχουμε αμερόληπτες, πρακτικές και οικονομικά αποδοτικές +πληροφορίες σχετικά με την ασφάλεια εφαρμογών. + +Το OWASP δεν είναι συνδεδεμένο με καμία εταιρεία τεχνολογίας. Παρόλα αυτά υποστηρίζουμε την +σωστή χρήση της εμπορικής τεχνολογίας ασφαλείας. Το OWASP παράγει υλικό με +συλλογικό, διαφανή και ανοιχτό τρόπο. + +Το Ίδρυμα OWASP είναι η μη κερδοσκοπική οντότητα που διασφαλίζει την μακροπρόθεσμη επιτυχία +αυτού του έργου. Σχεδόν όλοι όσοι σχετίζονται με το OWASP είναι εθελοντές, +συμπεριλαμβανομένου του διοικητικού συμβουλίου OWASP, των επικεφαλής των παραρτημάτων (chapters), των επικεφαλής έργων και των μελών των έργων (projects). Υποστηρίζουμε την καινοτόμο έρευνα στον τομέα ασφαλείας με επιχορηγήσεις και υποδομές. + +Σας καλούμε να συμμετάσχετε και εσείς στο OWASP! + +## Copyright και Άδεια + +![license](images/license.png) + +Copyright © 2003-2019 The OWASP Foundation. Αυτό το έγγραφο κυκλοφορεί υπό την άδεια +[Creative Commons Attribution Share-Alike 4.0 license][7]. Για να επαναχρησιμοποιήσετε ή +να διανέμετε, θα πρέπει να καταστήσετε σαφές στους άλλους τους όρους άδειας χρήσης αυτού του έργου. + +[1]: https://www.youtube.com/user/OWASPGLOBAL +[2]: https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series +[3]: https://www.owasp.org/index.php/OWASP_Chapter +[4]: https://www.owasp.org/index.php/Category:OWASP_AppSec_Conference +[5]: https://lists.owasp.org/mailman/listinfo +[6]: https://www.owasp.org +[7]: http://creativecommons.org/licenses/by-sa/4.0/ diff --git a/2019/el-gr/src/0x02-foreword.md b/2019/el-gr/src/0x02-foreword.md new file mode 100644 index 000000000..15390db1a --- /dev/null +++ b/2019/el-gr/src/0x02-foreword.md @@ -0,0 +1,43 @@ +Πρόλογος +======== + +Ένα θεμελιώδες στοιχείο καινοτομίας στον σημερινό κόσμο που βασίζεται στις εφαρμογές +είναι η διεπαφή προγραμματισμού εφαρμογών (API). Από τις τράπεζες, το λιανικό εμπόριο +και τις μεταφορές έως το IoT, τα αυτόνομα οχήματα και τις έξυπνες πόλεις, τα API +αποτελούν κρίσιμο μέρος των σύγχρονων εφαρμογών για κινητά, SaaS και web. Τα API μπορούν +να βρεθούν σε εφαρμογές που απευθύνονται σε πελάτες, σε εφαρμογές που απευθύνονται σε +συνεργάτες και σε ενδοεταιρικές εφαρμογές. + +Από τη φύση τους, τα APIs αφήνουν εκτεθειμένες ορισμένες πτυχές της επιχειρηματικής λογικής της εφαρμογής (business logic) καθώς και ευαίσθητα δεδομένα όπως οι Προσωπικές Αναγνωριστικές Πληροφορίες (PII) (Σ.τ.Μ. πληροφορίες που επιτρέπουν την αναγνώριση προσώπου). Γι' αυτό τον λόγο τα API γίνονται όλο και περισσότερο στόχος κακόβουλων χρηστών. Χωρίς ασφαλή APIs, η ταχεία καινοτομία θα ήταν αδύνατη. + +Παρόλο που ένα γενικευμένο Top 10 με κινδύνους ασφαλείας για web εφαρμογές +εξακολουθεί να έχει νόημα, λόγω της ιδιαίτερης φύσης των APIs, απαιτείται μια λίστα +ρίσκων ασφαλείας ειδικά για τα API. Η ασφάλεια των APIs εστιάζει σε στρατηγικές +και λύσεις για την κατανόηση και την αντιμετώπιση των μοναδικών τρωτών σημείων +και ρίσκων ασφαλείας που σχετίζονται με τα APIs. + +Εάν είστε εξοικειωμένοι με το [OWASP Top 10 Project][1], τότε θα παρατηρήσετε +τις ομοιότητες μεταξύ των δύο καταγραφών: στόχος τους είναι η εύκολη ανάγνωση (readability) +και εύκολη υιοθέτηση (adoption). Εάν είστε νέος στη σειρά OWASP Top 10 ίσως είναι καλύτερα +να διαβάσετε τις ενότητες [Ρίσκα Ασφαλείας API][2] και [Μεθοδολογία και Δεδομένα][3] +πριν μεταβείτε στη λίστα Top 10. + +Μπορείτε να συνεισφέρετε στο OWASP API Security Top 10 με τις ερωτήσεις, +τα σχόλια και τις ιδέες σας στο ηλεκτρονικό «αποθετήριο» (repository) του έργου στο GitHub: + +* https://github.com/OWASP/API-Security/issues +* https://github.com/OWASP/API-Security/blob/master/CONTRIBUTING.md + +Μπορείτε να βρείτε το OWASP API Security Top 10 εδώ: + +* https://www.owasp.org/index.php/OWASP_API_Security_Project +* https://github.com/OWASP/API-Security + +Θέλουμε να ευχαριστήσουμε όλους τους συντελεστές που κατέστησαν δυνατό αυτό +το έργο με την προσπάθεια και τη συνεισφορά τους. Όλοι τους αναφέρονται στην ενότητα +[Ευχαριστίες][4]. Σας ευχαριστούμε! + +[1]: https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project +[2]: ./0x10-api-security-risks.md +[3]: ./0xd0-about-data.md +[4]: ./0xd1-acknowledgments.md diff --git a/2019/el-gr/src/0x03-introduction.md b/2019/el-gr/src/0x03-introduction.md new file mode 100644 index 000000000..789eda3e7 --- /dev/null +++ b/2019/el-gr/src/0x03-introduction.md @@ -0,0 +1,27 @@ +Εισαγωγή +============ + +## Καλώς ήρθατε στο OWASP API Security Top 10 - 2019! + +Καλώς ήρθατε στην πρώτη έκδοση του OWASP API Security Top 10. Εάν είστε +εξοικειωμένοι με τη σειρά OWASP Top 10 τότε θα παρατηρήσετε +τις ομοιότητες μεταξύ των δύο καταγραφών: στόχος τους είναι η εύκολη ανάγνωση (readability) και η εύκολη υιοθέτηση (adoption). Σε διαφορετική περίπτωση, εξετάστε το ενδεχόμενο να επισκεφτείτε τη σελίδα [OWASP API Security Project wiki][1] προτού εμβαθύνετε στους πιο κρίσιμους κινδύνους για την ασφάλεια των APIs. + +Τα APIs παίζουν πολύ σημαντικό ρόλο στην αρχιτεκτονική των σύγχρονων εφαρμογών. +Εφόσον η δράση ευαισθητοποίησης του κοινού για την ασφάλεια και η καινοτομία έχουν +διαφορετικούς ρυθμούς, είναι σημαντικό να εστιάσετε στις συνηθισμένες αδυναμίες +ασφαλείας APIs. + +Ο πρωταρχικός στόχος του OWASP API Security Top 10 είναι να εκπαιδεύσει όσους +εμπλέκονται στην ανάπτυξη και συντήρηση APIs, για παράδειγμα, προγραμματιστές, +σχεδιαστές, αρχιτέκτονες, διαχειριστές ή επιχειρήσεις / οργανισμούς. + +Στην ενότητα [Μεθοδολογία και Δεδομένα][2], μπορείτε να διαβάσετε περισσότερα +για το πώς δημιουργήθηκε αυτή η πρώτη έκδοση. Σε μελλοντικές εκδόσεις, θέλουμε +να συνεργαστούμε με τις επιχειρήσεις του τομέα της ασφαλείας εφαρμογών (security industry), με μια δημόσια πρόσκληση για διαμοιρασμό δεδομένων. Προς το παρόν, ενθαρρύνουμε όλους να συνεισφέρουν με ερωτήσεις, σχόλια και ιδέες +στο [αποθετήριο (repository) GitHub][3] ή στη [Λίστα αλληλογραφίας][4]. + +[1]: https://www.owasp.org/index.php/OWASP_API_Security_Project +[2]: ./0xd0-about-data.md +[3]: https://github.com/OWASP/API-Security +[4]: https://groups.google.com/a/owasp.org/forum/#!forum/api-security-project diff --git a/2019/el-gr/src/0x04-release-notes.md b/2019/el-gr/src/0x04-release-notes.md new file mode 100644 index 000000000..d3a951f3f --- /dev/null +++ b/2019/el-gr/src/0x04-release-notes.md @@ -0,0 +1,30 @@ +Σημειώσεις Έκδοσης +============= + +Αυτή είναι η πρώτη έκδοση του OWASP API Security Top 10. Σκοπός μας είναι η έκδοση να +ενημερώνεται περιοδικά κάθε τρία ή τέσσερα χρόνια. + +Σε μελλοντικές εκδόσεις, σε αντίθεση με την παρούσα έκδοση, θέλουμε να κάνουμε +μια δημόσια πρόσκληση για δεδομένα, σε συνεργασία με τις επιχειρήσεις του τομέα της ασφάλειας εφαρμογών (security industry) σε αυτή την προσπάθεια. Στην ενότητα [Μεθοδολογία και Δεδομένα][1] θα βρείτε περισσότερες πληροφορίες σχετικά με τον τρόπο δημιουργίας αυτής της έκδοσης. Για περισσότερες λεπτομέρειες σχετικά με τους κινδύνους ασφαλείας, ανατρέξτε στην ενότητα [Ρίσκα Ασφαλείας API][2]. + +Είναι σημαντικό να συνειδητοποιήσουμε ότι τα τελευταία χρόνια, η αρχιτεκτονική των εφαρμογών έχει αλλάξει σημαντικά. Επί του παρόντος, τα APIs διαδραματίζουν πολύ σημαντικό ρόλο σε αυτή τη νέα αρχιτεκτονική των μικροϋπηρεσιών (microservices), των εφαρμογών μιας σελίδας (SPA), των εφαρμογών για κινητά, του IoT κ.λπ. + +Το OWASP API Security Top 10 ήταν μια απαραίτητη προσπάθεια για την ευαισθητοποίηση του κοινού σχετικά με τα σύγχρονα ζητήματα ασφαλείας των APIs. Αυτό ήταν εφικτό μόνο χάρη στη σημαντική προσπάθεια πολλών εθελοντών οι οποίοι αναφέρονται στην ενότητα [Ευχαριστίες][3]. Σας ευχαριστούμε! + +Σημειώσεις Μετάφρασης +===================== + +Η μετάφραση του OWASP API Security Top 10 2019 πραγματοποιήθηκε εθελοντικά με στόχο να γίνει η +καταγραφή προσβάσιμη και στην ελληνική γλώσσα. + +Πιστεύουμε ότι αυτή είναι μια ουσιαστική συνεισφορά στην αποστολή της ευαισθητοποίησης και της +εκπαίδευσης όλων όσων εμπλέκονται στην ανάπτυξη και συντήρηση APIs και λογισμικού γενικότερα για +θέματα που σχετίζονται με την ασφάλεια. + +Η ελληνική μετάφραση προέκυψε από την προσπάθεια των παρακάτω: +- Athanasios Emmanouilidis https://www.linkedin.com/in/athanasiosem/ +- Apostolos Giannakidis https://www.linkedin.com/in/giannakidisapostolos/ + +[1]: ./0xd0-about-data.md +[2]: ./0x10-api-security-risks.md +[3]: ./0xd1-acknowledgments.md diff --git a/2019/el-gr/src/0x10-api-security-risks.md b/2019/el-gr/src/0x10-api-security-risks.md new file mode 100644 index 000000000..56a3ed9b8 --- /dev/null +++ b/2019/el-gr/src/0x10-api-security-risks.md @@ -0,0 +1,39 @@ +Ρίσκα Ασφαλείας API +================== + +Για την ανάλυση κινδύνου χρησιμοποιήθηκε η [Μεθοδολογία Αξιολόγησης Ρίσκου OWASP][1]. + +Ο παρακάτω πίνακας συνοψίζει την ορολογία που σχετίζεται με τη βαθμολογία κινδύνου. + +| Παράγοντες Απειλής (Threat Agents) | Εκμεταλλευσιμότητα (Exploitability) | Επικράτηση Αδυναμίας (Weakness Prevalence) | Ανιχνευσιμότητα Αδυναμίας (Weakness Detectability) | Τεχνικός Αντίκτυπος (Technical Impact) | Επιχειρησιακές Επιπτώσεις (Business Impacts) | +| :-: | :-: | :-: | :-: | :-: | :-: | +| Εξαρτώνται από το API | Εύκολη: **3** | Διαδεδομένη **3** | Εύκολη **3** | Σοβαρός **3** | Εξαρτώνται από την επιχείρηση | +| Εξαρτώνται από το API | Μεσαία: **2** | Κοινή **2** | Μεσαία **2** | Μεσαίος **2** | Εξαρτώνται από την επιχείρηση | +| Εξαρτώνται από το API | Δύσκολη: **1** | Δύσκολη **1** | Δύσκολη **1** | Μικρός **1** | Εξαρτώνται από την επιχείρηση | + +Σημείωση: Η παραπάνω προσέγγιση δεν λαμβάνει υπόψη την πιθανότητα του παράγοντα απειλής (likelihood of threat agent). Επίσης δεν λαμβάνει υπόψη καμία από τις διάφορες τεχνικές λεπτομέρειες που σχετίζονται με τη συγκεκριμένη εφαρμογή σας. Οποιοσδήποτε από αυτούς τους παράγοντες θα μπορούσε να επηρεάσει σημαντικά τη συνολική πιθανότητα ο εισβολέας να βρει και να εκμεταλλευτεί μια συγκεκριμένη ευπάθεια. Αυτή η βαθμολογία δεν λαμβάνει υπόψη τον πραγματικό αντίκτυπο στην επιχείρησή σας. Η επιχείρηση/οργανισμός σας θα πρέπει να αποφασίσει πόσο ρίσκο ασφαλείας από τις εφαρμογές και τα APIs είναι διατεθειμένος να αποδεχτεί, δεδομένης της εταιρικής κουλτούρας/πολιτικών, του κλάδου και του ρυθμιστικού περιβάλλοντος. Ο σκοπός του OWASP API Security Top 10 δεν είναι να κάνει αυτήν την ανάλυση κινδύνου για εσάς. + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Risk Rating Methodology][1] +* [Article on Threat/Risk Modeling][2] + +### Εξωτερικές Αναφορές + +* [ISO 31000: Risk Management Std][3] +* [ISO 27001: ISMS][4] +* [NIST Cyber Framework (US)][5] +* [ASD Strategic Mitigations (AU)][6] +* [NIST CVSS 3.0][7] +* [Microsoft Threat Modeling Tool][8] + +[1]: https://www.owasp.org/index.php/OWASP_Risk_Rating_Methodology +[2]: https://www.owasp.org/index.php/Threat_Risk_Modeling +[3]: https://www.iso.org/iso-31000-risk-management.html +[4]: https://www.iso.org/isoiec-27001-information-security.html +[5]: https://www.nist.gov/cyberframework +[6]: https://www.asd.gov.au/infosec/mitigationstrategies.htm +[7]: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator +[8]: https://www.microsoft.com/en-us/download/details.aspx?id=49168 diff --git a/2019/el-gr/src/0x11-t10.md b/2019/el-gr/src/0x11-t10.md new file mode 100644 index 000000000..8a765b152 --- /dev/null +++ b/2019/el-gr/src/0x11-t10.md @@ -0,0 +1,15 @@ +OWASP Τα 10 Κορυφαία Ρίσκα Ασφαλείας API – 2019 +====================================== + +| Ρίσκο | Περιγραφή | +| ---- | ----------- | +| API1:2019 - Broken Object Level Authorization | Πολύ συχνά, τα APIs εκθέτουν τελικά σημεία προορισμού (endpoints) που χειρίζονται αναγνωριστικά αντικειμένων (object IDs), δημιουργώντας μία ευρεία επιφάνεια έκθεσης σε πιθανές επιθέσεις επιπέδου ελέγχου πρόσβασης (wide attack surface Level Access Control). Οι έλεγχοι εξουσιοδότησης σε επίπεδο αντικειμένου (Object Level Authorization) θα πρέπει να λαμβάνονται υπόψη σε κάθε λειτουργία που έχει πρόσβαση σε δεδομένα προερχόμενα από χρήστες. | +| API2:2019 - Broken User Authentication | Οι μηχανισμοί ελέγχου ταυτότητας χρηστών συχνά υλοποιούνται εσφαλμένα, επιτρέποντας στους εισβολείς να διακυβεύουν τα διακριτικά ελέγχου ταυτότητας ή να εκμεταλλεύονται ελαττώματα στην υλοποίηση της εφαρμογής για να προσποιούνται προσωρινά ή μόνιμα τις ταυτότητες άλλων χρηστών. Όταν διακυβεύεται η ικανότητα του συστήματος να αναγνωρίζει τον χρήστη / εφαρμογή-πελάτη (client) τότε θέτεται σε κίνδυνο η ασφάλεια των APIs συνολικά. | +| API3:2019 - Excessive Data Exposure | Στοχεύοντας σε γενικευμένες υλοποιήσεις (generic implementations), οι προγραμματιστές τείνουν να εκθέτουν όλα τα δεδομένα/ιδιότητες των αντικειμένων (object properties) χωρίς να λαμβάνουν υπόψη την ατομική τους ευαισθησία/εμπιστευτικότητα, βασιζόμενοι ότι οι εφαρμογές-πελάτες θα εκτελέσουν το φιλτράρισμα δεδομένων πριν τα εμφανίσουν στον χρήστη. | +| API4:2019 - Lack of Resources & Rate Limiting | Πολύ συχνά, τα APIs δεν επιβάλλουν περιορισμούς στο μέγεθος ή τον αριθμό των πόρων που μπορεί να ζητήσει ο χρήστης / εφαρμογή-πελάτη (client). Αυτό όχι μόνο μπορεί να επηρεάσει την απόδοση του διακομιστή API, οδηγώντας σε άρνηση υπηρεσίας (DoS), αλλά αφήνει επίσης ανοιχτό το ενδεχόμενο ελαττωμάτων ελέγχου ταυτότητας, όπως η ωμή βία (brute force). | +| API5:2019 - Broken Function Level Authorization | Πολύπλοκες πολιτικές ελέγχου πρόσβασης με διαφορετικές ιεραρχίες, ομάδες και ρόλους, καθώς και ασαφείς διαχωρισμοί μεταξύ διαχειριστικών/διαβαθμισμένων (administrative) και μη-διαβαθμισμένων λειτουργιών, τείνουν να οδηγούν σε ελαττώματα εξουσιοδότησης. Εκμεταλλευόμενοι αυτά τα ζητήματα, οι εισβολείς αποκτούν πρόσβαση σε πόρους ή/και διαβαθμισμένες λειτουργίες άλλων χρηστών. | +| API6:2019 - Mass Assignment | Η σύνδεση δεδομένων που προέρχονται από χρήστες ή εφαρμογές-πελάτες (π.χ. JSON) σε μοντέλα δεδομένων, χωρίς το κατάλληλο φιλτράρισμα ιδιοτήτων βάσει μιας λίστας επιτρεπόμενων δεδομένων (whitelist), συνήθως οδηγεί σε μαζική εκχώρηση δεδομένων (Mass Assignment). Οι εισβολείς καταφέρνουν να τροποποιήσουν τις ιδιότητες αντικειμένων που δεν θα έπρεπε να έχουν πρόσβαση να τροποποιήσουν με διάφορους τρόπους, όπως με το να μαντεύουν τις ιδιότητες των αντικειμένων, την εξερεύνηση άλλων τελικών σημείων προορισμού (API endpoints), την μελέτη της τεκμηρίωσης του λογισμικού (documentation) ή την παροχή πρόσθετων ιδιοτήτων αντικειμένων σε ωφέλιμα φορτία αιτημάτων (request payloads). +| API7:2019 - Security Misconfiguration | Οι εσφαλμένες ρυθμίσεις ασφαλείας είναι συνήθως αποτέλεσμα μη ασφαλών προεπιλεγμένων ρυθμίσεων, ελλιπών ή αυτοσχέδιων/πρόχειρων (ad-hoc) ρυθμίσεων, χώρου αποθήκευσης cloud με ελλιπείς ή χωρίς περιορισμούς χρήσης, εσφαλμένων ρυθμίσεων κεφαλίδων HTTP (headers), περιττών μεθόδων HTTP, επιτρεπόμενης κοινής χρήσης πόρων Cross-Origin (CORS) και λεπτομερών μηνυμάτων σφάλματος που περιέχουν ευαίσθητες πληροφορίες. | +| API8:2019 - Injection | Σφάλματα Έγχυσης (Injection Flaws), όπως SQL, NoSQL, Command Injection κ.λπ., συμβαίνουν όταν αποστέλλονται μη αξιόπιστα δεδομένα σε έναν διερμηνέα λογισμικού ως μέρος μιας εντολής ή ερωτήματος (query). Τα κακόβουλα δεδομένα του εισβολέα μπορούν να ξεγελάσουν τον διερμηνέα ώστε να εκτελέσει ακούσιες εντολές ή να αποκτήσει πρόσβαση σε δεδομένα χωρίς την κατάλληλη εξουσιοδότηση. | +| API9:2019 - Improper Assets Management | Τα APIs τείνουν να εκθέτουν περισσότερα τελικά σημεία προορισμού (endpoints) από τις παραδοσιακές εφαρμογές Ιστού, καθιστώντας τη σωστή και ενημερωμένη τεκμηρίωση (documentation) εξαιρετικά σημαντική. Επίσης σημαντικό ρόλο για τον μετριασμό ελαττωμάτων όπως οι καταργημένες εκδόσεις APIs και τα εκτεθειμένα τελικά σημεία εντοπισμού σφαλμάτων είναι η μεθοδική καταγραφή των servers και των εκδόσεων APIs που έχουν αναπτυχθεί. | +| API10:2019 - Insufficient Logging & Monitoring | Η ανεπαρκής καταγραφή και παρακολούθηση/εποπτεία, σε συνδυασμό με την έλλειψη ή την αναποτελεσματική ενσωµάτωση και διαλειτουργικότητα με την αντιμετώπιση συμβάντων (incident response), επιτρέπει στους επιτιθέμενους να επεκτείνουν τις επιθέσεις τους, να διατηρήσουν την πρόσβαση τους, να στραφούν σε περισσότερα συστήματα για να παραβιάσουν, να εξαγάγουν ή να καταστρέψουν δεδομένα. Οι περισσότερες μελέτες παραβίασης αποδεικνύουν ότι ο μέσος χρόνος που απαιτείται για τον εντοπισμό μιας παραβίασης ξεπερνάει τις 200 ημέρες και συνήθως εντοπίζεται από εξωτερικούς συνεργάτες και όχι από ενδοεταιρικές διαδικασίες ή παρακολούθηση/εποπτεία των συστημάτων. | diff --git a/2019/el-gr/src/0xa1-broken-object-level-authorization.md b/2019/el-gr/src/0xa1-broken-object-level-authorization.md new file mode 100644 index 000000000..09953a868 --- /dev/null +++ b/2019/el-gr/src/0xa1-broken-object-level-authorization.md @@ -0,0 +1,64 @@ +API1:2019 Broken Object Level Authorization +=========================================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **3** : Ανιχνευσιμότητα **2** | Τεχνικές Επιπτώσεις **3** : Εξαρτώνται από την Επιχείρηση | +| Οι εισβολείς μπορούν να εκμεταλλευτούν τελικά σημεία προορισμού API (endpoints) που είναι ευάλωτα σε εσφαλμένη εξουσιοδότηση επιπέδου αντικειμένου (Broken Object Level Authorization), παραποιώντας το αναγνωριστικό ενός αντικειμένου (object ID) που αποστέλλεται εντός ενός αιτήματος (request). Αυτό μπορεί να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση σε ευαίσθητα δεδομένα. Αυτό το κενό ασφαλείας είναι εξαιρετικά κοινό σε εφαρμογές που βασίζονται σε API, επειδή ο διακομιστής (server) συνήθως δεν έχει γνώση της κατάστασης της εφαρμογής-πελάτη και, αντ' αυτού, βασίζεται σε παραμέτρους όπως τα αναγνωριστικά αντικειμένων, που αποστέλλονται από την εφαρμογή-πελάτη για να αποφασίσει σε ποια αντικείμενα θα έχει πρόσβαση. | Αυτή είναι η πιο κοινή και ιδιαίτερα αποτελεσματική επίθεση σε API. Οι μηχανισμοί εξουσιοδότησης και ελέγχου πρόσβασης στις σύγχρονες εφαρμογές είναι περίπλοκοι και ευρέως διαδεδομένοι. Ακόμα κι αν η εφαρμογή εφαρμόζει μια κατάλληλη υποδομή για ελέγχους εξουσιοδότησης, οι προγραμματιστές μπορεί να ξεχάσουν να χρησιμοποιήσουν αυτούς τους ελέγχους πριν παραχωρήσουν πρόσβαση σε ένα ευαίσθητο/διαβαθμισμένο αντικείμενο. Η ανίχνευση ελέγχου πρόσβασης συνήθως δεν υπόκειται σε αυτοματοποιημένους στατικούς ή δυναμικούς ελέγχους (static or dynamic testing). | Η μη εξουσιοδοτημένη πρόσβαση μπορεί να οδηγήσει σε αποκάλυψη δεδομένων σε μη εξουσιοδοτημένα μέρη, απώλεια δεδομένων ή παραποίηση δεδομένων. Η μη εξουσιοδοτημένη πρόσβαση σε αντικείμενα μπορεί επίσης να οδηγήσει τους επιτιθέμενους να αποκτήσουν πλήρη πρόσβαση του λογαριασμού ενός χρήστη (account takeover). | + +## Πότε το API είναι ευάλωτο + +Η εξουσιοδότηση επιπέδου αντικειμένου (Object Level Authorization) είναι ένας μηχανισμός ελέγχου πρόσβασης +που συνήθως υλοποιείται σε επίπεδο κώδικα για να επιβεβαιώσει ότι ένας χρήστης +μπορεί να έχει πρόσβαση μόνο σε αντικείμενα (objects) στα οποία θα έπρεπε να έχει πρόσβαση. + +Κάθε τελικό σημείο προορισμού API (endpoint) που λαμβάνει ένα αναγνωριστικό ενός αντικειμένου (object ID) και εκτελεί +οποιονδήποτε τύπο ενέργειας στο αντικείμενο, θα πρέπει να εφαρμόζει ελέγχους εξουσιοδότησης +σε επίπεδο αντικειμένου. Οι έλεγχοι θα πρέπει να επικυρώνουν ότι ο συνδεδεμένος χρήστης +έχει πρόσβαση για να εκτελέσει την απαιτούμενη ενέργεια στο ζητούμενο αντικείμενο. + +Οι αποτυχίες σε αυτόν τον μηχανισμό συνήθως οδηγούν σε μη εξουσιοδοτημένη αποκάλυψη +πληροφοριών, τροποποίηση ή καταστροφή όλων των δεδομένων. + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο Επίθεσης #1 + +Μια πλατφόρμα ηλεκτρονικού εμπορίου για ηλεκτρονικά καταστήματα παρέχει μια σελίδα +με τα διαγράμματα εσόδων για τα καταστήματα που φιλοξενεί. Επιθεωρώντας +τα αιτήματα του προγράμματος περιήγησης (browser requests), ένας εισβολέας μπορεί να αναγνωρίσει τα +τελικά σημεία προορισμού API (endpoints) που χρησιμοποιούνται ως πηγή δεδομένων για αυτά τα γραφήματα +και το μοτίβο URL τους το οποίο είναι της μορφής: `/shops/{shopName}/revenue_data.json`. Χρησιμοποιώντας ένα άλλο +τελικό σημείο προορισμού API (endpoint), ο εισβολέας λαμβάνει τη λίστα με όλα τα ονόματα καταστημάτων +που φιλοξενούνται. Ο εισβολέας χρησιμοποιεί ένα απλό script, το οποίο διαχειρίζεται τα ονόματα στη λίστα, αντικαθιστώντας +το `{shopName}` στη διεύθυνση URL. Με αυτό τον τρόπο αποκτά πρόσβαση στα δεδομένα πωλήσεων +χιλιάδων καταστημάτων ηλεκτρονικού εμπορίου. + +### Σενάριο Επίθεσης #2 + +Κατά την παρακολούθηση της κυκλοφορίας δικτύου μιας φορητής συσκευής, το ακόλουθο +αίτημα HTTP `PATCH` τραβά την προσοχή ενός εισβολέα λόγω της παρουσίας μιας +custom κεφαλίδας αιτήματος HTTP `X-User-Id: 54796`. Αντικαθιστώντας την +τιμή `X-User-Id` με `54795`, ο εισβολέας λαμβάνει μια επιτυχημένη απάντηση HTTP +και μπορεί να τροποποιήσει τα δεδομένα λογαριασμού άλλων χρηστών. + +## Τρόπος Πρόληψης + +* Δημιουργήστε έναν σωστό μηχανισμό εξουσιοδότησης που βασίζεται στις πολιτικές των χρηστών (user policies) και την ιεραρχία τους. +* Χρησιμοποιήστε έναν μηχανισμό εξουσιοδότησης σε κάθε συνάρτηση (function) που χρησιμοποιεί δεδομένα εισόδου από τη εφαρμογή-πελάτη (client) για να αποκτήσει πρόσβαση σε μια εγγραφή στη βάση δεδομένων. Ο μηχανισμός πρέπει να ελέγχει εάν ο συνδεδεμένος +χρήστης έχει πρόσβαση να εκτελέσει την απαιτούμενη ενέργεια στην εγγραφή. +* Προτιμήστε να χρησιμοποιείτε τυχαίες και απρόβλεπτες τιμές ως GUID για τα +αναγνωριστικά (object IDs) των εγγραφών. +* Γράψτε αυτοματοποιημένους ελέγχους (tests) για την αξιολόγηση του μηχανισμού εξουσιοδότησης. Μην βγάζετε στην παραγωγή (deploy) ευάλωτες αλλαγές που σπάνε τα tests. + +## Αναφορές (References) + +### Εξωτερικές Αναφορές + +* [CWE-284: Improper Access Control][1] +* [CWE-285: Improper Authorization][2] +* [CWE-639: Authorization Bypass Through User-Controlled Key][3] + +[1]: https://cwe.mitre.org/data/definitions/284.html +[2]: https://cwe.mitre.org/data/definitions/285.html +[3]: https://cwe.mitre.org/data/definitions/639.html diff --git a/2019/el-gr/src/0xa2-broken-user-authentication.md b/2019/el-gr/src/0xa2-broken-user-authentication.md new file mode 100644 index 000000000..142a1dd04 --- /dev/null +++ b/2019/el-gr/src/0xa2-broken-user-authentication.md @@ -0,0 +1,72 @@ +API2:2019 Broken User Authentication +==================================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **2** : Ανιχνευσιμότητα **2** | Τεχνικές Επιπτώσεις **3** : Εξαρτώνται από την Επιχείρηση | +| Ο έλεγχος ταυτότητας στα APIs είναι ένας πολύπλοκος και μπερδεμένος μηχανισμός. Οι μηχανικοί λογισμικού και ασφαλείας ενδέχεται να έχουν λανθασμένες αντιλήψεις σχετικά με τα όρια του ελέγχου ταυτότητας και πώς να τον εφαρμόσουν σωστά. Επιπλέον, ο μηχανισμός ελέγχου ταυτότητας είναι ένας εύκολος στόχος για τους εισβολείς, καθώς είναι προσβάσιμος σε όλους. Αυτοί οι δύο λόγοι καθιστούν τον μηχανισμό ελέγχου ταυτότητας δυνητικά ευάλωτο σε πολλές επιθέσεις (exploits). | Υπάρχουν δύο υποκατηγορίες του κενού ασφαλείας: 1. Έλλειψη μηχανισμών προστασίας: Τα τελικά σημεία προορισμού APIs που είναι υπεύθυνα για τον έλεγχο ταυτότητας πρέπει να αντιμετωπίζονται διαφορετικά από τα κανονικά τελικά σημεία προορισμού και να εφαρμόζουν επιπλέον επίπεδα προστασίας. 2. Εσφαλμένη εφαρμογή του μηχανισμού: Ο μηχανισμός χρησιμοποιείται / υλοποιείται χωρίς να λαμβάνονται υπόψη τα διανύσματα επίθεσης (attack vectors) ή είναι λάθος η περίπτωση χρήσης του (π.χ. ένας μηχανισμός ελέγχου ταυτότητας που έχει σχεδιαστεί για εφαρμογές-πελάτες (clients) IoT μπορεί να μην είναι η σωστή επιλογή για εφαρμογές Ιστού). | Οι εισβολείς μπορούν να αποκτήσουν τον έλεγχο λογαριασμών άλλων χρηστών στο σύστημα, να διαβάσουν τα προσωπικά τους δεδομένα και να εκτελέσουν ευαίσθητες / διαβαθμισμένες ενέργειες για λογαριασμό τους, όπως συναλλαγές χρημάτων και αποστολή προσωπικών μηνυμάτων. | + +## Πότε το API είναι ευάλωτο + +Τα τελικά σημεία προορισμού (endpoints) και οι ροές (flows) ελέγχου ταυτότητας είναι στοιχεία που πρέπει να προστατεύονται. Λειτουργίες όπως το "Ξέχασα τον κωδικό πρόσβασης / επαναφορά κωδικού πρόσβασης" θα πρέπει να αντιμετωπίζονται με τον ίδιο τρόπο όπως και οι μηχανισμοί ελέγχου ταυτότητας. + +Ένα API είναι ευάλωτο εάν: +* Επιτρέπει [credential stuffing][1] με το οποίο ο εισβολέας έχει την δυνατότητα να αυτοματοποιήσει την προσπάθεια πρόσβασης χρησιμοποιώντας κλεμμένες λίστες με έγκυρα ονόματα χρηστών και κωδικών πρόσβασης. +* Επιτρέπει στους εισβολείς να εκτελούν επίθεση ωμής βίας (brute force attack) στον ίδιο λογαριασμό χρήστη, χωρίς να παρουσιάζουν μηχανισμό captcha ή κλειδώματος λογαριασμού. +* Επιτρέπει αδύναμους κωδικούς πρόσβασης. +* Στέλνει ευαίσθητες λεπτομέρειες ελέγχου ταυτότητας, όπως διακριτικά ταυτότητας (authentication tokens) και κωδικούς πρόσβασης στη διεύθυνση URL (δηλαδή μέσω χρήσης GET HTTP requests). +* Δεν επικυρώνει την αυθεντικότητα των διακριτικών. +* Αποδέχεται ανυπόγραφα/ασθενώς υπογεγραμμένα διακριτικά JWT (`"alg":"none"`)/δεν επικυρώνει την ημερομηνία λήξης τους. +* Διαχειρίζεται κωδικούς πρόσβασης ως απλό κείμενο, χωρίς την χρήση κρυπτογράφησης ή χρησιμοποιεί αδύναμους αλγόριθμους κρυπτογράφησης ή κατακερματισμού (hashing). +* Χρησιμοποιεί αδύναμα κλειδιά κρυπτογράφησης. + +## Παραδείγματα από Σενάρια Επίθεσης + +## Σενάριο Επίθεσης #1 + +Το [Credential stuffing][1] (χρησιμοποιώντας [λίστες γνωστών ονομάτων χρήστη/κωδικών πρόσβασης][2]), είναι μια συνηθισμένη επίθεση. Εάν μια εφαρμογή δεν εφαρμόζει προστασία από αυτοματοποιημένες απειλές ή credential stuffing, η εφαρμογή μπορεί να χρησιμοποιηθεί από τους εισβολείς ως ένα μέσο για να προσδιορίσουν εάν τα διαπιστευτήρια είναι έγκυρα. Η τεχνική αυτή μετατρέπει το API σε έναν ελεγκτή (ή μαντείο - oracle) κωδικών πρόσβασης. + +## Σενάριο Επίθεσης #2 + +Ένας εισβολέας ξεκινάει τη διαδικασία ανάκτησης κωδικού πρόσβασης στέλνοντας ένα +αίτημα HTTP POST στο `/api/system/verification-codes` και παρέχοντας το όνομα χρήστη +στο σώμα του αιτήματος (request). Στη συνέχεια, αποστέλλεται μέσω SMS ένας κωδικός με 6 ψηφία στο τηλέφωνο του θύματος. Επειδή το API δεν διαθέτει προστασία περιορισμού του ρυθμού των αιτημάτων, ο εισβολέας μπορεί να δοκιμάσει όλους τους πιθανούς συνδυασμούς χρησιμοποιώντας μία πολυνηματική εφαρμογή (multi-threaded script) η οποία στέλνει πολλαπλά αιτήματα στο σημείο προορισμού (URL endpoint) `/api/system/verification-codes/{smsToken}` έως ότου ανακαλύψει τον σωστό 6-ψήφιο κωδικό. Ένα τέτοιο σενάριο επίθεσης μπορεί να ολοκληρωθεί μέσα σε λίγα λεπτά. + +## Τρόπος Πρόληψης + +* Βεβαιωθείτε ότι γνωρίζετε όλες τις πιθανές ροές εκτέλεσης (execution flows) για έλεγχο ταυτότητας στο API (σύνδεσμοι για κινητά/ιστό/deep links που εφαρμόζουν έλεγχο ταυτότητας με ένα κλικ/κ.λπ.) +* Επιβεβαιώστε με τους μηχανικούς σας όλες τις ροές εκτέλεσης. +* Διαβάστε σχετικά με τους μηχανισμούς ελέγχου ταυτότητας. Βεβαιωθείτε ότι καταλαβαίνετε +τι και πώς χρησιμοποιούνται. Το OAuth δεν είναι έλεγχος ταυτότητας, ούτε και τα κλειδιά API. +* Μην ανακαλύπτετε ξανά τον τροχό στον έλεγχο ταυτότητας, τη δημιουργία διακριτικών, +τους τρόπους αποθήκευσης κωδικών πρόσβασης. Χρησιμοποιήστε τις καθιερωμένες προδιαγραφές (standards). +* Τα τελικά σημεία ανάκτησης διαπιστευτηρίων/λήψης κωδικού πρόσβασης θα πρέπει να αντιμετωπίζονται +ως τελικά σημεία σύνδεσης. Εφαρμόστε τα ίδια συστήματα ασφαλείας κατά επιθέσεων όπως την ωμή βία (brute force), τον περιορισμό του ρυθμού (rate limiting) και τις προστασίες κλειδώματος. +* Συμβουλευτείτε και χρησιμοποιήστε το [OWASP Authentication Cheatsheet][3]. +* Όπου είναι δυνατόν, εφαρμόστε έλεγχο ταυτότητας πολλαπλών παραγόντων (multi-factor authentication). +* Εφαρμόστε μηχανισμούς κατά της ωμής βίας για τον μετριασμό του credential stuffing, της επίθεσης +λεξικού και των επιθέσεων ωμής βίας στα τελικά σημεία ελέγχου ταυτότητας. Αυτός ο μηχανισμός θα πρέπει +να είναι πιο αυστηρός από τον κανονικό μηχανισμό περιορισμού ρυθμών στο API σας. +* Εφαρμόστε το μηχανισμό [account lockout][4] / captcha για να αποτρέψετε την ωμή βία εναντίον συγκεκριμένων +χρηστών. Εφαρμόστε ελέγχους αδύναμου κωδικού πρόσβασης. +* Τα κλειδιά API δεν πρέπει να χρησιμοποιούνται για έλεγχο ταυτότητας χρήστη, αλλά για [client app/project authentication][5]. + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Key Management Cheat Sheet][6] +* [OWASP Authentication Cheatsheet][3] +* [Credential Stuffing][1] + +### Εξωτερικές Αναφορές + +* [CWE-798: Use of Hard-coded Credentials][7] + +[1]: https://www.owasp.org/index.php/Credential_stuffing +[2]: https://github.com/danielmiessler/SecLists +[3]: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html +[4]: https://www.owasp.org/index.php/Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003) +[5]: https://cloud.google.com/endpoints/docs/openapi/when-why-api-key +[6]: https://www.owasp.org/index.php/Key_Management_Cheat_Sheet +[7]: https://cwe.mitre.org/data/definitions/798.html diff --git a/2019/el-gr/src/0xa3-excessive-data-exposure.md b/2019/el-gr/src/0xa3-excessive-data-exposure.md new file mode 100644 index 000000000..f4e3b87a9 --- /dev/null +++ b/2019/el-gr/src/0xa3-excessive-data-exposure.md @@ -0,0 +1,52 @@ +API3:2019 Excessive Data Exposure +================================= + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **2** : Ανιχνευσιμότητα **2** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Η εκμετάλλευση (exploitation) της υπερβολικής έκθεσης δεδομένων (Excessive Data Exposure) είναι απλή και συνήθως πραγματοποιείται ανιχνεύοντας και αναλύοντας την κίνηση των δεδομένων που επιστρέφονται από το API στον χρήστη. Στόχος της ανάλυσης των δεδομένων είναι η αναζήτηση πιθανής έκθεσης σε ευαίσθητα δεδομένα που δεν πρέπει να επιστραφούν στον χρήστη. | Το κενό ασφαλείας εμφανίζεται όταν APIs βασίζονται στις εφαρμογές-πελάτες (client) για την εκτέλεση του φιλτραρίσματος δεδομένων. Δεδομένου ότι τα APIs χρησιμοποιούνται ως πηγές δεδομένων, συχνά οι προγραμματιστές προσπαθούν να τα υλοποιήσουν με γενικό τρόπο χωρίς να σκεφτούν την ευαισθησία των δεδομένων που εκτίθενται. Τα αυτόματα εργαλεία συνήθως δεν μπορούν να εντοπίσουν αυτόν τον τύπο ευπάθειας, επειδή είναι δύσκολο να γίνει διάκριση μεταξύ των μη-ευαίσθητων δεδομένων που επιστρέφονται από το API και των ευαίσθητων δεδομένων που δεν πρέπει να επιστραφούν. Η δυσκολία αυτή προκύπτει επειδή τα αυτόματα εργαλεία δεν κατανοούν σε βάθος την εφαρμογή. | Η υπερβολική έκθεση δεδομένων οδηγεί συνήθως σε έκθεση ευαίσθητων δεδομένων. | + +## Πότε το API είναι ευάλωτο + +Το API επιστρέφει ευαίσθητα δεδομένα στην εφαρμογή-πελάτη (client) βάσει σχεδίασης. Αυτά τα δεδομένα συνήθως φιλτράρονται από την πλευρά της εφαρμογής-πελάτη πριν παρουσιαστούν στον χρήστη. Ένας εισβολέας μπορεί εύκολα να δει τα ευαίσθητα δεδομένα ανιχνεύοντας την κίνηση. + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο Επίθεσης #1 + +Η ομάδα που ασχολείται με το development για κινητά χρησιμοποιεί το τελικό σημείο προορισμού +`/api/articles/{articleId}/comments/{commentId}` στην σελίδα προβολής άρθρων για την εμφάνιση +των μεταδεδομένων των σχολίων. Ανιχνεύοντας την κίνηση της εφαρμογής για κινητά, ένας εισβολέας +ανακαλύπτει ότι επιστρέφονται και άλλα ευαίσθητα δεδομένα που σχετίζονται +με τον συντάκτη του σχολίου. Η υλοποίηση τελικού σημείου προορισμού (endpoint), χρησιμοποιεί μια +γενική μέθοδο `toJSON()` για τη σειριοποίηση (serialization) του αντικειμένου στο μοντέλο `User`, +το οποίο περιέχει ευαίσθητα δεδομένα (PII). + +### Σενάριο Επίθεσης #2 + +Ένα σύστημα επιτήρησης που βασίζεται στο IOT επιτρέπει στους διαχειριστές να δημιουργούν χρήστες με διαφορετικά δικαιώματα. Ένας διαχειριστής δημιούργησε έναν λογαριασμό χρήστη για έναν νέο φύλακα που θα πρέπει να έχει πρόσβαση μόνο σε συγκεκριμένα κτίρια στον ιστότοπο. Μόλις ο φύλακας χρησιμοποιήσει την εφαρμογή του για κινητά, ενεργοποιείται μια κλήση API στη διεύθυνση: `/api/sites/111/cameras` προκειμένου να ληφθούν δεδομένα σχετικά με τις διαθέσιμες κάμερες και να εμφανίστουν στον πίνακα ελέγχου. Η απάντηση περιέχει μια λίστα με λεπτομέρειες σχετικά με τις κάμερες στην ακόλουθη μορφή: `{"id":"xxx","live_access_token":"xxxx-bbbbb","building_id":"yyy"}`. Ενώ το GUI της εφαρμογής-πελάτη εμφανίζει μόνο κάμερες στις οποίες θα πρέπει να έχει πρόσβαση ο φύλακας, η πραγματική απόκριση API περιέχει μια πλήρη λίστα με όλες τις κάμερες στον ιστότοπο. + +## Τρόπος Πρόληψης + +* Μην βασίζεστε ποτέ στην πλευρά της εφαρμογής-πελάτη για να φιλτράρετε ευαίσθητα δεδομένα. +* Ελέγξτε τις απαντήσεις από το API για να βεβαιωθείτε ότι περιέχουν μόνο αποδεκτά δεδομένα. +* Οι back-end προγραμματιστές θα πρέπει πάντα να διερωτόνται "ποιος είναι ο καταναλωτής των δεδομένων;", + πριν εκθέσουν δημόσια ένα νέο τελικό σημείο προορισμού API. +* Αποφύγετε τη χρήση γενικών μεθόδων όπως `to_json()` και `to_string()`. +Αντίθετα, επιλέξτε συγκεκριμένα πεδία που θέλετε πραγματικά να επιστρέψετε. +* Ταξινομήστε όλες τις ευαίσθητες και προσωπικά αναγνωρίσιμες πληροφορίες (PII) +τις οποίες αποθηκεύει και συνεργάζεται η εφαρμογή σας, ελέγχοντας όλες τις κλήσεις +API που επιστρέφουν τέτοιες πληροφορίες για να δείτε εάν αυτές οι απαντήσεις +δημιουργούν πρόβλημα ασφαλείας. +* Εφαρμόστε έναν μηχανισμό επικύρωσης απόκρισης που βασίζεται σε σχήματα (schema-based) +ως ένα επιπλέον επίπεδο ασφαλείας. Ως μέρος αυτού του μηχανισμού ορίστε και επιβάλλετε +δεδομένα που επιστρέφονται από όλες τις μεθόδους API, συμπεριλαμβανομένων των σφαλμάτων. + + +## Αναφορές (References) + +### Εξωτερικές Αναφορές + +* [CWE-213: Intentional Information Exposure][1] + +[1]: https://cwe.mitre.org/data/definitions/213.html diff --git a/2019/el-gr/src/0xa4-lack-of-resources-and-rate-limiting.md b/2019/el-gr/src/0xa4-lack-of-resources-and-rate-limiting.md new file mode 100644 index 000000000..cbd9008e0 --- /dev/null +++ b/2019/el-gr/src/0xa4-lack-of-resources-and-rate-limiting.md @@ -0,0 +1,76 @@ +API4:2019 Lack of Resources & Rate Limiting +=========================================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **2** | Επικράτηση (Prevalence) **3** : Ανιχνευσιμότητα **3** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Η εκμετάλλευση (exploitation) αυτής της αδυναμίας ασφαλείας απαιτεί μόνο την αποστολή απλών αιτημάτων (requests) στο API. Δεν απαιτείται έλεγχος ταυτότητας. Πολλαπλά ταυτόχρονα αιτήματα (requests) μπορούν να αποσταλούν από έναν μόνο τοπικό υπολογιστή ή χρησιμοποιώντας πόρους υπολογιστικού νέφους (cloud computing). | Είναι σύνηθες να βρίσκουμε API που δεν εφαρμόζουν περιορισμό ρυθμού (rate limiting) ή APIs όπου τα όρια περιορισμού δεν έχουν οριστεί σωστά. | Η εκμετάλλευση (exploitation) μπορεί να οδηγήσει σε επιθέσεις άρνησης υπηρεσιών (DoS), καθιστώντας το API μη ανταποκρινόμενο ή ακόμη και μη διαθέσιμο. | + +## Πότε το API είναι ευάλωτο + +Τα αιτήματα (requests) API καταναλώνουν πόρους (resources) όπως πόρους δικτύου, επεξεργαστή (CPU), μνήμης και αποθήκευσης. Το ποσό των πόρων που απαιτούνται για την ολοκλήρωση ενός αιτήματος εξαρτάται σε μεγάλο βαθμό από τα δεδομένα εισόδου του χρήστη και την επιχειρηματική λογική (business logic) του τελικού σημείου προορισμού (endpoint). Επίσης, λάβετε υπόψη το γεγονός ότι τα αιτήματα από πολλαπλούς πελάτες API ανταγωνίζονται για τους πόρους του συστήματος. Ένα API είναι ευάλωτο εάν τουλάχιστον ένα από τα ακόλουθα όρια περιορισμού λείπει ή τα όρια περιορισμού δεν έχουν οριστεί καταλλήλως (π.χ. πολύ χαμηλά/υψηλά): + +* Χρονικά όρια εκτέλεσης (execution timeouts) +* Μέγιστο ποσό δέσμευσης μνήμης +* Αριθμός περιγραφέων αρχείου (file descriptors) +* Αριθμός διεργασιών (processes) +* Μέγεθος αιτήματος ωφέλιμου φορτίου (request payload size) (π.χ. μεταφορτώσεις (uploads)) +* Αριθμός αιτημάτων ανά πρόγραμμα-πελάτη/πόρο συστήματος +* Αριθμός εγγραφών ανά σελίδα που περιέχονται σε κάθε απάντηση αιτήματος (request response) + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο #1 + +Ένας εισβολέας ανεβάζει μια μεγάλη εικόνα υποβάλλοντας ένα αίτημα POST στο `/api/v1/images`. +Όταν ολοκληρωθεί η μεταφόρτωση, το API δημιουργεί πολλές μικρογραφίες (thumbnails) με διαφορετικά μεγέθη. +Λόγω του μεγάλου μεγέθους της μεταφορτωμένης εικόνας, η διαθέσιμη μνήμη του συστήματος εξαντλείται κατά τη δημιουργία μικρογραφιών και το API σταματάει να ανταποκρίνεται. + +### Σενάριο #2 + +Έχουμε μια εφαρμογή που περιέχει τη λίστα χρηστών σε μια διεπαφή χρήστη (UI) με όριο +200 χρήστες ανά σελίδα. Η λίστα των χρηστών ανακτάται από τον διακομιστή (server) χρησιμοποιώντας +το ακόλουθο ερώτημα: `/api/users?page=1&size=200`. Ένας εισβολέας αλλάζει την παράμετρο +μεγέθους σε `200 000`, προκαλώντας προβλήματα απόδοσης (performance) στη βάση δεδομένων. +Τα προβλήματα απόδοσης της βάσης δεδομένων σταματούν το API από το να ανταποκρίνεται και +το API δεν είναι πλέον σε θέση να χειριστεί περαιτέρω αιτήματα από τον τρέχων ή άλλους πελάτες (γνωστό και ως DoS). + +Το ίδιο σενάριο μπορεί να χρησιμοποιηθεί για την πρόκληση σφαλμάτων υπερχείλισης ακεραίων (Integer Overflow) ή υπερχείλισης buffer (Buffer Overflow). + +## Τρόπος Πρόληψης + +* Το Docker διευκολύνει τον περιορισμό της [μνήμης][1], του [επεξεργαστή CPU][2], τον [αριθμό επανεκκινήσεων][3], + των [περιγραφέων αρχείου (file descriptors), και διεργασιών (processes)][4]. +* Εφαρμόστε ένα όριο περιορισμού σχετικά με το πόσο συχνά ένα πρόγραμμα-πελάτης μπορεί να καλεί το API εντός ενός καθορισμένου χρονικού πλαισίου. +* Ειδοποιήστε το πρόγραμμα-πελάτη όταν γίνεται υπέρβαση του ορίου παρέχοντας τον αριθμό ορίου και την ώρα κατά την οποία θα γίνει επαναφορά του ορίου. +* Προσθέστε την κατάλληλη επικύρωση (validation) από την πλευρά του διακομιστή για τις παραμέτρους συμβολοσειράς ερωτήματος (query string) και σώματος αιτήματος (request body), ειδικά αυτή που ελέγχει τον αριθμό των εγγραφών που θα επιστραφούν στην απάντηση. +* Καθορίστε και επιβάλλετε μέγιστο μέγεθος δεδομένων σε όλες τις εισερχόμενες παραμέτρους και ωφέλιμα φορτία (payloads), +όπως το μέγιστο μήκος για τις συμβολοσειρές (strings) και τον μέγιστο αριθμό στοιχείων σε πίνακες (elements in arrays). + + +## Αναφορές (References) + +### Αναφορές OWASP + +* [Blocking Brute Force Attacks][5] +* [Docker Cheat Sheet - Limit resources (memory, CPU, file descriptors, + processes, restarts)][6] +* [REST Assessment Cheat Sheet][7] + +### Εξωτερικές Αναφορές + +* [CWE-307: Improper Restriction of Excessive Authentication Attempts][8] +* [CWE-770: Allocation of Resources Without Limits or Throttling][9] +* “_Rate Limiting (Throttling)_” - [Security Strategies for Microservices-based + Application Systems][10], NIST + +[1]: https://docs.docker.com/config/containers/resource_constraints/#memory +[2]: https://docs.docker.com/config/containers/resource_constraints/#cpu +[3]: https://docs.docker.com/engine/reference/commandline/run/#restart-policies---restart +[4]: https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit +[5]: https://www.owasp.org/index.php/Blocking_Brute_Force_Attacks +[6]: https://github.com/OWASP/CheatSheetSeries/blob/3a8134d792528a775142471b1cb14433b4fda3fb/cheatsheets/Docker_Security_Cheat_Sheet.md#rule-7---limit-resources-memory-cpu-file-descriptors-processes-restarts +[7]: https://github.com/OWASP/CheatSheetSeries/blob/3a8134d792528a775142471b1cb14433b4fda3fb/cheatsheets/REST_Assessment_Cheat_Sheet.md +[8]: https://cwe.mitre.org/data/definitions/307.html +[9]: https://cwe.mitre.org/data/definitions/770.html +[10]: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-204-draft.pdf diff --git a/2019/el-gr/src/0xa5-broken-function-level-authorization.md b/2019/el-gr/src/0xa5-broken-function-level-authorization.md new file mode 100644 index 000000000..7c2f8cb9d --- /dev/null +++ b/2019/el-gr/src/0xa5-broken-function-level-authorization.md @@ -0,0 +1,79 @@ +API5:2019 Broken Function Level Authorization +============================================= + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **2** : Ανιχνευσιμότητα **1** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Η εκμετάλλευση (exploitation) αυτής της αδυναμίας ασφαλείας απαιτεί από τον εισβολέα (attacker) να στείλει έγκυρες κλήσεις σε τελικό σημείο προορισμού API (endpoint) στο οποίο κανονικά δεν θα πρέπει να έχει πρόσβαση. Αυτά τα τελικά σημεία προορισμού ενδέχεται να εκτίθενται σε ανώνυμους χρήστες ή/και σε κανονικούς, μη προνομιούχους/εξουσιοδοτημένους χρήστες (non-privileged users). Είναι εύκολο να ανακαλύψετε τέτοιου είδους ελαττώματα σε APIs καθώς τα APIs έχουν δομή και ο τρόπος πρόσβασης σε ορισμένες λειτουργίες είναι εύκολα προβλέψιμος (π.χ. αντικατάσταση της μεθόδου HTTP από GET σε PUT ή αλλαγή της συμβολοσειράς "users" στη διεύθυνση URL σε "admins" ). | Οι έλεγχοι εξουσιοδότησης (authorization checks) για μια λειτουργία (function) ή έναν πόρο συστήματος (resource) βασίζονται συνήθως σε ρυθμίσεις (configuration) και μερικές φορές υλοποιούνται σε επίπεδο κώδικα. Η εφαρμογή των κατάλληλων και σωστών ελέγχων εξουσιοδότησης είναι συνήθως μια περίπλοκη εργασία, καθώς οι σύγχρονες εφαρμογές ενδέχεται να περιέχουν πολλούς τύπους ρόλων ή ομάδων και πολύπλοκη ιεραρχία χρηστών (π.χ. υπο-χρήστες, χρήστες με περισσότερους από έναν ρόλους). | Οι αδυναμίες ασφαλείας αυτές επιτρέπουν στους εισβολείς να έχουν πρόσβαση σε μη εξουσιοδοτημένες λειτουργίες. Οι διαχειριστικές λειτουργίες (administrative functions) είναι οι βασικοί στόχοι για αυτό το είδος επίθεσης. | + +## Πότε το API είναι ευάλωτο + +Ο καλύτερος τρόπος για να βρείτε αδυναμίες ασφαλείας εξουσιοδότησης σε επίπεδο λειτουργιών (Broken Function Level Authorization) είναι να πραγματοποιήσετε μια ενδελεχή ανάλυση (deep analysis) του μηχανισμού εξουσιοδότησης (authorization mechanism). Λάβετε υπόψιν σας την ιεραρχία των χρηστών, τους διαφορετικούς ρόλους ή/και τις ομάδες του συστήματος χρησιμοποιώντας τις ακόλουθες ερωτήσεις: + +* Μπορεί ένας κανονικός χρήστης να έχει πρόσβαση στα τελικά σημεία διαχείρισης (administrative endpoints); +* Μπορεί ένας χρήστης να εκτελέσει ευαίσθητες ενέργειες (π.χ. δημιουργία, τροποποίηση ή διαγραφή) στις οποίες δεν θα έπρεπε να έχει πρόσβαση αλλάζοντας απλώς τη μέθοδο HTTP (π.χ. από "GET" σε "DELETE"); +* Μπορεί ένας χρήστης από την ομάδα Χ να αποκτήσει πρόσβαση σε μια λειτουργία που θα πρέπει να εκτίθεται μόνο σε χρήστες από την ομάδα Υ, μαντεύοντας απλώς τη διεύθυνση URL του τελικού σημείου προορισμού και τις παραμέτρους (π.χ. `/api/v1/users/export_all`); + +Μην υποθέτετε ότι ένα τελικό σημείο API είναι κανονικό ή διαχειριστικό μόνο με βάση τη διαδρομή URL. + +Παρόλο που οι προγραμματιστές ενδέχεται να επιλέξουν να εκθέσουν τα περισσότερα από τα διαχειριστικά τελικά σημεία προορισμού σε μια συγκεκριμένη σχετική διαδρομή, όπως `api/admins`, είναι πολύ συνηθισμένο να βρίσκουμε αυτά τα τελικά σημεία διαχείρισης και σε άλλες σχετικές διαδρομές μαζί με κανονικά τελικά σημεία προορισμού, όπως `api/users`. + +## Παραδείγματα Σεναρίων Επίθεσης + +### Σενάριο Επίθεσης #1 + +Κατά τη διαδικασία εγγραφής σε μια εφαρμογή που επιτρέπει τη συμμετοχή μόνο σε +προσκεκλημένους χρήστες, η εφαρμογή για κινητά εκτελεί μια κλήση API στο +`GET /api/invites/{invite_guid}`. Η απάντηση περιέχει ένα JSON με λεπτομέρειες +σχετικές με την πρόσκληση, συμπεριλαμβανομένου του ρόλου του χρήστη και του email του χρήστη. + +Ένας εισβολέας αντέγραψε το αίτημα και άλλαξε τη μέθοδο HTTP και το τελικό +σημείο σε `POST /api/invites/new`. Αυτό το τελικό σημείο προορισμού θα πρέπει να είναι προσβάσιμο μόνο +από διαχειριστές που χρησιμοποιούν την κονσόλα διαχείρισης, το οποίο όμως τελικό σημείο προορισμού δεν εφαρμόζει ελέγχους +εξουσιοδότησης σε επίπεδο λειτουργίας. + +Ο εισβολέας εκμεταλλεύεται το πρόβλημα και στέλνει στον εαυτό του μια πρόσκληση για να δημιουργήσει έναν λογαριασμό διαχειριστή: + +``` +POST /api/invites/new + +{“email”:”hugo@malicious.com”,”role”:”admin”} +``` + +### Σενάριο Επίθεσης #2 + +Ένα API περιέχει ένα τελικό σημείο προορισμού (endpoint) που θα πρέπει να είναι προσβάσιμο μόνο στους διαχειριστές - +`GET /api/admin/v1/users/all`. Αυτό το τελικό σημείο προορισμού επιστρέφει τα στοιχεία όλων των χρηστών της +εφαρμογής και δεν εφαρμόζει ελέγχους εξουσιοδότησης σε επίπεδο λειτουργίας. Ένας εισβολέας που +έμαθε τη δομή του API κάνει μια πιθανή εικασία και καταφέρνει να αποκτήσει πρόσβαση σε αυτό +το τελικό σημείο προορισμού, το οποίο εκθέτει ευαίσθητες λεπτομέρειες των χρηστών της εφαρμογής. + + + +## Τρόπος Πρόληψης + +Η εφαρμογή σας θα πρέπει να διαθέτει ένα σταθερό και εύκολο στην ανάλυση υποσύστημα εξουσιοδότησης (authorization module) το οποίο θα χρησιμοποιείται από όλες τις επιχειρησιακές λειτουργίες (business functions). + +Συχνά, μια τέτοια προστασία παρέχεται από ένα ή περισσότερα υποσυστήματα (components) που βρίσκονται εκτός του κώδικα της εφαρμογής. + +* Οι μηχανισμοί επιβολής θα πρέπει από προεπιλογή (by default) να απαγορεύουν κάθε πρόσβαση, απαιτώντας ρητές εξουσιοδοτήσεις (explicit grants) σε συγκεκριμένους ρόλους για πρόσβαση σε κάθε λειτουργία. +* Ελέγξτε τα τελικά σημεία προορισμού του API σας σε σχέση με τις αδυναμίες ασφαλείας εξουσιοδότησης σε επίπεδο λειτουργίας (function level), λαμβάνοντας παράλληλα υπόψη την επιχειρησιακή λογική (business logic) της εφαρμογής και της ιεραρχίας των ομάδων χρηστών. +* Βεβαιωθείτε ότι όλα τα διαχειριστικά υποσυστήματα (controllers) βασίζουν την λειτουργία τους σε ένα γενικό διαχειριστικό υποσύστημα (abstract controller) που εφαρμόζει ελέγχους εξουσιοδότησης βάσει της ομάδας και του ρόλου του χρήστη. +* Βεβαιωθείτε ότι οι λειτουργίες διαχείρισης μέσα σε ένα κανονικό διαχειριστικό υποσύστημα (controller) εφαρμόζουν ελέγχους εξουσιοδότησης βάσει της ομάδας και του ρόλου του χρήστη. + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Article on Forced Browsing][1] +* [OWASP Top 10 2013-A7-Missing Function Level Access Control][2] +* [OWASP Development Guide: Chapter on Authorization][3] + +### Εξωτερικές Αναφορές + +* [CWE-285: Improper Authorization][4] + +[1]: https://www.owasp.org/index.php/Forced_browsing +[2]: https://www.owasp.org/index.php/Top_10_2013-A7-Missing_Function_Level_Access_Control +[3]: https://www.owasp.org/index.php/Category:Access_Control +[4]: https://cwe.mitre.org/data/definitions/285.html diff --git a/2019/el-gr/src/0xa6-mass-assignment.md b/2019/el-gr/src/0xa6-mass-assignment.md new file mode 100644 index 000000000..d829b21b0 --- /dev/null +++ b/2019/el-gr/src/0xa6-mass-assignment.md @@ -0,0 +1,68 @@ +API6:2019 Mass Assignment +=========================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **2** | Επικράτηση (Prevalence) **2** : Ανιχνευσιμότητα **2** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Η εκμετάλλευση (exploitation) αυτής της αδυναμίας ασφαλείας συνήθως απαιτεί κατανόηση της επιχειρησιακής λογικής (business logic), των σχέσεων των αντικειμένων και της δομής του API. Η εκμετάλλευση της μαζικής εκχώρησης (Mass Assignment) είναι ευκολότερη στα APIs, καθώς από το σχεδιασμό τους εκθέτουν την υλοποίηση της εφαρμογής μαζί με τα ονόματα των ιδιοτήτων (properties). | Τα σύγχρονα frameworks ενθαρρύνουν τους προγραμματιστές να χρησιμοποιούν συναρτήσεις (functions) που συνδέουν αυτόματα την είσοδο από τον χρήστη ή την εφαρμογή-πελάτη (client) σε μεταβλητές κώδικα και εσωτερικά αντικείμενα. Οι εισβολείς μπορούν να χρησιμοποιήσουν αυτήν τη μεθοδολογία για να ενημερώσουν ή να αντικαταστήσουν τις τιμές ευαίσθητων ιδιοτήτων αντικειμένων (object properties), τις οποίες οι προγραμματιστές δεν σκόπευαν ποτέ να εκθέσουν στους χρήστες. | Η εκμετάλλευση (exploitation) μπορεί να οδηγήσει σε κλιμάκωση των προνομίων (privilege escalation), παραποίηση δεδομένων (data tampering), παράκαμψη μηχανισμών ασφαλείας και πολλά άλλα. | + +## Πότε το API είναι ευάλωτο + +Τα αντικείμενα (objects) στις σύγχρονες εφαρμογές μπορεί να περιέχουν πολλές ιδιότητες (properties). +Ορισμένες από αυτές τις ιδιότητες θα πρέπει να μπορούν να ενημερώνονται απευθείας από την εφαρμογή-πελάτη (client) (π.χ. `user.first_name` ή `user.address`) και ορισμένες από αυτές δεν θα πρέπει να είναι προσβάσιμες στους χρήστες / εφαρμογές-πελάτες (π.χ. `user.is_vip`). + +Ένα τελικό σημείο προορισμού API είναι ευάλωτο εάν μετατρέπει αυτόματα τις παραμέτρους της εφαρμογής-πελάτη σε ιδιότητες εσωτερικού αντικειμένου, χωρίς να λαμβάνεται υπόψη η ευαισθησία και το επίπεδο έκθεσης αυτών των ιδιοτήτων. Αυτό θα μπορούσε να επιτρέψει σε έναν εισβολέα να ενημερώσει τις ιδιότητες αντικειμένων (object properties), στις οποίες δεν θα έπρεπε να έχει πρόσβαση. + +Παραδείγματα ευαίσθητων ιδιοτήτων (properties): + +* **Ιδιότητες που σχετίζονται με δικαιώματα**: Τα `user.is_admin`, `user.is_vip` θα πρέπει να ορίζονται μόνο από διαχειριστές. +* **Ιδιότητες που εξαρτώνται από κάποια διαδικασία (process)**: Το `user.cash` θα πρέπει να ορίζεται εσωτερικά μόνο μετά την επαλήθευση πληρωμής. +* **Εσωτερικές ιδιότητες**: Η ιδιότητα `article.created_time` θα πρέπει να επιτρέπεται να ορίζεται μόνο εσωτερικά από την εφαρμογή. + +## Παραδείγματα Σεναρίων Επίθεσης + +### Σενάριο Επίθεσης #1 + +Μια εφαρμογή διαμοιρασμού διαδρομής (ride sharing) παρέχει στον χρήστη την επιλογή να επεξεργαστεί βασικές πληροφορίες για το προφίλ του. +Κατά τη διάρκεια αυτής της διαδικασίας, αποστέλλεται μια κλήση API στο +`PUT /api/v1/users/me` με το ακόλουθο έγκυρο αντικείμενο JSON: + +```json +{"user_name":"inons","age":24} +``` + +Το αίτημα `GET /api/v1/users/me` περιλαμβάνει μια πρόσθετη ιδιότητα credit_balance: + +```json +{"user_name":"inons","age":24,"credit_balance":10} +``` + +Ο εισβολέας επαναλαμβάνει το πρώτο αίτημα με το ακόλουθο payload: +```json +{"user_name":"attacker","age":60,"credit_balance":99999} +``` + +Δεδομένου ότι το τελικό σημείο προορισμού είναι ευάλωτο σε μαζική εκχώρηση (Mass Assignment), ο εισβολέας λαμβάνει πιστώσεις (credits) χωρίς να πληρώσει. + +### Σενάριο Επίθεσης #2 + +Ένα portal διαμοιρασμού βίντεο (video sharing portal) επιτρέπει στους χρήστες να ανεβάζουν περιεχόμενο και να κατεβάζουν περιεχόμενο σε διαφορετικές μορφές (formats). Ένας εισβολέας που εξερευνά το API διαπίστωσε ότι το τελικό σημείο προορισμού `GET /api/v1/videos/{video_id}/meta_data` επιστρέφει ένα αντικείμενο JSON με τις ιδιότητες του βίντεο. Μία από τις ιδιότητες είναι `"mp4_conversion_params":"-v codec h264"`, που υποδεικνύει ότι η εφαρμογή χρησιμοποιεί μια εντολή shell για τη μετατροπή του βίντεο. + +Ο εισβολέας διαπίστωσε επίσης ότι το τελικό σημείο προορισμού `POST /api/v1/videos/new` είναι ευάλωτο σε μαζική εκχώρηση (Mass Assignment) και επιτρέπει στην εφαρμογή-πελάτη (client) να ορίσει οποιαδήποτε ιδιότητα του αντικειμένου βίντεο. +Ο εισβολέας ορίζει μια κακόβουλη τιμή ως εξής: +`"mp4_conversion_params":"-v codec h264 && format C:/"`. Αυτή η τιμή θα προκαλέσει μια έγχυση εντολής shell (shell command injection) μόλις ο εισβολέας κατεβάσει το βίντεο ως MP4. + +## Τρόπος Πρόληψης + +* Εάν είναι δυνατόν, αποφύγετε τη χρήση συναρτήσεων που μετατρέπουν αυτόματα την είσοδο μιας εφαρμογής-πελάτη σε μεταβλητές κώδικα ή σε εσωτερικά αντικείμενα. +* Δημιουργήστε μια λίστα επιτρεπόμενων (whitelist) ιδιοτήτων που να περιλαμβάνει μόνο τις ιδιότητες που επιτρέπεται να ενημερώνονται από τους χρήστες / εφαρμογές-πελάτες (API clients). +* Χρησιμοποιήστε ενσωματωμένες δυνατότητες του framework σας για να δημιουργήσετε μια λίστα μη-επιτρεπόμενων ιδιοτήτων στις οποίες δεν πρέπει να έχουν πρόσβαση οι εφαρμογές-πελάτες (API clients). +* Εάν είναι εφικτό, ορίστε και επιβάλλετε ρητά σχήματα (schemas) για τα payloads δεδομένων εισόδου. + +## Αναφορές (References) + +### Εξωτερικές Αναφορές + +* [CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes][1] + +[1]: https://cwe.mitre.org/data/definitions/915.html diff --git a/2019/el-gr/src/0xa7-security-misconfiguration.md b/2019/el-gr/src/0xa7-security-misconfiguration.md new file mode 100644 index 000000000..51f1edd00 --- /dev/null +++ b/2019/el-gr/src/0xa7-security-misconfiguration.md @@ -0,0 +1,94 @@ +API7:2019 Security Misconfiguration +=================================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **3** : Ανιχνευσιμότητα **3** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Οι εισβολείς συχνά επιχειρούν να βρουν μη επιδιορθωμένα ελαττώματα (unpatched flows), συνηθισμένα τελικά σημεία προορισμού ή μη προστατευμένα αρχεία και καταλόγους για να αποκτήσουν μη εξουσιοδοτημένη πρόσβαση ή γνώση του συστήματος. | Λανθασμένες ρυθμίσεις παραμέτρων ασφαλείας (Security Misconfigurations) μπορούν να υπάρξουν σε οποιοδήποτε επίπεδο της στοίβας API (API stack), από το επίπεδο δικτύου έως το επίπεδο εφαρμογής. Διατίθενται αυτοματοποιημένα εργαλεία για τον εντοπισμό και την εκμετάλλευση εσφαλμένων διαμορφώσεων, όπως περιττές υπηρεσίες ή ρυθμίσεις παλαιού τύπου (legacy options). | Οι εσφαλμένες ρυθμίσεις ασφαλείας όχι μόνο εκθέτουν ευαίσθητα δεδομένα χρηστών, αλλά εκθέτουν και λεπτομέρειες συστήματος που μπορεί να οδηγήσουν σε πλήρη παραβίαση του διακομιστή (server). | + +## Πότε το API είναι ευάλωτο + +Το API μπορεί να είναι ευάλωτο όταν: + +* Δεν υπάρχει η κατάλληλη θωράκιση ασφαλείας (security hardening) σε όλα τα τμήματα της στοίβας της εφαρμογής, ή υπάρχουν λανθασμένες ρυθμίσεις δικαιωμάτων σε υπηρεσίες Cloud. +* Δεν έχουν εγκατασταθεί οι ενημερωμένες εκδόσεις ασφαλείας, ή τα συστήματα είναι παροχημένα. +* Αχρείαστα χαρακτηριστικά (features) είναι ενεργοποιημένα (για παράδειγμα, το API δέχεται HTTP verbs που δεν χρησιμοποιούνται). +* Δεν υπάρχει Transport Layer Security (TLS). +* Δεν στέλνονται στις εφαρμογές-πελάτες (clients) οι οδηγίες ασφαλείας (security directives)(π.χ., [Επικεφαλίδες Ασφαλείας][1]). +* Δεν υπάρχει πολιτική Cross-Origin Resource Sharing (CORS) ή έχει ρυθμιστεί εσφαλμένα. +* Τα μηνύματα σφαλμάτων περιλαμβάνουν τεχνικές πληροφορίες για τα σφάλματα όπως τα ονόματα και την αλληλουχία των μεθόδων εκτέλεσης (stack trace) ή το API εκθέτει άλλες ευαίσθητες πληροφορίες. + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο Επίθεσης #1 + +Ένας εισβολέας βρίσκει το αρχείο `.bash_history` κάτω από τον κεντρικό φάκελο (root folder) +του διακομιστή, το οποίο περιλαμβάνει εντολές που χρησιμοποιούνται από την ομάδα DevOps για να έχουν πρόσβαση στο API: + +``` +$ curl -X GET 'https://api.server/endpoint/' -H 'authorization: Basic Zm9vOmJhcg==' +``` + +Ένας εισβολέας θα μπορούσε επίσης να βρει άγνωστα τελικά σημεία προορισμού του API που +χρησιμοποιούνται μόνο απο την ομάδα DevOps και τα οποία δεν είναι τεκμηριωμένα. + +### Σενάριο Επίθεσης #2 + +Θέτοντας ως στόχο μια συγκεκριμένη υπηρεσία, ένας εισβολέας χρησιμοποιεί μια δημοφιλή μηχανή αναζήτησης για να αναζητήσει +υπολογιστές άμεσα προσβάσιμους από το Διαδίκτυο. Ο εισβολέας βρίσκει έναν διακομιστή που τρέχει ένα δημοφιλές σύστημα +διαχείρισης βάσεων δεδομένων, το οποίο ακούει στην προεπιλεγμένη θύρα. +Ο διακομιστής αυτός χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις (default configuration), οι οποίες έχουν απενεργοποιημένο +τον έλεγχο ταυτότητας, με αποτέλεσμα ο εισβολέας να αποκτήσει πρόσβαση σε εκατομμύρια εγγραφές με προσωπικά δεδομένα (PII), +προσωπικές προτιμήσεις και δεδομένα ελέγχου ταυτότητας. + +### Σενάριο Επίθεσης #3 + +Επιθεωρώντας την μεταφορά των δεδομένων μιας εφαρμογής για κινητά, +ένας εισβολέας ανακαλύπτει ότι τα δεδομένα HTTP δεν μεταφέρονται ολικά κάτω από ένα ασφαλές πρωτόκολλο (π.χ. TLS). +Ο εισβολέας ανακαλύπτει ότι αυτό συμβαίνει ειδικά για τη λήψη εικόνων προφίλ. +Καθώς η αλληλεπίδραση του χρήστη με το API είναι δυαδική και παρά το γεγονός ότι η μεταφορά των δυαδικών δεδομένων του API εκτελείται κάτω από ένα ασφαλές πρωτόκολλο, ο εισβολέας ανακαλύπτει ένα μοτίβο όσον αφορά το μέγεθος των απαντήσεων του API. Στην συνέχεια, ο εισβολέας χρησιμοποιεί το μοτίβο για να βγάζει συμπεράσματα για τις προτιμήσεις των χρηστών σε σχέση με το περιεχόμενο που εμφανίζεται (π.χ. εικόνες προφίλ). + +## Τρόπος Πρόληψης + +Με στόχο την αποτελεσματική πρόληψη, ο κύκλος ζωής των API θα πρέπει να περιλαμβάνει τα παρακάτω: + +* Επαναλαμβανόμενη διαδικασία θωράκισης (hardening) που επιτρέπει γρήγορη +και εύκολη εγκατάσταση ενός σωστά ασφαλισμένου περιβάλλοντος στο οποίο θα τρέχουν τα APIs. +* Έλεγχο και ενημέρωση των ρυθμίσεων σε ολόκληρη τη στοίβα (stack) των APIs. Ο έλεγχος θα πρέπει να περιλαμβάνει αρχεία που χρησιμοποιούνται κατά την ενορχήστρωση (orchestration), API components και υπηρεσίες cloud (π.χ. δικαιώματα κάδων S3). +* Ένα ασφαλές κανάλι επικοινωνίας για όλες τις αλληλεπιδράσεις του API σε στατικά στοιχεία (π.χ. εικόνες). +* Αυτοματοποιημένη διαδικασία για τη συνεχή αξιολόγηση της αποτελεσματικότητας των ρυθμίσεων σε όλα τα περιβάλλοντα. + +Ακόμα: + +* Για να αποτρέψετε την πιθανή αποστολή τεχνικών πληροφοριών σε μηνύματα σφαλμάτων (exception trace) και άλλων πολύτιμων πληροφοριών στους εισβολείς, +εάν έχετε την δυνατότητα, ορίστε και επιβάλετε συγκρεκριμένα σχήματα απαντήσεων API (response payload schemas), συμπεριλαμβανομένων των απαντήσεων σφαλμάτων (error responses). +* Βεβαιωθείτε ότι το API είναι προσβάσιμο μόνο από τα ρήματα/μεθόδους HTTP (HTTP verbs) που έχετε καθορίσει. +Όλα τα άλλα ρήματα/μέθοδοι HTTP (HTTP verbs) θα πρέπει να είναι απενεργοποιημένα (π.χ. "HEAD"). +* Τα APIs που είναι σχεδιασμένα για να είναι προσβάσιμα από εφαρμογές-πελάτες μέσω προγραμμάτων περιήγησης (π.χ., το front-end μιας εφαρμογής Web) θα πρέπει να εφαρμόζουν μια σωστή πολιτική κοινής χρήσης πόρων μεταξύ προέλευσης (CORS). + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Secure Headers Project][1] +* [OWASP Testing Guide: Configuration Management][2] +* [OWASP Testing Guide: Testing for Error Codes][3] +* [OWASP Testing Guide: Test Cross Origin Resource Sharing][9] + +### Εξωτερικές Αναφορές + +* [CWE-2: Environmental Security Flaws][4] +* [CWE-16: Configuration][5] +* [CWE-388: Error Handling][6] +* [Guide to General Server Security][7], NIST +* [Let’s Encrypt: a free, automated, and open Certificate Authority][8] + +[1]: https://www.owasp.org/index.php/OWASP_Secure_Headers_Project +[2]: https://www.owasp.org/index.php/Testing_for_configuration_management +[3]: https://www.owasp.org/index.php/Testing_for_Error_Code_(OTG-ERR-001) +[4]: https://cwe.mitre.org/data/definitions/2.html +[5]: https://cwe.mitre.org/data/definitions/16.html +[6]: https://cwe.mitre.org/data/definitions/388.html +[7]: https://csrc.nist.gov/publications/detail/sp/800-123/final +[8]: https://letsencrypt.org/ +[9]: https://www.owasp.org/index.php/Test_Cross_Origin_Resource_Sharing_(OTG-CLIENT-007) diff --git a/2019/el-gr/src/0xa8-injection.md b/2019/el-gr/src/0xa8-injection.md new file mode 100644 index 000000000..7f9b37713 --- /dev/null +++ b/2019/el-gr/src/0xa8-injection.md @@ -0,0 +1,91 @@ +API8:2019 Injection +=================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **2** : Ανιχνευσιμότητα **3** | Τεχνικές Επιπτώσεις **3** : Εξαρτώνται από την Επιχείρηση | +| Οι εισβολείς εισάγουν στο API κακόβουλα δεδομένα μέσω οποιασδήποτε διαθέσιμης μεθόδου εισαγωγής δεδομένων αναμένοντας να σταλούν τελικώς σε έναν διερμηνέα λογισμικού (interpreter). Οι μέθοδοι αυτοί που μπορούν να χρησιμοποιηθούν για εισαγωγή κακόβουλων δεδομένων που καταλήγουν σε διερμηνείς λογισμικού ονομάζονται διανύσματα έγχυσης (injection vectors). Παραδείγματα τέτοιων μεθόδων είναι η άμεση εισαγωγή δεδομένων (direct input), οι παράμετροι (parameters), οι ολοκληρωμένες/ενσωματωμένες υπηρεσίες (integrated services) κ.λπ. | Οι ευπάθειες έγχυσης είναι πολύ κοινές και εντοπίζονται συχνά σε ερωτήματα SQL, LDAP ή NoSQL, εντολές λειτουργικού συστήματος, αναλυτές XML και ORM. Αυτές οι ευπάθειες είναι εύκολο να εντοπιστούν κατά τον έλεγχο του πηγαίου κώδικα. Οι επιτιθέμενοι μπορούν να χρησιμοποιήσουν σαρωτές και fuzzers για να εντοπίσουν τέτοιες ευπάθειες. | Η έγχυση (injection) μπορεί να οδηγήσει σε αποκάλυψη πληροφοριών και απώλεια δεδομένων. Μπορεί επίσης να οδηγήσει σε επιθέσεις άρνησης εξυπηρέτησης (DoS) ή πλήρη κατάληψη του κεντρικού υπολογιστή. | + +## Πότε το API είναι ευάλωτο + +Το API είναι ευάλωτο σε ευπάθεια έγχυσης (injection flaw) όταν: + +* Τα δεδομένα που παρέχονται από τους χρήστες ή εφαρμογές-πελάτες δεν επικυρώνονται, δεν φιλτράρονται ή δεν απολυμαίνονται (sanitized) από το API. +* Τα δεδομένα που παρέχονται από τους χρήστες ή εφαρμογές-πελάτες χρησιμοποιούνται απευθείας ή συνδέονται με ερωτήματα SQL/NoSQL/LDAP, εντολές λειτουργικού συστήματος, αναλυτές XML και σχεσιακή αντιστοίχιση αντικειμένων (ORM) / χαρτογράφηση εγγράφων αντικειμένου (ODM). +* Τα δεδομένα που προέρχονται από εξωτερικά συστήματα (π.χ. ολοκληρωμένα/ενσωματωμένα συστήματα) δεν επικυρώνονται (validation), δεν φιλτράρονται (filtering) ή δεν απολυμαίνονται (sanitization) από το API. + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο Επίθεσης #1 + +Το υλικολογισμικό (firmware) μιας συσκευής γονικού ελέγχου παρέχει το τελικό σημείο προορισμού `/api/CONFIG/restore` το οποίο έχει σχεδιαστεί έτσι ώστε η παράμετρος `appId` να αποστέλεται ως παράμετρος πολλαπλών τμημάτων (multipart parameter). +Χρησιμοποιώντας έναν απομεταγλωττιστή (decompiler), ένας εισβολέας ανακαλύπτει ότι το `appId` περνάει απευθείας σε μια κλήση συστήματος χωρίς καμία απολύμανση (sanitization): + +```c +snprintf(cmd, 128, "%srestore_backup.sh /tmp/postfile.bin %s %d", + "/mnt/shares/usr/bin/scripts/", appid, 66); +system(cmd); +``` + +Η ακόλουθη εντολή επιτρέπει στον εισβολέα να τερματίσει οποιαδήποτε συσκευή με το ίδιο ευάλωτο υλικολογισμικό: + +``` +$ curl -k "https://${deviceIP}:4567/api/CONFIG/restore" -F 'appid=$(/etc/pod/power_down.sh)' +``` + +### Σενάριο Επίθεσης #2 + +Έχουμε μια εφαρμογή με βασική λειτουργικότητα CRUD για λειτουργίες με κρατήσεις (bookings). +Ένας εισβολέας κατάφερε να αναγνωρίσει ότι η εισαγωγή NoSQL μπορεί να είναι δυνατή μέσω της παραμέτρου ερωτήματος `bookingId` στο αίτημα διαγραφής κράτησης. To αίτημα είναι το εξής: `DELETE /api/bookings?bookingId=678`. + +Ο διακομιστής API χρησιμοποιεί την ακόλουθη λειτουργία (function) για να χειριστεί αιτήματα διαγραφής: + +```javascript +router.delete('/bookings', async function (req, res, next) { + try { + const deletedBooking = await Bookings.findOneAndRemove({'_id' : req.query.bookingId}); + res.status(200); + } catch (err) { + res.status(400).json({error: 'Unexpected error occured while processing a request'}); + } +}); +``` + +Ο εισβολέας υπέκλεψε το αίτημα και άλλαξε την παράμετρο ερωτήματος `bookingId`, όπως φαίνεται παρακάτω. Σε αυτήν την περίπτωση, ο εισβολέας κατάφερε να διαγράψει την κράτηση άλλου χρήστη: + +``` +DELETE /api/bookings?bookingId[$ne]=678 +``` + +## Τρόπος Πρόληψης + +Η πρόληψη της έγχυσης απαιτεί τη διατήρηση των δεδομένων ξεχωριστά από εντολές και ερωτήματα. + +* Εκτελέστε επικύρωση (validation) δεδομένων χρησιμοποιώντας μια αξιόπιστη και ενεργά συντηρούμενη βιβλιοθήκη. +* Όλα τα δεδομένα που παρέχονται από τους χρήστες ή εφαρμογές-πελάτες ή άλλα δεδομένα που προέρχονται από ενσωματωμένα συστήματα πρέπει να επικυρώνονται (validation), φιλτράρονται ή/και να απολυμαίνονται (sanitization). +* Οι ειδικοί χαρακτήρες θα πρέπει να διαφεύγονται (escape) χρησιμοποιώντας τη συγκεκριμένη σύνταξη του διερμηνέα λογισμικού που λαμβάνει τα δεδομένα. +* Προτιμήστε ένα ασφαλές API που παρέχει μια παραμετροποιημένη διεπαφή. +* Φροντίστε να περιορίσετε τον αριθμό των επιστρεφόμενων εγγραφών για να αποτρέψετε τη μαζική παραβίαση δεδομένων σε περίπτωση επίθεσης. +* Επικυρώστε τα εισερχόμενα δεδομένα χρησιμοποιώντας επαρκή φίλτρα για να επιτρέπονται μόνο έγκυρες τιμές για κάθε παράμετρο εισόδου. +* Ορίστε τύπους δεδομένων και αυστηρά μοτίβα για όλες τις παραμέτρους αιτημάτων. + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Injection Flaws][1] +* [SQL Injection][2] +* [NoSQL Injection Fun with Objects and Arrays][3] +* [Command Injection][4] + +### Εξωτερικές Αναφορές + +* [CWE-77: Command Injection][5] +* [CWE-89: SQL Injection][6] + +[1]: https://www.owasp.org/index.php/Injection_Flaws +[2]: https://www.owasp.org/index.php/SQL_Injection +[3]: https://www.owasp.org/images/e/ed/GOD16-NOSQL.pdf +[4]: https://www.owasp.org/index.php/Command_Injection +[5]: https://cwe.mitre.org/data/definitions/77.html +[6]: https://cwe.mitre.org/data/definitions/89.html diff --git a/2019/el-gr/src/0xa9-improper-assets-management.md b/2019/el-gr/src/0xa9-improper-assets-management.md new file mode 100644 index 000000000..2135b1b33 --- /dev/null +++ b/2019/el-gr/src/0xa9-improper-assets-management.md @@ -0,0 +1,66 @@ +API9:2019 Improper Assets Management +==================================== + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **3** | Επικράτηση (Prevalence) **3** : Ανιχνευσιμότητα **2** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Οι παλιές εκδόσεις ενός API μένουν συνήθως ανενημέρωτες από ενημερώσεις ασφαλείας (unpatched) και έτσι αποτελούν έναν εύκολο τρόπο για την παραβίαση συστημάτων χωρίς να χρειάζεται ο εισβολέας να αντιμετωπίσει μηχανισμούς ασφαλείας τελευταίας τεχνολογίας, οι οποίοι μπορεί να υπάρχουν αλλά να προστατεύουν μόνο τις νέες εκδόσεις ενός API. | Η μη ενημερωμένη τεκμηρίωση (documentation) ενός API καθιστά πιο δύσκολη την εύρεση ή/και τη διόρθωση ευπαθειών. Η έλλειψη μεθοδικής καταγραφής των πληροφοριακών στοιχείων (assets inventory) και η έλλειψη στρατηγικών απόσυρσης (retire strategies) οδηγούν στο να τρέχουν ανενημέρωτα (unpatched) συστήματα, με αποτέλεσμα τη διαρροή ευαίσθητων δεδομένων. Είναι σύνηθες να βρίσκουμε άσκοπα εκτεθειμένους κεντρικούς υπολογιστές API λόγω των σύγχρονων concepts όπως τα microservices, τα οποία καθιστούν τις εφαρμογές ανεξάρτητες και εύκολες στην ανάπτυξη (π.χ. υπολογιστικό νέφος (cloud), k8s). | Οι εισβολείς ενδέχεται να αποκτήσουν πρόσβαση σε ευαίσθητα δεδομένα ή ακόμη και πάρουν τον έλεγχο του διακομιστή μέσω παλιών, μη ενημερωμένων εκδόσεων API που συνδέονται στην ίδια βάση δεδομένων. | + +## Πότε το API είναι ευάλωτο + +Το API ίσως είναι ευάλωτο όταν: + +* Ο σκοπός ενός κεντρικού υπολογιστή API είναι ασαφής και δεν υπάρχουν σαφείς απαντήσεις στις ακόλουθες ερωτήσεις: + * Σε ποιο περιβάλλον εκτελείται το API (π.χ. παραγωγή (production), σταδιοποίηση (staging), δοκιμή (test), ανάπτυξη (development)); + * Ποιος πρέπει να έχει δικτυακή πρόσβαση στο API (π.χ. δημόσια πρόσβαση, εσωτερική πρόσβαση, πρόσβαση σε συνεργάτες); + * Ποια έκδοση API εκτελείται; + * Ποια δεδομένα συλλέγονται και επεξεργάζονται από το API (π.χ. Προσωπικά αναγνωρίσιμα στοιχεία (PII)); + * Ποια είναι η ροή των δεδομένων; +* Δεν υπάρχει τεκμηρίωση (documentation) ή η υπάρχουσα τεκμηρίωση δεν έχει ενημερωθεί. +* Δεν υπάρχει σχέδιο απόσυρσης (retirement plan) για κάθε έκδοση API. +* Δεν υπάρχει αρχείο καταγραφής όλων των hosts (hosts inventory) ή αν υπάρχει δεν είναι ενημερωμένο. +* Το αρχείο καταγραφής ολοκληρωμένων υπηρεσιών (integrated services inventory), είτε της εταιρίας που φτιάχνει το API (first-party), είτε τρίτων μελών (third-party), λείπει ή είναι παλιό. +* Εκτελούνται παλιές ή προηγούμενες εκδόσεις του API χωρίς ενημέρωση. + +## Παραδείγματα Σεναρίων Επίθεσης + +### Σενάριο Επίθεσης #1 + +Μετά τον επανασχεδιασμό των εφαρμογών της, μια τοπική υπηρεσία αναζήτησης άφησε μια +παλιά έκδοση API (`api.someservice.com/v1`) σε λειτουργία, απροστάτευτη και με +πρόσβαση στη βάση δεδομένων των χρηστών. Ένας εισβολέας, ενώ στόχευε μία από τις πιο πρόσφατες +εφαρμογές που κυκλοφόρησαν, βρήκε τη διεύθυνση API (`api.someservice.com/v2`). +Η αντικατάσταση του «v2» με το «v1» στη διεύθυνση URL έδωσε στον εισβολέα πρόσβαση στο παλιό, +μη προστατευμένο API, εκθέτοντας τα προσωπικά στοιχεία ταυτοποίησης (PII) περισσότερων από 100 εκατομμυρίων χρηστών. + +### Σενάριο Επίθεσης #2 + +Ένα κοινωνικό δίκτυο εφάρμοσε έναν μηχανισμό περιορισμού ρυθμού (rate limiting) που εμποδίζει +τους εισβολείς να χρησιμοποιούν επιθέσεις ωμής βίας (brute force attacks) για να μαντέψουν τα +διακριτικά επαναφοράς κωδικών πρόσβασης. Αυτός ο μηχανισμός δεν εφαρμόστηκε ως μέρος του ίδιου +του κώδικα API, αλλά σε ένα ξεχωριστό στοιχείο (component) μεταξύ του πελάτη και του επίσημου API («www.socialnetwork.com»). +Ένας ερευνητής βρήκε έναν δεύτερο κεντρικό υπολογιστή («www.mbasic.beta.socialnetwork.com») που εκτελεί το ίδιο API, συμπεριλαμβανομένου του μηχανισμού επαναφοράς κωδικού πρόσβασης, +αλλά χωρίς μηχανισμό περιορισμού ρυθμού. Ο ερευνητής μπόρεσε να επαναφέρει τον κωδικό πρόσβασης +οποιουδήποτε χρήστη χρησιμοποιώντας μια απλή επίθεση ωμής βίας για να μαντέψει το διακριτικό των 6 ψηφίων. + +## Τρόπος Πρόληψης + +* Καταγράψτε όλους τους υπολογιστές (hosts) που φιλοξενούν API. Καταγράψτε τα περιβάλλοντα που τρέχουν τα API (production, staging, test, development). +Επίσης καταγράψτε ποιος θα πρέπει να έχει πρόσβαση σε αυτά (ανοιχτά σε όλους, εσωτερική πρόσβαση, πρόσβαση σε συνεργάτες) καθώς και την έκδοση τους. +* Καταγράψτε τις ολοκληρωμένες υπηρεσίες (integrated services) δηλαδή τις εξωτερικές υπηρεσίες που χρησιμοποιούν το API. Τεκμηριώστε σημαντικές πτυχές τους όπως ο ρόλος τους στο σύστημα, ποια δεδομένα ανταλλάσσονται (ροή δεδομένων) και η ευαισθησία τους. +* Τεκμηριώστε όλες τις πτυχές του API σας, όπως τον έλεγχο ταυτότητας, τα σφάλματα, τις ανακατευθύνσεις, τον περιορισμό ρυθμού, την πολιτική και τα τελικά σημεία κοινής χρήσης πόρων μεταξύ προέλευσης (CORS), συμπεριλαμβανομένων των παραμέτρων, των αιτημάτων και των απαντήσεών τους. +* Δημιουργήστε τεκμηρίωση αυτόματα υιοθετώντας ανοιχτά πρότυπα (open standards). Συμπεριλάβετε την αυτόματη δημιουργία τεκμηρίωσης στο σύστημα CI/CD σας. +* Παραχωρήστε πρόσβαση στην τεκμηρίωση API σε όσους είναι εξουσιοδοτημένοι να χρησιμοποιούν το API. +* Χρησιμοποιήστε εξωτερικά μέτρα προστασίας, όπως τείχη προστασίας ασφαλείας API για όλες τις εκτεθειμένες εκδόσεις των API σας και όχι μόνο για την τρέχουσα έκδοση παραγωγής. +* Αποφύγετε τη χρήση δεδομένων παραγωγής σε μη παραγωγικές διανομές (deployments) του API. Εάν αυτό είναι αναπόφευκτο, αυτά τα τελικά σημεία προορισμού θα πρέπει να τυγχάνουν της ίδιας μεταχείρισης ασφαλείας με αυτά της παραγωγής. +* Όταν νεότερες εκδόσεις των API περιλαμβάνουν βελτιώσεις ασφαλείας, πραγματοποιήστε ανάλυση κινδύνου για να αποφασίσετε για τις ενέργειες μετριασμού που απαιτούνται για τις παλαιότερες εκδόσεις: για παράδειγμα, εάν είναι δυνατή η υποστήριξη των βελτιώσεων χωρίς να διαταραχθεί η συμβατότητα API ή εάν πρέπει να αφαιρέσετε τις παλαιότερες εκδόσεις γρήγορα και να αναγκάσετε όλους τους χρήστες / εφαρμογές-πελάτες να μετακινηθούν στην πιο πρόσφατη έκδοση. + +## Αναφορές (References) + +### Εξωτερικές Αναφορές + +* [CWE-1059: Incomplete Documentation][1] +* [OpenAPI Initiative][2] + +[1]: https://cwe.mitre.org/data/definitions/1059.html +[2]: https://www.openapis.org/ diff --git a/2019/el-gr/src/0xaa-insufficient-logging-monitoring.md b/2019/el-gr/src/0xaa-insufficient-logging-monitoring.md new file mode 100644 index 000000000..2af6cf56e --- /dev/null +++ b/2019/el-gr/src/0xaa-insufficient-logging-monitoring.md @@ -0,0 +1,60 @@ +API10:2019 Insufficient Logging & Monitoring +============================================ + +| Παράγοντες Απειλής (Threat agents) / Φορείς Επίθεσης (Attack vectors) | Αδυναμία Ασφαλείας (Security Weakness) | Επιπτώσεις (Impacts) | +| - | - | - | +| Εξαρτώνται από το API : Εκμεταλλευσιμότητα **2** | Επικράτηση (Prevalence) **3** : Ανιχνευσιμότητα **1** | Τεχνικές Επιπτώσεις **2** : Εξαρτώνται από την Επιχείρηση | +| Οι επιτιθέμενοι εκμεταλλεύονται την έλλειψη καταγραφής συμβάντων (logging) και παρακολούθησης (monitoring) για να επιτεθούν σε συστήματα χωρίς να γίνουν αντιληπτοί. | Χωρίς καταγραφή και παρακολούθηση ή με ανεπαρκή καταγραφή και παρακολούθηση, είναι σχεδόν αδύνατο να παρακολουθήσετε ύποπτες δραστηριότητες και να αντιδράσετε έγκαιρα. | Χωρίς ορατότητα σε συνεχείς κακόβουλες δραστηριότητες, οι εισβολείς έχουν άφθονο χρόνο για να υπονομεύσουν πλήρως τα συστήματα σας. | + +## Πότε το API είναι ευάλωτο + +Το API είναι ευάλωτο όταν: + +* Δεν παράγει κανένα αρχείο καταγραφής συμβάντων, το επίπεδο καταγραφής δεν έχει ρυθμιστεί σωστά ή τα μηνύματα καταγραφής δεν περιλαμβάνουν αρκετές λεπτομέρειες. +* Η ακεραιότητα των μηνυμάτων καταγραφής δεν είναι εγγυημένη (π.χ. [Log Injection][1]). +* Τα αρχεία καταγραφής δεν παρακολουθούνται συνεχώς. +* Η υποδομή API δεν παρακολουθείται συνεχώς. + +## Παραδείγματα από Σενάρια Επίθεσης + +### Σενάριο Επίθεσης #1 + +Τα κλειδιά πρόσβασης ενός διαχειριστικού API διέρρευσαν σε ένα δημόσια προσβάσιμο χώρο αποθήκευσης κώδικα (αποθετήριο) (public repository). +Ο κάτοχος του αποθετηρίου ειδοποιήθηκε μέσω email σχετικά με την πιθανή διαρροή, +αλλά χρειάστηκαν περισσότερες από 48 ώρες για να αντιμετωπιστεί το συμβάν και η έκθεση των κλειδιών πρόσβασης μπορεί να επέτρεψε την πρόσβαση σε ευαίσθητα δεδομένα. Λόγω ανεπαρκούς καταγραφής, η εταιρεία δεν είναι σε θέση να αξιολογήσει σε ποια δεδομένα είχαν πρόσβαση κακόβουλοι παράγοντες. + +### Σενάριο Επίθεσης #2 + +Μια πλατφόρμα κοινής χρήσης βίντεο χτυπήθηκε από μια «μεγάλης κλίμακας» επίθεση τροφοδότησης διαπιστευτηρίων (credential stuffing). +Παρά το γεγονός ότι αποτυχημένες προσπάθειες σύνδεσης καταγράφηκαν στα αρχεία καταγραφής συμβάντων, δεν στάλθηκαν ειδοποιήσεις ασφαλείας κατά τη διάρκεια του χρόνου της επίθεσης. Έπειτα από παράπονα χρηστών, τα αρχεία καταγραφής συμβάντων του API αναλύθηκαν και η επίθεση εντοπίστηκε. +Η εταιρεία αναγκάστηκε να αναφέρει το περιστατικό στις ρυθμιστικές αρχές και να κάνει μια δημόσια ανακοίνωση ζητώντας από τους χρήστες να επαναφέρουν τους κωδικούς πρόσβασής τους. + +## Τρόπος Πρόληψης + +* Καταγράψτε όλες τις αποτυχημένες προσπάθειες ελέγχου ταυτότητας, την άρνηση πρόσβασης και τα σφάλματα επικύρωσης εισαγωγής (input validation errors). +* Τα αρχεία καταγραφής πρέπει να συντάσσονται χρησιμοποιώντας μια μορφή κατάλληλη για αξιοποίηση από μια εφαρμογή διαχείρισης αρχείων καταγραφής συμβάντων (log management solution) και θα πρέπει να περιλαμβάνουν αρκετές λεπτομέρειες για τον εντοπισμό του κακόβουλου παράγοντα. +* Τα αρχεία καταγραφής θα πρέπει να αντιμετωπίζονται ως ευαίσθητα δεδομένα και η ακεραιότητά τους θα πρέπει να είναι εγγυημένη κατά την αποθήκευση και τη μεταφορά. +* Χρησιμοποιήστε ένα σύστημα παρακολούθησης (monitoring system) για συνεχή παρακολούθηση της υποδομής, του δικτύου και της λειτουργίας των APIs. +* Χρησιμοποιήστε ένα σύστημα διαχείρισης πληροφοριών ασφαλείας και συμβάντων (SIEM) για να συγκεντρώσετε και να διαχειριστείτε αρχεία καταγραφής από όλα τα στοιχεία των APIs και των κεντρικών υπολογιστών. +* Δημιουργήστε εξατομικευμένους πίνακες παρακολούθησης ειδοποιήσεων (dashboards). Οι πίνακες αυτοί θα διευκολύνουν τον γρηγορότερο εντοπισμό και την διαχείριση ύποπτων δραστηριοτήτων. + +## Αναφορές (References) + +### Αναφορές OWASP + +* [OWASP Logging Cheat Sheet][2] +* [OWASP Proactive Controls: Implement Logging and Intrusion Detection][3] +* [OWASP Application Security Verification Standard: V7: Error Handling and + Logging Verification Requirements][4] + +### Εξωτερικές Αναφορές + +* [CWE-223: Omission of Security-relevant Information][5] +* [CWE-778: Insufficient Logging][6] + +[1]: https://www.owasp.org/index.php/Log_Injection +[2]: https://www.owasp.org/index.php/Logging_Cheat_Sheet +[3]: https://www.owasp.org/index.php/OWASP_Proactive_Controls +[4]: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x15-V7-Error-Logging.md +[5]: https://cwe.mitre.org/data/definitions/223.html +[6]: https://cwe.mitre.org/data/definitions/778.html diff --git a/2019/el-gr/src/0xb0-next-devs.md b/2019/el-gr/src/0xb0-next-devs.md new file mode 100644 index 000000000..c19f6f0ad --- /dev/null +++ b/2019/el-gr/src/0xb0-next-devs.md @@ -0,0 +1,35 @@ +Επόμενα Βήματα για Προγραμματιστές +========================== + +Η εργασία δημιουργίας και συντήρησης ασφαλούς λογισμικού καθώς και η επιδιόρθωση αυτού είναι δύσκολη υπόθεση. +Το ίδιο ισχύει και για τα APIs. + +Πιστεύουμε ότι η εκπαίδευση και η ευαισθητοποίηση είναι βασικοί παράγοντες για τη δημιουργία ασφαλούς λογισμικού. +Τα υπόλοιπα που απαιτούνται για την επίτευξη του στόχου, εξαρτώνται από τη δημιουργία και τη χρήση επαναλαμβανόμενων +διαδικασιών και τυπικών ελέγχων ασφαλείας. + +Το OWASP διαθέτει πολλούς δωρεάν και ανοιχτούς πόρους για την αντιμετώπιση της ασφάλειας από την αρχή του έργου. +Επισκεφτείτε τη [σελίδα OWASP Projects][1] για την ολοκληρωμένη λίστα των διαθέσιμων έργων. + +| | | +|-|-| +| **Εκπαίδευση** | Μπορείτε να ξεκινήσετε να διαβάζετε το [υλικό του OWASP Education Project][2] ανάλογα με το επάγγελμα και το ενδιαφέρον σας. Για πρακτική μάθηση, προσθέσαμε το **crAPI** - **C**ompletely **R**idiculous **API** στον [οδικό μας χάρτη (roadmap)][3]. Εν τω μεταξύ, μπορείτε να εξασκηθείτε στο WebAppSec χρησιμοποιώντας το [OWASP DevSlop Pixi Module][4], μια ευάλωτη υπηρεσία WebApp και API που έχει σκοπό να διδάξει στους χρήστες πώς να δοκιμάζουν σύγχρονες εφαρμογές ιστού και API για ζητήματα ασφάλειας και πώς να γράφουν πιο ασφαλή APIs στο μέλλον. Μπορείτε επίσης να παρακολουθήσετε εκπαιδευτικές συνεδρίες του [Συνεδρίου OWASP AppSec][5] ή να [εγγραφείτε στο τοπικό σας τμήμα][6]. +| **Απαιτήσεις Ασφαλείας** | Η ασφάλεια πρέπει να είναι μέρος κάθε έργου (project) από την αρχή. Όταν βρίσκεστε στο στάδιο της εξαγωγής απαιτήσεων (requirements elicitation), είναι σημαντικό να ορίσετε τι σημαίνει "ασφαλές" για το έργο σας. Το OWASP συνιστά να χρησιμοποιείτε το [Πρότυπο Επαλήθευσης Ασφάλειας Εφαρμογών OWASP (ASVS) (OWASP Application Security Verification Standard)][7] ως οδηγό για τον καθορισμό των απαιτήσεων ασφαλείας. Εάν αναθέτετε το έργο σας σε εξωτερικούς συνεργάτες (outsourcing), εξετάστε το [Παράρτημα Σύμβασης Ασφαλούς Λογισμικού OWASP][8], το οποίο θα πρέπει να προσαρμοστεί σύμφωνα με την τοπική νομοθεσία και τους κανονισμούς της.| +| **Αρχιτεκτονική Ασφαλείας** | Η ασφάλεια θα πρέπει να λαμβάνεται υπόψιν σε όλα τα στάδια του έργου. Τα [Σκονάκια Πρόληψης OWASP (OWASP Prevention Cheat Sheets)][9] είναι ένα καλό σημείο εκκίνησης για καθοδήγηση σχετικά με τον τρόπο σχεδιασμού ασφάλειας κατά τη φάση σχεδιασμού / αρχιτεκτονικής. Μεταξύ πολλών άλλων, θα βρείτε το σκονάκι [REST Security Cheat Sheet][10] και το σκονάκι [REST Assessment Cheat Sheet][11].| +| **Τυπικοί Έλεγχοι Ασφαλείας** | Η υιοθέτηση Τυποποιημένων Μηχανισμών Ελέγχων Ασφαλείας (Standard Security Controls) μειώνει τον κίνδυνο εισαγωγής αδυναμιών ασφαλείας κατά την διάρκεια υλοποίησης της λογικής του λογισμικού σας. Παρά το γεγονός ότι πολλά σύγχρονα frameworks διαθέτουν πλέον ενσωματωμένους τυπικούς αποτελεσματικούς ελέγχους, τα [OWASP Proactive Controls][12] σας παρέχουν μια καλή επισκόπηση των στοιχείων ελέγχου ασφαλείας που πρέπει να συμπεριλάβετε στο έργο σας. Το OWASP παρέχει επίσης ορισμένες βιβλιοθήκες και εργαλεία που μπορεί να σας φανούν πολύτιμα, όπως στοιχεία ελέγχου επικύρωσης (validation controls).| +| **Κύκλος Ζωής Ασφαλούς Ανάπτυξης Λογισμικού** | Μπορείτε να χρησιμοποιήσετε το [OWASP Software Assurance Maturity Model (SAMM)][13] για να βελτιώσετε τη διαδικασία κατά τη δημιουργία των APIs. Πολλά ακόμα έργα OWASP είναι διαθέσιμα για να σας βοηθήσουν σε όλες τις διαφορετικές φάσεις ανάπτυξης API, π.χ., το [Έργο Αναθεώρησης Κώδικα OWASP (OWASP Code Review Project)][14]. | + +[1]: https://www.owasp.org/index.php/Category:OWASP_Project +[2]: https://www.owasp.org/index.php/OWASP_Education_Material_Categorized +[3]: https://www.owasp.org/index.php/OWASP_API_Security_Project#tab=Road_Map +[4]: https://devslop.co/Home/Pixi +[5]: https://www.owasp.org/index.php/Category:OWASP_AppSec_Conference +[6]: https://www.owasp.org/index.php/OWASP_Chapter +[7]: https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project +[8]: https://www.owasp.org/index.php/OWASP_Secure_Software_Contract_Annex +[9]: https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series +[10]: https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/REST_Security_Cheat_Sheet.md +[11]: https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/REST_Assessment_Cheat_Sheet.md +[12]: https://www.owasp.org/index.php/OWASP_Proactive_Controls#tab=OWASP_Proactive_Controls_2018 +[13]: https://www.owasp.org/index.php/OWASP_SAMM_Project +[14]: https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project diff --git a/2019/el-gr/src/0xb1-next-devsecops.md b/2019/el-gr/src/0xb1-next-devsecops.md new file mode 100644 index 000000000..3e6fc9c7c --- /dev/null +++ b/2019/el-gr/src/0xb1-next-devsecops.md @@ -0,0 +1,29 @@ +Επόμενα Βήματα για DevSecOps +========================= + +Λόγω της σημασίας τους στις σύγχρονες αρχιτεκτονικές εφαρμογών, η δημιουργία ασφαλών API είναι ζωτικής σημασίας. +Η ασφάλεια δεν μπορεί να παραμεληθεί και θα πρέπει να αποτελεί μέρος ολόκληρου του κύκλου ζωής της ανάπτυξης των APIs. +Η σάρωση (scanning) και οι ετήσιες δοκιμές διείσδυσης (penetration tests) δεν είναι πλέον αρκετές. + +Οι DevSecOps θα πρέπει να συμμετάσχουν στην προσπάθεια ανάπτυξης, διευκολύνοντας τις συνεχείς δοκιμές ασφαλείας +σε ολόκληρο τον κύκλο ζωής ανάπτυξης λογισμικού. Στόχος τους είναι να ενισχύσουν τον αγωγό ανάπτυξης (development pipeline) με +αυτοματισμό ασφαλείας (security automation), χωρίς να επηρεάζουν την ταχύτητα ανάπτυξης. + +Για περισσότερες πληροφορίες, μπορείτε να ελέγχετε συχνά το [DevSecOps Manifesto][1] για να μείνετε ενημερωμένοι. + +| | | +|-|-| +| **Κατανοήστε το Μοντέλο Απειλής (Threat Model)** | Οι προτεραιότητες δοκιμών (testing priorities) προέρχονται από ένα μοντέλο απειλής (threat model). Εάν δεν έχετε μοντέλο απειλής, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε το [Πρότυπο Επαλήθευσης Ασφάλειας Εφαρμογών OWASP (OWASP Application Security Verification Standard) (ASVS)][2] και τον [Οδηγό Δοκιμής OWASP (OWASP Testing Guide)][3]. Η συμμετοχή της ομάδας ανάπτυξης μπορεί να βοηθήσει τους προγραμματιστές να γίνουν περισσότερο ενήμεροι για την ασφάλεια.| +| **Κατανoήστε το SDLC** | Γίνετε μέλος της ομάδας ανάπτυξης για να κατανοήσετε καλύτερα τον Κύκλο Ζωής Ανάπτυξης Λογισμικού. Η συνεισφορά σας στις συνεχείς δοκιμές ασφαλείας θα πρέπει να είναι συμβατή με τα άτομα, τις διαδικασίες και τα εργαλεία που έχουν θεσπιστεί. Να επισημανθεί ότι πρέπει να συμφωνούν όλοι με τη διαδικασία, ώστε να μην υπάρχουν περιττές τριβές ή αντιστάσεις. | +| **Στρατηγικές Testing** | Καθώς η εργασία σας δεν πρέπει να επηρεάζει την ταχύτητα ανάπτυξης του API, θα πρέπει να επιλέξετε με σύνεση την καλύτερη (απλή, ταχύτερη, πιο ακριβή) τεχνική για να επαληθεύσετε τις απαιτήσεις ασφαλείας. Το [Γνωσιακό Πλαίσιο Ασφαλείας OWASP (OWASP Security Knowledge Framework)][4] και το [Πρότυπο Επαλήθευσης Ασφάλειας Εφαρμογών OWASP (OWASP Application Security Verification Standard)][5] μπορούν να αποτελέσουν εξαιρετικές πηγές λειτουργικών και μη λειτουργικών απαιτήσεων ασφαλείας. Υπάρχουν άλλες εξαιρετικές πηγές για [Έργα][6] και [Εργαλεία][7] παρόμοιες με αυτήν που προσφέρει η [Κοινότητα DevSecOps][8].| +| **Επίτευξη Κάλυψης (Coverage) και ακρίβειας (Accuracy)** | Είστε η γέφυρα μεταξύ προγραμματιστών και ομάδων λειτουργιών (operation teams). Για να πετύχετε κάλυψη (coverage), δεν πρέπει να εστιάσετε μόνο στη λειτουργικότητα, αλλά και στην ενορχήστρωση. Εργαστείτε από την αρχή κοντά στις ομάδες ανάπτυξης και λειτουργίας, ώστε να βελτιστοποιήσετε τον χρόνο και την προσπάθειά σας. Θα πρέπει να στοχεύσετε σε μια κατάσταση όπου η βασική ασφάλεια επαληθεύεται συνεχώς. | +| **Επικοινωνήστε με σαφήνεια τα ευρήματα** | Συνεισφέρετε αξία με λιγότερη ή καθόλου τριβή. Παραδώστε τα ευρήματα σας έγκαιρα, μέσα στα εργαλεία που χρησιμοποιούν οι ομάδες ανάπτυξης (όχι αρχεία PDF). Γίνετε μέλος της ομάδας ανάπτυξης για να αντιμετωπίσετε τα ευρήματα. Εκμεταλλευτείτε την ευκαιρία για να τους εκπαιδεύσετε, περιγράφοντας ξεκάθαρα την αδυναμία και πώς μπορεί να γίνει κατάχρηση της, συμπεριλαμβάνοντας ένα σενάριο επίθεσης για να γίνετε κατανοητοί.| + +[1]: https://www.devsecops.org/ +[2]: https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project +[3]: https://www.owasp.org/index.php/OWASP_Testing_Project +[4]: https://www.owasp.org/index.php/OWASP_Security_Knowledge_Framework +[5]: https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project +[6]: http://devsecops.github.io/ +[7]: https://github.com/devsecops/awesome-devsecops +[8]: http://devsecops.org diff --git a/2019/el-gr/src/0xd0-about-data.md b/2019/el-gr/src/0xd0-about-data.md new file mode 100644 index 000000000..9159a6dff --- /dev/null +++ b/2019/el-gr/src/0xd0-about-data.md @@ -0,0 +1,39 @@ +Μεθοδολογία και Δεδομένα +==================== + +## Σύνοψη + +Δεδομένου ότι η βιομηχανία AppSec δεν έχει εστιάσει στην πιο πρόσφατη αρχιτεκτονική εφαρμογών, +στην οποία τα API διαδραματίζουν σημαντικό ρόλο, η σύνταξη μιας λίστας με τους δέκα πιο κρίσιμους +κινδύνους ασφαλείας API, με βάση μια δημόσια πρόσκληση για δεδομένα, θα ήταν δύσκολο έργο. +Παρά το γεγονός ότι δεν υπάρχει δημόσια κλήση δεδομένων, η προκύπτουσα λίστα Top 10 εξακολουθεί +να βασίζεται σε δημόσια διαθέσιμα δεδομένα, συνεισφορές ειδικών σε θέματα ασφαλείας και σε ανοιχτή συζήτηση +με την κοινότητα ασφαλείας. + +## Μεθοδολογία και Δεδομένα + +Στην πρώτη φάση συλλέχθηκαν, εξετάστηκαν και κατηγοριοποιήθηκαν δημόσια δεδομένα σχετικά +με συμβάντα ασφαλείας API από μια ομάδα ειδικών σε θέματα ασφαλείας. Τα δεδομένα αυτά συλλέχθηκαν +από πλατφόρμες επιβράβευσης σφαλμάτων (bug bounty platforms) και βάσεις δεδομένων ευπάθειας, τα οποία καταχωρήθηκαν στο χρονικό διάστημα ενός έτους και χρησιμοποιήθηκαν για στατιστικούς σκοπούς. + +Στην επόμενη φάση οι επαγγελματίες ασφαλείας με εμπειρία σε δοκιμές διείσδυσης +(penetration testing) κλήθηκαν να συντάξουν τη δική τους λίστα Top 10. + +Η [OWASP Risk Rating Methodology][1] χρησιμοποιήθηκε για την εκτέλεση της Ανάλυσης Κινδύνου. +Οι βαθμολογίες συζητήθηκαν και αναθεωρήθηκαν μεταξύ των επαγγελματιών ασφαλείας. +Για περισσότερες πληροφορίες σχετικά με αυτά τα θέματα ανατρέξτε στην ενότητα [Κίνδυνοι Ασφαλείας API][2]. + +Το πρώτο προσχέδιο του OWASP API Security Top 10 2019 προέκυψε από συναίνεση των +στατιστικών αποτελεσμάτων της πρώτης φάσης και από τις λίστες που προετοίμασαν οι επαγγελματίες ασφαλείας. +Το προσχέδιο υποβλήθηκε στη συνέχεια για εκτίμηση και αξιολόγηση από άλλη ομάδα +επαγγελματιών ασφαλείας, με σχετική εμπειρία στους τομείς ασφαλείας API. + +Το OWASP API Security Top 10 2019 παρουσιάστηκε για πρώτη φορά στην εκδήλωση +OWASP Global AppSec Tel Aviv (Μάιος 2019). Από τότε είναι διαθέσιμο στο GitHub +για δημόσια συζήτηση και συνεισφορές. + +Η λίστα των συντελεστών είναι διαθέσιμη στην ενότητα [Ευχαριστίες][3]. + +[1]: https://www.owasp.org/index.php/OWASP_Risk_Rating_Methodology +[2]: ./0x10-api-security-risks.md +[3]: ./0xd1-acknowledgments.md diff --git a/2019/el-gr/src/0xd1-acknowledgments.md b/2019/el-gr/src/0xd1-acknowledgments.md new file mode 100644 index 000000000..231bd704a --- /dev/null +++ b/2019/el-gr/src/0xd1-acknowledgments.md @@ -0,0 +1,40 @@ +Ευχαριστίες +=============== + +## Ευχαριστίες προς τους Συντελεστές + +Θα θέλαμε να ευχαριστήσουμε τους ακόλουθους συντελεστές που συνεισέφεραν δημόσια στο GitHub ή με άλλα μέσα: + +* 007divyachawla +* Abid Khan +* Adam Fisher +* anotherik +* bkimminich +* caseysoftware +* Chris Westphal +* dsopas +* DSotnikov +* emilva +* ErezYalon +* flascelles +* Guillaume Benats +* IgorSasovets +* Inonshk +* JonnySchnittger +* jmanico +* jmdx +* Keith Casey +* kozmic +* LauraRosePorter +* Matthieu Estrade +* nathanawmk +* PauloASilva +* pentagramz +* philippederyck +* pleothaud +* r00ter +* Raj kumar +* Sagar Popat +* Stephen Gates +* thomaskonrad +* xycloops123 diff --git a/2019/el-gr/src/images/cover.jpg b/2019/el-gr/src/images/cover.jpg new file mode 100644 index 000000000..5ef93f221 Binary files /dev/null and b/2019/el-gr/src/images/cover.jpg differ diff --git a/2019/el-gr/src/images/front-cc.png b/2019/el-gr/src/images/front-cc.png new file mode 100644 index 000000000..45f139804 Binary files /dev/null and b/2019/el-gr/src/images/front-cc.png differ diff --git a/2019/el-gr/src/images/front-wasp.png b/2019/el-gr/src/images/front-wasp.png new file mode 100644 index 000000000..5a163dd4b Binary files /dev/null and b/2019/el-gr/src/images/front-wasp.png differ diff --git a/2019/el-gr/src/images/license.png b/2019/el-gr/src/images/license.png new file mode 100644 index 000000000..124d3ba4d Binary files /dev/null and b/2019/el-gr/src/images/license.png differ diff --git a/2019/el-gr/src/images/owasp-logo.png b/2019/el-gr/src/images/owasp-logo.png new file mode 100644 index 000000000..caeb47bdf Binary files /dev/null and b/2019/el-gr/src/images/owasp-logo.png differ