RASP — τι είναι, αρχή λειτουργίας και προστασία σε πραγματικό χρόνο

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-04-03 Χρόνος ανάγνωσης: 10 λεπ

RASP (Runtime Application Self-Protection) — τεχνολογία ασφαλείας που ενσωματώνεται απευθείας στην εφαρμογή και αναλύει τη συμπεριφορά της κατά τον χρόνο εκτέλεσης (runtime) για την ανίχνευση επιθέσεων. Σε αντίθεση με τα τείχη προστασίας δικτύου ή το WAF, το RASP λειτουργεί από μέσα: βλέπει όχι μόνο την εισερχόμενη αίτηση, αλλά και πώς αυτή η αίτηση επεξεργάζεται από τον κώδικα — ποιες συναρτήσεις καλούνται, ποια δεδομένα διαβάζονται από τη μνήμη, ποιες κλήσεις συστήματος εκτελούνται. Σύμφωνα με τα δεδομένα του OWASP Runtime Protection Project (2025), οι λύσεις RASP μπλοκάρουν έως και το 94% των επιθέσεων πριν φτάσουν στον ευάλωτο κώδικα. Το RASP δεν απαιτεί αλλαγή της υποδομής — ό,τι χρειάζεται λειτουργεί εντός της διεργασίας της εφαρμογής.

Κύρια Σημεία

  • RASP — ενσωματωμένη προστασία που λειτουργεί εντός της εφαρμογής και αναλύει το πλαίσιο εκτέλεσης κάθε κλήσης σε πραγματικό χρόνο
  • Αρχή λειτουργίας βασίζεται στην ενόργανη του κώδικα: ο πράκτορας υποκλέπτει κρίσιμες συναρτήσεις (exec, open, read, send) και τις ελέγχει για ανωμαλίες
  • Διαφορά από το WAF — το RASP βλέπει όχι μόνο το αίτημα HTTP, αλλά ολόκληρο το πλαίσιο επεξεργασίας: στοίβα κλήσεων, τιμές μεταβλητών, κατάσταση μνήμης
  • Κινητό RASP ανιχνεύει Frida, Xposed, εντοπισμό σφαλμάτων JDWP, εξομοιωτές και τροποποίηση APK μέσω ελέγχου ακεραιότητας κατά τον χρόνο εκτέλεσης
  • Πολιτικές RASP περιλαμβάνουν αποκλεισμό (crash), καταγραφή με ειδοποίηση διακομιστή και δημιουργία ψευδών δεδομένων για αποπροσανατολισμό του επιτιθέμενου

Τι είναι το RASP;

Runtime Application Self-Protection (RASP) — τεχνολογία ασφαλείας που ενσωματώνεται στην εφαρμογή στο στάδιο δημιουργίας ή μέσω πράκτορα χρόνου εκτέλεσης. Το RASP αναλύει τη συμπεριφορά της εφαρμογής κατά την εκτέλεση και λαμβάνει αποφάσεις σχετικά με τον αποκλεισμό επιθέσεων βάσει πλαισίου: από πού προήλθε η κλήση, ποια δεδομένα μεταδίδονται, ποια είναι η κατάσταση της στοίβας. Σε αντίθεση με τα συστήματα υπογραφών, το RASP δεν αναζητά γνωστά μοτίβα επιθέσεων — ανιχνεύει ανώμαλη συμπεριφορά που αποκλίνει από το αναμενόμενο σενάριο εκτέλεσης κώδικα.

Η ιδέα του RASP επισημοποιήθηκε από τη Gartner το 2011, και οι πρώτες εμπορικές υλοποιήσεις εμφανίστηκαν το 2014–2015. Για κινητές πλατφόρμες, το RASP άρχισε να εφαρμόζεται ενεργά από το 2017, όταν η αγορά συνειδητοποίησε την ανεπάρκεια της παραδοσιακής συσκότισης. Σύμφωνα με την έκθεση MarketsandMarkets (2025), το μέγεθος της αγοράς λύσεων RASP ανέρχεται σε 2,8 δισεκατομμύρια USD με ετήσια ανάπτυξη 24,5%. Η εφαρμογή του RASP συνιστάται από τα πρότυπα OWASP Mobile Top 10 και PCI DSS 4.0 για εφαρμογές που επεξεργάζονται δεδομένα πληρωμών.

