RASP — vad är det, funktionsprincip och skydd i realtid

Författare: IT Sectr Publicerad: 2026-04-03 Lästid: 10 min

RASP (Runtime Application Self-Protection) — en säkerhetsteknik som bäddas in direkt i applikationen och analyserar dess beteende under körning (runtime) för att upptäcka attacker. Till skillnad från nätverksbrandväggar eller WAF fungerar RASP inifrån: det ser inte bara den inkommande begäran, utan också hur denna begäran bearbetas av koden — vilka funktioner som anropas, vilka data som läses från minnet, vilka systemanrop som utförs. Enligt uppgifter från OWASP Runtime Protection Project (2025) blockerar RASP-lösningar upp till 94% av attackerna innan de når den sårbara koden. RASP kräver ingen förändring av infrastrukturen — allt som behövs fungerar inuti applikationsprocessen.

Huvudpunkter

  • RASP — inbyggt skydd som fungerar inuti applikationen och analyserar körningskontexten för varje anrop i realtid
  • Funktionsprincip baseras på kodinstrumentering: agenten fångar upp kritiska funktioner (exec, open, read, send) och kontrollerar dem för avvikelser
  • Skillnad från WAF — RASP ser inte bara HTTP-begäran utan hela bearbetningskontexten: anropsstack, variabelvärden, minnesstatus
  • Mobil RASP upptäcker Frida, Xposed, JDWP-felsökning, emulatorer och APK-modifiering via integritetskontroll under körning
  • RASP-principer omfattar blockering (krasch), loggning med servermeddelande och generering av falska data för att desorientera angriparen

Vad är RASP?

Runtime Application Self-Protection (RASP) — en säkerhetsteknik som integreras i applikationen i byggfasen eller via en runtime-agent. RASP analyserar applikationens beteende under körning och fattar beslut om blockering av attacker baserat på kontext: var anropet kom ifrån, vilka data som överförs, vad stackens tillstånd är. Till skillnad från signaturbaserade system letar RASP inte efter kända attackmönster — det upptäcker onormalt beteende som avviker från det förväntade körningsscenariot för koden.

RASP-konceptet formaliserades av Gartner 2011, och de första kommersiella implementeringarna dök upp 2014–2015. För mobila plattformar började RASP tillämpas aktivt från 2017, när marknaden insåg att traditionell obfuskering var otillräcklig. Enligt MarketsandMarkets rapport (2025) uppgår marknadsvolymen för RASP-lösningar till 2,8 miljarder USD med en årlig tillväxt på 24,5%. Implementering av RASP rekommenderas av standarderna OWASP Mobile Top 10 och PCI DSS 4.0 för applikationer som behandlar betalningsdata.

RASP arbetar på två nivåer: interception och assessment. Interception — avlyssning av system- och biblioteksanrop via krokar som bäddas in i koden i byggfasen eller under runtime genom dynamisk instrumentering. Assessment — analys av anropskontexten: kontroll av indataparametrar, anropsstack, sandbox-status, förekomst av felsökare. Beslutet fattas baserat på den säkerhetspolicy som utvecklaren ställt in. Policyn kan vara strikt (blockera), mjuk (logga) eller adaptiv (ändra beteende beroende på hotnivå).

Hur fungerar RASP: arkitektur och mekanismer

Arkitekturen för en RASP-agent består av tre komponenter: instrumenteringsskikt, analysator och policy. Instrumenteringsskiktet fångar upp systemanrop och ramverksanrop. Analysatorn kontrollerar kontexten mot förväntade mönster. Policyn bestämmer reaktionen.

Kodinstrumentering

För mobila applikationer används kompileringstidsinstrumentering (compile-time): bytekod eller inbyggd kod modifieras i byggfasen — före varje farligt anrop infogas en kontroll. Kompilatorn för RASP-agenten modifierar ingångspunkterna FileOutputStream.write(), Runtime.exec(), Class.forName() och android.app.Activity.onStart(). För Android används DEX-bytekodtransformering via Gradle-plugin; för iOS — modifiering av Mach-O binärfil via post-link-skript.

Kontextanalys

Vid avlyssning av ett anrop analyserar RASP: den anropande klassen och metoden (vem anropar), stackspårning (anropskedja), argument (överförda data), returvärde (vad som returneras), tidsstämpel och tråd-ID. En avvikelse registreras när till exempel Runtime.exec() anropas inte från UI-tråden och inte från applikationskoden, utan från ett bibliotek som laddats via JNI med en icke-standard sökväg. Eller när FileOutputStream.write() tar emot data som innehåller körbar bytekod istället för en förväntad PNG-rubrik.

Reaktionspolicy

RASP stöder tre typer av reaktion: Block — nödstopp av applikationen vid upptäckt av attack, Log — sändning av incidentdetaljer till logginsamlingsservern utan att stoppa applikationen, Deceive — ersättning av returvärdet med ett falskt så att angriparen får felaktiga data. Kombinationen av Log och Deceive gör det möjligt att samla in underrättelser om angriparen utan att avslöja det faktum att upptäckt skett.

