Κάθε pull request Αυτό που προσθέτει ή αλλάζει ένα τελικό σημείο αλλάζει την επιφάνεια επίθεσης του API σας. Τα περισσότερα εργαλεία ασφαλείας API δεν το αντιλαμβάνονται μέχρι το τελικό σημείο να είναι ενεργό και να λαμβάνει ήδη κίνηση. Μέχρι τότε, η διόρθωση δεν είναι πλέον μια αλλαγή μίας γραμμής σε μια αναθεώρηση κώδικα, αλλά μια συνομιλία απόκρισης σε περιστατικό.
Η ασφάλεια API είναι η πρακτική της εύρεσης και του αποκλεισμού των κινδύνων στον τρόπο με τον οποίο μια εφαρμογή εκθέτει τα τελικά σημεία της: ποιος μπορεί να τα καλέσει, ποια δεδομένα επιστρέφουν και αν κάνουν ό,τι αναφέρει η τεκμηρίωση.
Τα περισσότερα από τα εργαλεία που έχουν κατασκευαστεί για αυτό το πρόβλημα δοκιμάζουν το API κατά τον χρόνο εκτέλεσης, από έξω, με τον ίδιο τρόπο που θα έκανε ένας εισβολέας. Αυτή η προσέγγιση λειτουργεί, αλλά λειτουργεί μόνο μετά την ανάπτυξη του API. Ξυγένη ακολουθεί την προηγούμενη διαδρομή: διαβάζει τον πηγαίο κώδικα και την προδιαγραφή API σας πριν καν ένα μόνο αίτημα φτάσει στο τελικό σημείο.
Οι τέσσερις τρόποι δοκιμής ενός API και οι απαντήσεις του καθενός
Τα περισσότερα προγράμματα ώριμων χρηστών εκτελούν περισσότερα από ένα από αυτά:
- Στατικές δοκιμές αναλύει τον πηγαίο κώδικα και τις προδιαγραφές API πριν από την ανάπτυξη. Απαντά στην ερώτηση «τι μόλις αποκαλύψαμε;» Αυτή είναι η προσέγγιση στην οποία εστιάζει αυτό το άρθρο.
- Δυναμικές δοκιμές (DAST) Στέλνει πραγματική επισκεψιμότητα σε ένα API που εκτελείται και παρατηρεί πώς ανταποκρίνεται. Απαντά στο ερώτημα "τι είναι πραγματικά προσβάσιμο και εκμεταλλεύσιμο αυτή τη στιγμή;"
- Ασαφές Ρίχνει λανθασμένα διαμορφωμένα ή απροσδόκητα δεδομένα εισόδου στα τελικά σημεία σε επιφανειακά σφάλματα και αστοχίες σε περιθώρια. Απαντά στο ερώτημα "τι σπάει σε δεδομένα εισόδου που δεν είχαμε προβλέψει;"
- Χειροκίνητη δοκιμή διείσδυσης Προσθέτει ανθρώπινη κρίση για να εντοπίσει λογικά ελαττώματα που παραβλέπουν τα αυτοματοποιημένα εργαλεία. Απαντά στο ερώτημα «τι θα συνδύαζε ένας έξυπνος εισβολέας;»
Κανένα από αυτά δεν αντικαθιστά τα άλλα. Απαντούν σε διαφορετικά ερωτήματα σε διαφορετικά σημεία του κύκλου ζωής και το κενό που έχουν τα περισσότερα προγράμματα είναι το πρώτο.
Γιατί τα περισσότερα εργαλεία ασφαλείας API βλέπουν τον κίνδυνο πολύ αργά
Οι δοκιμές ασφαλείας του Runtime API στέλνουν κίνηση σε μια ενεργή εφαρμογή και παρακολουθούν πώς ανταποκρίνεται. Είναι ένα νόμιμο και απαραίτητο επίπεδο. Είναι επίσης, εκ κατασκευής, ένας δείκτης καθυστέρησης: ένα τελικό σημείο πρέπει να υπάρχει, να έχει αναπτυχθεί και να είναι προσβάσιμο πριν ένας σαρωτής χρόνου εκτέλεσης μπορέσει να πει οτιδήποτε γι' αυτό. Ό,τι κι αν βρει, ήταν ήδη εκτεθειμένο για όσο χρόνο χρειάστηκε η σάρωση για να εκτελεστεί.
Υπάρχει ένα δεύτερο κενό πίσω από αυτό το πρόβλημα χρονισμού. Τα εργαλεία χρόνου εκτέλεσης μπορούν να ελέγξουν μόνο ό,τι γνωρίζουν ότι υπάρχει. Εάν ένα τελικό σημείο δεν έχει τεκμηριωθεί ποτέ ή η προδιαγραφή OpenAPI έχει ξεπεραστεί τη στιγμή που κάποιος έστειλε μια νέα διαδρομή, ένας σαρωτής χρόνου εκτέλεσης δεν έχει τρόπο να γνωρίζει ότι βρίσκεται εκεί. Ελέγχει τον χάρτη, όχι την περιοχή.
Οι στατικές δοκιμές ασφαλείας API καλύπτουν και τα δύο κενά μετακινώντας τον έλεγχο εκεί που ορίζεται το τελικό σημείο: τον κώδικά σας και την προδιαγραφή API σας, πριν από την ανάπτυξη. Το ίδιο pull request που εισάγει ένα τελικό σημείο είναι το pull request που αναδεικνύει τον κίνδυνο που το διατρέχει.
Τι σημαίνει στην πραγματικότητα η ασφάλεια στατικού API
Το Xygeni δημιουργεί το απόθεμα API σας από δύο πηγές: τον πηγαίο κώδικα της εφαρμογής σας και τις προδιαγραφές API σας, συμπεριλαμβανομένων των OpenAPI και Swagger.
Ένα απόθεμα μόνο με προδιαγραφές δείχνει τα τελικά σημεία που κάποιος θυμήθηκε να καταγράψει. Ένα απόθεμα μόνο με κώδικα δείχνει τι υπάρχει, αλλά όχι απαραίτητα πώς προοριζόταν να χρησιμοποιηθεί. Η ανάγνωση και των δύο σας δίνει την πλήρη εικόνα: τα τελικά σημεία που κατέγραψαν οι ομάδες σας και αυτά που κανείς δεν κατέγραψε.
Αυτό το απόθεμα είναι το θεμέλιο πάνω στο οποίο βασίζονται όλα τα άλλα:
- Συνολικά API που ανακαλύφθηκαν και περιουσιακά στοιχεία σε κίνδυνο που μετρήθηκαν σε σχέση με μια βασική γραμμή
- Τελικά σημεία ανά μέθοδο HTTP
- Ζητήματα ομαδοποιημένα ανά υπηρεσία
- Κάθε τελικό σημείο με τη μέθοδο, τη διαδρομή, την υπηρεσία, την ενότητα, την κατάσταση ελέγχου ταυτότητας και τη βαθμολογία κινδύνου του
Οι επικεφαλής μηχανικοί σας βλέπουν το σχήμα της επιφάνειας του API σας χωρίς να ανοίξουν ούτε ένα ticket.
Κάθε τελικό σημείο που βρήκε το Xygeni, με τη μέθοδό του, την κατάσταση ελέγχου ταυτότητας και τη βαθμολογία κινδύνου, κατασκευάστηκε από κώδικα και προδιαγραφές μαζί.
Production note Περικοπή του πίνακα AI Triage από οποιοδήποτε στιγμιότυπο οθόνης API Security.
Αντιστοιχισμένο στο OWASP API Security Top 10
Τα ευρήματα μιλούν για το πλαίσιο που χρησιμοποιούν ήδη οι ομάδες ασφαλείας σας και οι ελεγκτές σας. Το Xygeni ανιχνεύει κινδύνους σε όλο το OWASP API ασφαλείας. Top 10 (2023):
| OWASP | Κίνδυνος | Τι σημαίνει στην πράξη |
|---|---|---|
API1 | Εξουσιοδότηση επιπέδου σπασμένου αντικειμένου | Ένα τελικό σημείο επιστρέφει ή τροποποιεί δεδομένα που ανήκουν σε άλλον χρήστη ή μισθωτή |
API2 | Μη ελεγμένα τελικά σημεία | Μια διαδρομή είναι προσβάσιμη χωρίς καθόλου έλεγχο ταυτότητας |
API3 | Υπερβολική έκθεση σε δεδομένα | Μια απάντηση επιστρέφει περισσότερα πεδία από όσα χρειάζεται ή θα έπρεπε να δει ο καλών |
API3 | Μαζική ανάθεση | Ένα τελικό σημείο δέχεται και εφαρμόζει πεδία που δεν προοριζόταν ποτέ να αποδεχτεί |
API3 / API10 | Ευαίσθητα δεδομένα σε απαντήσεις | Τα PII, PCI ή PHI φτάνουν στον πελάτη από ένα τελικό σημείο που δεν θα έπρεπε να τα στείλει |
API4 | Λείπουν όρια τιμών | Ένα τελικό σημείο δεν έχει προστασία από κατάχρηση ή κλήσεις με βίαιη βία |
API5 | Κατεστραμμένη Εξουσιοδότηση Επιπέδου Λειτουργίας | Ένα τελικό σημείο εκτελεί μια προνομιακή ενέργεια χωρίς να ελέγχει αν επιτρέπεται στον καλούντα να |
API7 | SSRF | Το API μπορεί να εξαπατηθεί ώστε να υποβάλλει αιτήματα εκ μέρους του εισβολέα |
API8 | Λανθασμένη διαμόρφωση JWT | Η επικύρωση, η υπογραφή ή η λήξη διακριτικού έχει ρυθμιστεί εσφαλμένα |
API8 | Λανθασμένη διαμόρφωση CORS | Οι κανόνες διασταυρούμενης προέλευσης είναι αρκετά επιτρεπτικοί ώστε να είναι εκμεταλλεύσιμοι |
API9 | Τελικά σημεία ζόμπι και ορφανών | Ξεχασμένες ή ξεχασμένες διαδρομές που εξακολουθούν να είναι προσβάσιμες και διαδρομές που δεν ανήκουν σε κανέναν |
Μία κατηγορία απουσιάζει σκόπιμα. Το API6, Απεριόριστη Πρόσβαση σε Ευαίσθητες Επιχειρηματικές Ροές, απαιτεί την κατανόηση του τι υποτίθεται ότι επιτρέπει μια επιχειρηματική διαδικασία και κανένας στατικός αναλυτής δεν το ανιχνεύει αυτό με αξιόπιστο τρόπο. Οποιοσδήποτε προμηθευτής ισχυρίζεται το αντίθετο σας πουλάει ένα πλαίσιο ελέγχου. Αυτό παραμένει στη μοντελοποίηση απειλών και στους δοκιμαστές διείσδυσης.
Δεν είναι όλα τα ευρήματα ίδια: Ευαισθησία δεδομένων και τοξικοί συνδυασμοί
Μια επίπεδη λίστα ευρημάτων αντιμετωπίζει ένα μη εξουσιοδοτημένο τελικό σημείο ελέγχου εύρυθμης λειτουργίας με τον ίδιο τρόπο όπως ένα μη εξουσιοδοτημένο τελικό σημείο που επιστρέφει αρχεία πελατών. Αυτά δεν είναι το ίδιο πρόβλημα και ένα μοντέλο ιεράρχησης προτεραιοτήτων που τα βαθμολογεί με τον ίδιο τρόπο εκπαιδεύει τις ομάδες σας να αγνοούν τη λίστα.
Το Xygeni ταξινομεί τα δεδομένα που χειρίζεται κάθε τελικό σημείο, επισημαίνοντας τα PII, PCI και PHI στις παραμέτρους αιτήματος και στις απαντήσεις, και τα αντιστοιχίζει με την κατάσταση ελέγχου ταυτότητας του τελικού σημείου.
Επίσης, συσχετίζει ευρήματα που καταλήγουν στο ίδιο τελικό σημείο και αυξάνει τη σοβαρότητα όταν αυτά συνδυάζονται. Μια διαρροή PII σε μια απάντηση είναι από μόνη της ένα σοβαρό εύρημα. Η ίδια διαρροή σε ένα τελικό σημείο που δεν απαιτεί έλεγχο ταυτότητας είναι κρίσιμη και η πλατφόρμα την βαθμολογεί με αυτόν τον τρόπο αντί να αφήνει τη σύνδεση για να την παρατηρήσει κάποιος χειροκίνητα.
Zombie και Orphan Endpoints: Η Απόκλιση Μεταξύ Κώδικα και Προδιαγραφών
Επειδή το Xygeni διαβάζει τον κώδικά σας και την προδιαγραφή API σας δίπλα-δίπλα, βλέπει πού διαφωνούν. Αυτή η απόκλιση εμφανίζεται ως τρία αναγνωρίσιμα μοτίβα:
- Μη τεκμηριωμένα τελικά σημεία. Ζουν σε κώδικα και δεν προστέθηκαν ποτέ στις προδιαγραφές.
- Τελικά σημεία ζόμπι. Έχουν επισημανθεί ως παρωχημένα ή αποσυρμένα και εξακολουθούν να είναι προσβάσιμα.
- Ορφανά τελικά σημεία. Κανείς στην τωρινή ομάδα δεν τα έχει στην κατοχή του.
Κανένα από αυτά δεν εμφανίζεται σε ένα απόθεμα που βασίζεται μόνο στις προδιαγραφές, επειδή ακριβώς οι προδιαγραφές είναι αυτό που τα λείπει.
Αποδεικτικά στοιχεία με βάση τα οποία μπορείτε να δράσετε, όχι εισιτήριο για διερεύνηση
Κάθε εύρημα υποδεικνύει τον ακριβή υπεύθυνο χειριστή: το αρχείο, την κλάση, τη μέθοδο και τη συγκεκριμένη γραμμή που εισήγαγε το ελάττωμα, με τον προσβλητικό κώδικα να αποδίδεται δίπλα του. Κάθε ένα από αυτά φέρει επίσης τη σοβαρότητά του, την κατηγορία OWASP API Security Top 10, το CWE του, την κατάσταση ελέγχου ταυτότητας του τελικού σημείου και την ταξινόμηση ευαισθησίας των εμπλεκόμενων δεδομένων.
Ένα εύρημα που απλώς κατονομάζει ένα τελικό σημείο κάνει έναν προγραμματιστή να ψάχνει στη βάση κώδικα πριν καν ξεκινήσει να διορθώνει οτιδήποτε. Ένα εύρημα που κατονομάζει τη γραμμή τον οδηγεί αμέσως στη διόρθωση.
Τα ευρήματα εξάγονται ως JSON, CSV, Markdown και SARIF 2.1.0, επομένως καταλήγουν στο tools στα οποία ήδη εργάζονται οι ομάδες σας.
Ο χειριστής, η γραμμή και ο κώδικας που εισήγαγαν την έκθεση. Δεν είναι εισιτήριο για διερεύνηση.
Γιατί αυτό υπάρχει σε μία πλατφόρμα, όχι σε άλλη κονσόλα
Το Xygeni εκτελεί παράλληλα την ασφάλεια API SAST, SCA, Μυστικά Ασφάλειας, IaC και ΔΥΝΑΜΗ μέσα σε μια ενιαία πλατφόρμα, συσχετισμένα μέσω ASPM, αντί να το αποστέλλετε ως ξεχωριστό εργαλείο με το δικό του login και το δικό του ανεκτέλεστο υπόλοιπο.
Αυτό έχει σημασία επειδή τα στατικά ευρήματα και τα ευρήματα χρόνου εκτέλεσης απαντούν σε διαφορετικές ερωτήσεις σχετικά με το ίδιο τελικό σημείο και είναι πιο χρήσιμα μαζί παρά ξεχωριστά. Το στατικό σας λέει ότι ένα τελικό σημείο είναι επικίνδυνο πριν από την αποστολή του. Το DAST επιβεβαιώνει τι είναι πραγματικά προσβάσιμο και εκμεταλλεύσιμο μόλις εκτελεστεί.
Χωρίστε αυτό σε δύο κονσόλες και ο συσχετισμένος κίνδυνος μετατρέπεται σε δύο άσχετα συσσωρευμένα δεδομένα. Κανείς δεν τα συμβιβάζει και το τελικό σημείο που είναι τόσο μη τεκμηριωμένο όσο και μη επαληθευμένο δεν βρίσκεται σε καμία από τις δύο ουρές.
Δείτε την πραγματική επιφάνεια επίθεσης API σας. Η ασφάλεια API διατίθεται ως Enterprise πρόσθετο στην πλατφόρμα Xygeni και θα εκτελεστεί σάρωση στα δικά σας αποθετήρια εντός της δικής σας υποδομής.
Συχνές Ερωτήσεις
Μπορεί να διακρίνει ποια τελικά σημεία χειρίζονται ευαίσθητα δεδομένα;
Ναι. Το Xygeni επισημαίνει τα PII, PCI και PHI στις παραμέτρους και τις απαντήσεις των τελικών σημείων και χρησιμοποιεί αυτήν την ταξινόμηση για να κατατάξει τα ευρήματα με βάση την πραγματική έκθεση.
Μπορεί να τρέξει σε κάθε pull request?
Ναι. Η σταδιακή σάρωση αναλύει μόνο τα τελικά σημεία που άλλαξαν και το μανιφέστο που παράγει μπορεί να εστιάσει μια επόμενη σάρωση DAST στα ίδια τελικά σημεία, έτσι ώστε οι στατικές δοκιμές και οι δοκιμές κατά τον χρόνο εκτέλεσης να παραμένουν ευθυγραμμισμένες με το τι πραγματικά μετακινήθηκε.
Ο κώδικάς μου εγκαταλείπει το περιβάλλον μου;
Όχι. Οι σαρώσεις εκτελούνται στη δική σας υποδομή. Μόνο τα αποτελέσματα μεταφορτώνονται, προστατεύονται κατά τη μεταφορά και σε κατάσταση αδράνειας.
Πώς μπορώ να αποκτήσω ασφάλεια API;
Η ασφάλεια API διατίθεται ως Enterprise πρόσθετο. Ζητήστε μια PoC και θα εξεταστεί μαζί σας.