Το RASP λειτουργεί σε δύο επίπεδα: interception και assessment. Interception — υποκλοπή κλήσεων συστήματος και βιβλιοθήκης μέσω αγκιστριών που ενσωματώνονται στον κώδικα στο στάδιο δημιουργίας ή κατά τον χρόνο εκτέλεσης μέσω δυναμικής ενόργανης. Assessment — ανάλυση του πλαισίου κλήσης: έλεγχος παραμέτρων εισόδου, στοίβας κλήσεων, κατάστασης sandbox, παρουσίας εντοπιστή σφαλμάτων. Η απόφαση λαμβάνεται βάσει της πολιτικής ασφαλείας που ορίζει ο προγραμματιστής. Η πολιτική μπορεί να είναι αυστηρή (αποκλεισμός), ήπια (καταγραφή) ή προσαρμοστική (αλλαγή συμπεριφοράς ανάλογα με το επίπεδο απειλής).

Πώς λειτουργεί το RASP: αρχιτεκτονική και μηχανισμοί

Η αρχιτεκτονική του πράκτορα RASP αποτελείται από τρία στοιχεία: στρώμα ενόργανης, αναλυτή και πολιτική. Το στρώμα ενόργανης υποκλέπτει κλήσεις συστήματος και κλήσεις πλαισίου. Ο αναλυτής ελέγχει το πλαίσιο για συμμόρφωση με αναμενόμενα μοτίβα. Η πολιτική καθορίζει την αντίδραση.

Ενόργανη κώδικα

Για κινητές εφαρμογές χρησιμοποιείται ενόργανη κατά τη μεταγλώττιση (compile-time): ο bytecode ή ο εγγενής κώδικας τροποποιείται στο στάδιο δημιουργίας — πριν από κάθε επικίνδυνη κλήση προστίθεται ένας έλεγχος. Ο μεταγλωττιστής του πράκτορα RASP τροποποιεί τα σημεία εισόδου FileOutputStream.write(), Runtime.exec(), Class.forName() και android.app.Activity.onStart(). Για Android χρησιμοποιείται μετασχηματισμός DEX bytecode μέσω προσθέτου Gradle, για iOS — τροποποίηση του δυαδικού αρχείου Mach-O μέσω σεναρίου post-link.

Ανάλυση πλαισίου

Κατά την υποκλοπή κλήσης, το RASP αναλύει: την κλάση και τη μέθοδο καλούντος (ποιος καλεί), το ίχνος στοίβας (αλυσίδα κλήσεων), τα ορίσματα (δεδομένα που μεταδίδονται), την τιμή επιστροφής (τι επιστρέφεται), τη χρονική σφραγίδα και το αναγνωριστικό νήματος. Μια ανωμαλία καταγράφεται όταν, για παράδειγμα, η Runtime.exec() καλείται όχι από το νήμα UI και όχι από τον κώδικα της εφαρμογής, αλλά από μια βιβλιοθήκη που φορτώθηκε μέσω JNI με μη τυπική διαδρομή. Ή όταν η FileOutputStream.write() λαμβάνει δεδομένα που περιέχουν εκτελέσιμο bytecode αντί για αναμενόμενη κεφαλίδα PNG.

Πολιτικές αντίδρασης

Το RASP υποστηρίζει τρεις τύπους αντίδρασης: Block — επείγουσα τερματισμός της εφαρμογής κατά την ανίχνευση επίθεσης, Log — αποστολή λεπτομερειών συμβάντος στον διακομιστή συλλογής καταγραφών χωρίς διακοπή της εφαρμογής, Deceive — αντικατάσταση της τιμής επιστροφής με ψευδή, ώστε ο επιτιθέμενος να λάβει εσφαλμένα δεδομένα. Ο συνδυασμός Log και Deceive επιτρέπει τη συλλογή πληροφοριών πληροφοριών για τον επιτιθέμενο χωρίς να αποκαλύπτεται το γεγονός της ανίχνευσης.