java
// Exempel: RASP-kontroll av Runtime.exec()-anrop
public class RASPAgent {
    public static Object onExecCalled(String command,
            StackTraceElement[] stack) {

        // Kontroll av anropare
        String caller = stack[1].getClassName();

        // Om anropet inte kommer från vårt paket — misstänkt
        if (!caller.startsWith("com.example.app")) {
            SecurityPolicy.reportIncident(
                "UNEXPECTED_EXEC", command, stack
            );
            return SecurityPolicy.getAction().execute(command);
        }

        // Kontrollera kommandot på svartlista
        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: tom process
            }
        }

        return null; // tillåt utförande
    }
}

RASP vs WAF och andra skyddsmedel

RASP jämförs ofta med Web Application Firewall (WAF), men den grundläggande skillnaden ligger i positioneringen. WAF finns vid nätverksperimetern och analyserar endast HTTP-begäranden. RASP fungerar inuti applikationen och ser bearbetningslogiken.

EgenskapWAFRASP
PlaceringNätverksperimeterInuti applikationen
Vad det analyserarHTTP-begärandenSystemanrop, minne, stack
Krypterad trafikKräver TLS-dekrypteringSer efter dekryptering
Mobila attackerSer inte (Frida, felsökning)Upptäcker direkt
FalsklarmHöga (regex-regler)Måttliga (kontextanalys)
Påverkan på prestandaMinimal3–7% beroende på analysdjup

Till skillnad från obfuskering (ProGuard, DexGuard) som gör koden oläslig, upptäcker RASP aktivt attacker under exploatering. Obfuskering är passivt skydd: om angriparen lägger tillräckligt med tid på reverse engineering kommer koden att läsas. RASP är aktivt: det ser att angriparen försöker felsöka applikationen och reagerar innan en enda kodrad har lästs. Kombinationen av obfuskering + RASP ger flerskiktat skydd, där obfuskering saktar ner analysen och RASP avbryter attacken i instrumenteringsfasen.

RASP i mobila applikationer

Mobila RASP-lösningar är anpassade till Android och iOS specifika egenskaper. Till skillnad från server-Java-applikationer arbetar mobila RASP-agenter under begränsade minnes- och batteriförhållanden, vilket kräver lätt instrumentering.

RASP på Android

På Android bäddas RASP-agenten in via en Gradle-plugin som modifierar DEX-bytekoden i byggfasen. Agenten fångar upp över 50 systemanrop, inklusive: Runtime.exec() för att upptäcka start av su eller Frida, Class.forName() för att identifiera laddning av misstänkta klasser, System.loadLibrary() för att kontrollera laddning av inbyggda bibliotek från icke-standard sökvägar. Dessutom kontrolleras förekomsten i /proc/self/maps av biblioteken frida-agent, frida-helper, libinject och substrate.

RASP på iOS

På iOS implementeras RASP via efterbehandling av Mach-O binärfilen. För iOS är komplexiteten högre på grund av Apples strikta krav på modifiering av binärfiler. Agenten fångar upp anrop av funktionerna fork(), dlopen(), ptrace() och kontrollerar förekomsten av CydiaSubstrate.dylib i laddade bibliotek. RASP för iOS kan inte modifiera koden i App Store-bygget — endast för Enterprise-distribution. För App Store rekommenderas användning av kompileringstidsinstrumentering via Swift Macro eller Objective-C method swizzling.

Detektering av analysverktyg

Mobil RASP upptäcker: Frida (genom kontroll av /proc/self/maps och /data/local/tmp/frida*), Xposed Framework (genom kontroll av de.robv.android.xposed.XposedBridge i ClassLoader), JDWP-felsökare (genom Debug.isDebuggerConnected()), emulatorer (genom kontroll av Build.FINGERPRINT, Build.HARDWARE, Build.MODEL) och debuggable-flaggan i AndroidManifest. Enligt NowSecure Mobile Threat Report (2025) upptäcker RASP-agenten 89–97% av instrumenterade Frida-sessioner.

Implementering av RASP-agent i praktiken

Införande av RASP i en mobil applikation kräver konfigurering av instrumentering, definiering av policyer och integration med SIEM-system för insamling av incidentloggar.

Val av implementering: compile-time vs runtime

Kompileringstidsinstrumentering (compile-time) — modifiering av bytekod i byggfasen, som inte påverkar prestandan under runtime. Runtime-instrumentering (via Java Agent på servern eller Frida på klienten) — mer flexibel, men lägger till 5–10% overhead. För mobila applikationer rekommenderas compile-time-metoden, eftersom den inte kräver permanent nätverksanslutning och inte förbrukar batteri för analys.

Integration med befintliga bibliotek

RASP-agenten måste fungera korrekt med populära SDK:er. Firebase Crashlytics, Google Analytics och Appsee får inte blockeras. Konfigurering av vitlista för kända bibliotek är obligatorisk. I agentens konfiguration ställs undantag in: om anropet kommer från klassen com.google.firebase — hoppas kontrollen över. Vitlistan uppdateras med varje SDK-utgåva.