java
// Παράδειγμα: Έλεγχος κλήσης Runtime.exec() από RASP
public class RASPAgent {
    public static Object onExecCalled(String command,
            StackTraceElement[] stack) {

        // Έλεγχος καλούντος
        String caller = stack[1].getClassName();

        // Αν η κλήση δεν προέρχεται από το πακέτο μας — ύποπτο
        if (!caller.startsWith("com.example.app")) {
            SecurityPolicy.reportIncident(
                "UNEXPECTED_EXEC", command, stack
            );
            return SecurityPolicy.getAction().execute(command);
        }

        // Έλεγχος εντολής σε μαύρη λίστα
        String[] blocked = {"su", "frida", "ptrace", "/data/local"};
        for (String pattern : blocked) {
            if (command.contains(pattern)) {
                SecurityPolicy.reportIncident(
                    "BLOCKED_CMD", command, stack
                );
                return new Process(); // deceiving: κενή διεργασία
            }
        }

        return null; // επιτρέψτε την εκτέλεση
    }
}

RASP vs WAF και άλλα μέσα προστασίας

Το RASP συχνά συγκρίνεται με το Web Application Firewall (WAF), αλλά η θεμελιώδης διαφορά είναι στη θέση. Το WAF βρίσκεται στην περίμετρο του δικτύου και αναλύει μόνο αιτήματα HTTP. Το RASP λειτουργεί εντός της εφαρμογής και βλέπει τη λογική επεξεργασίας.

ΧαρακτηριστικόWAFRASP
ΘέσηΠερίμετρος δικτύουΕντός της εφαρμογής
Τι αναλύειΑιτήματα HTTPΚλήσεις συστήματος, μνήμη, στοίβα
Κρυπτογραφημένη κίνησηΑπαιτεί αποκρυπτογράφηση TLSΒλέπει μετά την αποκρυπτογράφηση
Επιθέσεις σε κινητάΔεν βλέπει (Frida, εντοπισμός σφαλμάτων)Ανιχνεύει άμεσα
Ψευδείς συναγερμοίΥψηλοί (κανόνες regex)Μέτριοι (ανάλυση πλαισίου)
Επίπτωση στην απόδοσηΕλάχιστη3–7% ανάλογα με το βάθος ανάλυσης

Σε αντίθεση με τη συσκότιση (ProGuard, DexGuard) που καθιστά τον κώδικα δυσανάγνωστο, το RASP ανιχνεύει ενεργά επιθέσεις κατά την εκμετάλλευση. Η συσκότιση είναι παθητική προστασία: αν ο επιτιθέμενος αφιερώσει αρκετό χρόνο στην αντίστροφη μηχανική, ο κώδικας θα διαβαστεί. Το RASP είναι ενεργό: βλέπει ότι ο επιτιθέμενος προσπαθεί να εντοπίσει σφάλματα στην εφαρμογή και αντιδρά πριν διαβαστεί έστω και μία γραμμή κώδικα. Ο συνδυασμός συσκότισης + RASP παρέχει πολυεπίπεδη προστασία, όπου η συσκότιση επιβραδύνει την ανάλυση και το RASP διακόπτει την επίθεση στο στάδιο της ενόργανης.

RASP σε κινητές εφαρμογές

Οι λύσεις RASP για κινητά είναι προσαρμοσμένες στις ιδιαιτερότητες Android και iOS. Σε αντίθεση με τις εφαρμογές διακομιστή Java, οι πράκτορες RASP για κινητά λειτουργούν υπό συνθήκες περιορισμένης μνήμης και μπαταρίας, που απαιτεί ελαφριά ενόργανη.

RASP σε Android

Σε Android, ο πράκτορας RASP ενσωματώνεται μέσω προσθέτου Gradle που τροποποιεί τον DEX bytecode στο στάδιο δημιουργίας. Ο πράκτορας υποκλέπτει πάνω από 50 κλήσεις συστήματος, συμπεριλαμβανομένων: Runtime.exec() για ανίχνευση εκκίνησης su ή Frida, Class.forName() για αναγνώριση φόρτωσης ύποπτων κλάσεων, System.loadLibrary() για έλεγχο φόρτωσης εγγενών βιβλιοθηκών από μη τυπικές διαδρομές. Επιπλέον, ελέγχεται η παρουσία στο /proc/self/maps των βιβλιοθηκών frida-agent, frida-helper, libinject και substrate.

RASP σε iOS

Σε iOS, το RASP υλοποιείται μέσω μετα-επεξεργασίας του δυαδικού αρχείου Mach-O. Για iOS η πολυπλοκότητα είναι υψηλότερη λόγω των αυστηρών απαιτήσεων της Apple για τροποποίηση δυαδικών αρχείων. Ο πράκτορας υποκλέπτει κλήσεις των συναρτήσεων fork(), dlopen(), ptrace() και ελέγχει την παρουσία CydiaSubstrate.dylib στις φορτωμένες βιβλιοθήκες. Το RASP για iOS δεν μπορεί να τροποποιήσει τον κώδικα στην έκδοση App Store — μόνο για διανομή Enterprise. Για το App Store συνιστάται η χρήση ενόργανης κατά τη μεταγλώττιση μέσω Swift Macro ή Objective-C method swizzling.

Ανίχνευση εργαλείων ανάλυσης

Το RASP για κινητά ανιχνεύει: Frida (μέσω ελέγχου /proc/self/maps και /data/local/tmp/frida*), Xposed Framework (μέσω ελέγχου de.robv.android.xposed.XposedBridge στο ClassLoader), εντοπιστή σφαλμάτων JDWP (μέσω Debug.isDebuggerConnected()), εξομοιωτές (μέσω ελέγχου Build.FINGERPRINT, Build.HARDWARE, Build.MODEL) και τη σημαία debuggable στο AndroidManifest. Σύμφωνα με το NowSecure Mobile Threat Report (2025), ο πράκτορας RASP ανιχνεύει το 89–97% των συνεδριών Frida με ενόργανη.

Υλοποίηση πράκτορα RASP στην πράξη

Η εφαρμογή του RASP σε μια κινητή εφαρμογή απαιτεί διαμόρφωση ενόργανης, καθορισμό πολιτικών και ενσωμάτωση με σύστημα SIEM για συλλογή καταγραφών συμβάντων.

Επιλογή υλοποίησης: compile-time vs runtime

Ενόργανη κατά τη μεταγλώττιση (compile-time) — τροποποίηση bytecode στο στάδιο δημιουργίας, που δεν επηρεάζει την απόδοση κατά τον χρόνο εκτέλεσης. Ενόργανη κατά τον χρόνο εκτέλεσης (runtime) (μέσω Java Agent στον διακομιστή ή Frida στον πελάτη) — πιο ευέλικτη, αλλά προσθέτει 5–10% επιβάρυνση. Για κινητές εφαρμογές, συνιστάται η προσέγγιση compile-time, καθώς δεν απαιτεί μόνιμη σύνδεση δικτύου και δεν καταναλώνει μπαταρία για ανάλυση.

Ενσωμάτωση με υπάρχουσες βιβλιοθήκες

Ο πράκτορας RASP πρέπει να λειτουργεί σωστά με δημοφιλή SDK. Το Firebase Crashlytics, το Google Analytics και το Appsee δεν πρέπει να αποκλείονται. Η διαμόρφωση whitelist για γνωστές βιβλιοθήκες είναι υποχρεωτική. Στη διαμόρφωση του πράκτορα ορίζονται εξαιρέσεις: εάν η κλήση προέρχεται από την κλάση com.google.firebase — ο έλεγχος παραλείπεται. Η Whitelist ενημερώνεται με κάθε έκδοση SDK.

Παράδειγμα χειρισμού συμβάντος

Κατά την ανίχνευση Frida από τον πράκτορα RASP πραγματοποιείται: συλλογή πλαισίου (ίχνος στοίβας, έκδοση OS, χρόνος), αποστολή δεδομένων στον διακομιστή καταγραφής σε κρυπτογραφημένη μορφή, εκτέλεση πολιτικής (crash, log-only ή deceive), αύξηση μετρητή για τον προσδιορισμό μαζικής επίθεσης. Τα δεδομένα από διάφορες συσκευές συγκεντρώνονται στον διακομιστή για τον εντοπισμό μοτίβων επίθεσης.