Exempel på incidenthantering

Vid upptäckt av Frida av RASP-agenten sker: insamling av kontext (stackspårning, OS-version, tid), sändning av data till loggningsservern i krypterad form, utförande av policy (crash, log-only eller deceive), ökning av räknare för att bestämma massattack. Data från olika enheter aggregeras på servern för att identifiera attackmönster.

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)
            }
        }
    }
}

Begränsningar och falsklarm

RASP är inte en silverkula. Tekniken har begränsningar som måste beaktas vid utformning av skydd.

Prestanda

Varje avlyssnat anrop lägger till en kontextkontroll. Vid aggressiv konfiguration (avlyssning av alla IO- och exec-anrop) kan prestandan sjunka med 5–15%. För mobila applikationer är starttiden kritisk: RASP-initiering lägger till 200–500 ms vid start. Punktinstrumentering rekommenderas — endast kritiska funktioner, inte alla möjliga funktioner. Profilering med RASP-agent är obligatorisk i testfasen.

Falsklarm

RASP kan blockera legitimt beteende: Firebase Crashlytics som skickar felstack via ett nätverksanrop kan bedömas som dataexfiltrering; Google Play Integrity API som kontrollerar enhetens integritet kan identifieras som ett misstänkt anrop. För att minska falsklarm krävs en inlärningsperiod (learning mode) på 7–14 dagar, under vilken RASP endast loggar men inte blockerar.

Kringgående av RASP

Om angriparen får åtkomst på kärnnivå (via en kärnexploit) kan RASP inte lita på ens sina egna kontroller — agenten arbetar i användarutrymmet och ser vad kärnan tillåter. För att förhindra kringgående på kärnnivå används Secure Boot Chain-kontroll i kombination med serverattestering. Dessutom måste RASP-agenten själv vara obfuskerad och skyddad mot felsökning — annars kommer angriparen att ta bort eller inaktivera RASP innan attacken påbörjas.

Vanliga frågor

Hur skiljer sig RASP från ett antivirus?

Antivirus arbetar på operativsystemsnivå, skannar filer och processer baserat på signaturer. RASP arbetar inuti en specifik applikation och analyserar dess beteendekontext. Antivirus vet inte hur en specifik applikation ska fungera; RASP vet, eftersom det är inbäddat i den och ser alla interna anrop och tillstånd.

Finns RASP tillgängligt i Google Play eller App Store?

Ja, men med begränsningar. Apple tillåter inte runtime-modifiering av kod i App Store, så iOS-versioner av RASP använder kompileringstidsinstrumentering via Swift Macro. Android-versioner av RASP via Gradle-plugin är helt kompatibla med Google Play. Båda plattformarna kräver att RASP inte kränker användarens integritet och inte samlar in data utan samtycke.

Kan RASP användas för server-Java-applikationer?

Ja, RASP dök ursprungligen upp på Java-stacken. Java-agenter via java.lang.instrument fångar upp anrop på JVM-nivå. OpenSource-lösningar: OpenRASP (Baidu) och jRASP. Kommersiella lösningar: Contrast Security, Hdiv, Prevoty. För mikrotjänstarkitektur införs RASP i varje tjänst separat.

Hur mycket kostar en RASP-lösning?

Kommersiella RASP-lösningar för mobila applikationer kostar mellan 3 000 och 15 000 USD per år beroende på antal applikationer och supportnivå. OpenRASP (Baidu) — gratis open-source-alternativ för serverapplikationer. Mobila RASP SDK:er säljs ofta tillsammans med obfuskerare (DexGuard + RASP, Arxan, Promon).

Hur testar man RASP-skydd?

Testmetodiken omfattar: försök att ansluta Frida till applikationen och kontrollera RASP-reaktionen, körning av applikationen på en rootad/jailbreakad enhet, dekompilering av APK via jadx och kontroll att RASP-koden inte har tagits bort. Testverktyg: Frida, Objection, MobSF (Mobile Security Framework) för automatisering av kontroller.

Sammanfattning

  • RASP — aktiv applikationsskyddsteknik som fungerar inifrån och analyserar körningskontexten för varje kritiskt anrop i realtid
  • RASP-arkitektur består av instrumenteringsskikt (anropsavlyssning), kontextanalysator (stack, argument, tråd) och reaktionspolicy (block, log, deceive)
  • Mobil RASP upptäcker Frida, Xposed, felsökning, emulatorer och APK-modifiering via kontroll av /proc/self/maps och systemanrop
  • Compile-time-instrumentering rekommenderas för mobila applikationer — påverkar inte runtime-prestanda och kräver inget nätverk
  • Kombination av obfuskering (passivt skydd) och RASP (aktivt) ger flerskiktat skydd där varje nivå täcker den andras svagheter
  • Begränsningar omfattar påverkan på prestanda (3–7%), risk för falsklarm (learning mode obligatorisk) och sårbarhet för kärnnivåexploater
  • RASP rekommenderas av standarderna OWASP Mobile Top 10 och PCI DSS 4.0 för applikationer som behandlar konfidentiella och betalningsdata

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också