kotlin
class RASPManager {
    fun analyzeAndReact() {
        val threats = detectThreats()
        if (threats.isNotEmpty()) {
            val report = ThreatReport().apply {
                threats = threats
                timestamp = System.currentTimeMillis()
                deviceId = DeviceInfo.getHashedId()
                stackTrace = Thread
                    .currentThread()
                    .stackTrace
                    .take(10)
                    .toList()
            }

            val policy = SecurityPolicy.getPolicy(threats.maxBy { it.severity })

            when (policy) {
                Policy.BLOCK   -> throw SecurityException("Protection triggered")
                Policy.LOG     -> ServerLogger.sendReport(report)
                Policy.DECEIVE -> DeceptionLayer.activate(report)
            }
        }
    }
}

Περιορισμοί και ψευδείς συναγερμοί

Το RASP δεν είναι ασημένια σφαίρα. Η τεχνολογία έχει περιορισμούς που πρέπει να ληφθούν υπόψη κατά τον σχεδιασμό προστασίας.

Απόδοση

Κάθε υποκλαπείσα κλήση προσθέτει έναν έλεγχο πλαισίου. Σε επιθετική διαμόρφωση (υποκλοπή όλων των κλήσεων IO και exec) η απόδοση μπορεί να μειωθεί κατά 5–15%. Για κινητές εφαρμογές, ο χρόνος εκκίνησης είναι κρίσιμος: η αρχικοποίηση RASP προσθέτει 200–500 ms κατά την εκκίνηση. Συνιστάται σημειακή ενόργανη — μόνο κρίσιμες συναρτήσεις, όχι όλες τις πιθανές. Η Προφιλοποίηση με πράκτορα RASP είναι υποχρεωτική στο στάδιο δοκιμών.

Ψευδείς συναγερμοί

Το RASP μπορεί να αποκλείσει νόμιμη συμπεριφορά: το Firebase Crashlytics που στέλνει στοίβα σφαλμάτων μέσω κλήσης δικτύου μπορεί να θεωρηθεί εξαγωγή δεδομένων· το Google Play Integrity API που ελέγχει την ακεραιότητα συσκευής μπορεί να αναγνωριστεί ως ύποπτη κλήση. Για μείωση των ψευδών συναγερμών απαιτείται περίοδος εκμάθησης (learning mode) διάρκειας 7–14 ημερών, κατά την οποία το RASP μόνο καταγράφει αλλά δεν αποκλείει.

Παράκαμψη RASP

Εάν ο επιτιθέμενος αποκτήσει πρόσβαση σε επίπεδο πυρήνα (μέσω εκμετάλλευσης πυρήνα), το RASP δεν μπορεί να εμπιστευτεί ούτε τους δικούς του ελέγχους — ο πράκτορας λειτουργεί στον χώρο χρήστη και βλέπει ό,τι του επιτρέπει ο πυρήνας. Για την αποτροπή παράκαμψης σε επίπεδο πυρήνα χρησιμοποιείται έλεγχος Secure Boot Chain σε συνδυασμό με διαπίστευση διακομιστή. Επιπλέον, ο ίδιος ο πράκτορας RASP πρέπει να είναι συσκοτισμένος και προστατευμένος από εντοπισμό σφαλμάτων — διαφορετικά ο επιτιθέμενος θα αφαιρέσει ή θα απενεργοποιήσει το RASP πριν ξεκινήσει την επίθεση.

Συχνές Ερωτήσεις

Σε τι διαφέρει το RASP από ένα antivirus;

Το antivirus λειτουργεί σε επίπεδο λειτουργικού συστήματος, σαρώνοντας αρχεία και διεργασίες βάσει υπογραφών. Το RASP λειτουργεί εντός μιας συγκεκριμένης εφαρμογής και αναλύει το πλαίσιο συμπεριφοράς της. Το antivirus δεν γνωρίζει πώς πρέπει να λειτουργεί μια συγκεκριμένη εφαρμογή· το RASP γνωρίζει, επειδή είναι ενσωματωμένο σε αυτήν και βλέπει όλες τις εσωτερικές κλήσεις και καταστάσεις.

Είναι διαθέσιμο το RASP στο Google Play ή στο App Store;

Ναι, αλλά με περιορισμούς. Η Apple δεν επιτρέπει τροποποίηση κώδικα κατά τον χρόνο εκτέλεσης στο App Store, επομένως οι εκδόσεις RASP για iOS χρησιμοποιούν ενόργανη κατά τη μεταγλώττιση μέσω Swift Macro. Οι εκδόσεις RASP για Android μέσω προσθέτου Gradle είναι πλήρως συμβατές με το Google Play. Και οι δύο πλατφόρμες απαιτούν το RASP να μην παραβιάζει το απόρρητο του χρήστη και να μην συλλέγει δεδομένα χωρίς συγκατάθεση.

Μπορεί το RASP να χρησιμοποιηθεί για εφαρμογές διακομιστή Java;

Ναι, το RASP εμφανίστηκε αρχικά στη στοίβα Java. Οι πράκτορες Java μέσω java.lang.instrument υποκλέπτουν κλήσεις σε επίπεδο JVM. Λύσεις OpenSource: OpenRASP (Baidu) και jRASP. Εμπορικές λύσεις: Contrast Security, Hdiv, Prevoty. Για αρχιτεκτονική μικροϋπηρεσιών, το RASP εφαρμόζεται σε κάθε υπηρεσία ξεχωριστά.

Πόσο κοστίζει μια λύση RASP;

Οι εμπορικές λύσεις RASP για κινητές εφαρμογές κοστίζουν από 3 000 έως 15 000 USD ετησίως ανάλογα με τον αριθμό εφαρμογών και το επίπεδο υποστήριξης. OpenRASP (Baidu) — δωρεάν επιλογή ανοιχτού κώδικα για εφαρμογές διακομιστή. Τα SDK RASP για κινητά συχνά πωλούνται μαζί με συσκοτιστές (DexGuard + RASP, Arxan, Promon).

Πώς δοκιμάζεται η προστασία RASP;

Η μεθοδολογία δοκιμών περιλαμβάνει: προσπάθεια σύνδεσης Frida στην εφαρμογή και έλεγχο αντίδρασης RASP, εκτέλεση της εφαρμογής σε συσκευή με root/jailbreak, απομεταγλώττιση APK μέσω jadx και έλεγχο ότι ο κώδικας RASP δεν έχει αφαιρεθεί. Εργαλεία δοκιμών: Frida, Objection, MobSF (Mobile Security Framework) για αυτοματοποίηση ελέγχων.

Σύνοψη

  • RASP — τεχνολογία ενεργής προστασίας εφαρμογών που λειτουργεί από μέσα και αναλύει το πλαίσιο εκτέλεσης κάθε κρίσιμης κλήσης σε πραγματικό χρόνο
  • Αρχιτεκτονική RASP αποτελείται από στρώμα ενόργανης (υποκλοπή κλήσεων), αναλυτή πλαισίου (στοίβα, ορίσματα, νήμα) και πολιτική αντίδρασης (block, log, deceive)
  • Κινητό RASP ανιχνεύει Frida, Xposed, εντοπισμό σφαλμάτων, εξομοιωτές και τροποποίηση APK μέσω ελέγχου /proc/self/maps και κλήσεων συστήματος
  • Ενόργανη compile-time συνιστάται για κινητές εφαρμογές — δεν επηρεάζει την απόδοση κατά τον χρόνο εκτέλεσης και δεν απαιτεί δίκτυο
  • Συνδυασμός συσκότισης (παθητική προστασία) και RASP (ενεργή) παρέχει πολυεπίπεδη προστασία, όπου κάθε επίπεδο καλύπτει τα αδύναμα σημεία του άλλου
  • Περιορισμοί περιλαμβάνουν επίπτωση στην απόδοση (3–7%), κίνδυνο ψευδών συναγερμών (learning mode υποχρεωτικό) και ευπάθεια σε εκμεταλλεύσεις επιπέδου πυρήνα
  • RASP συνιστάται από τα πρότυπα OWASP Mobile Top 10 και PCI DSS 4.0 για εφαρμογές που επεξεργάζονται εμπιστευτικά δεδομένα και δεδομένα πληρωμών

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης