RASP (Runtime Application Self-Protection) — teknolohiya ng seguridad na direktang naka-embed sa aplikasyon at sinusuri ang pag-uugali nito sa runtime upang matukoy ang mga pag-atake. Hindi tulad ng mga firewall ng network o WAF, gumagana ang RASP mula sa loob: nakikita nito hindi lamang ang papasok na kahilingan, kundi pati na rin kung paano pinoproseso ng code ang kahilingang iyon — kung anong mga function ang tinatawag, anong data ang binabasa mula sa memorya, anong mga system call ang isinasagawa. Ayon sa datos ng OWASP Runtime Protection Project (2025), hinaharangan ng mga solusyong RASP ang hanggang 94% ng mga pag-atake bago pa man sila umabot sa mahinang code. RASP ay hindi nangangailangan ng pagbabago ng imprastraktura — lahat ng kailangan ay gumagana sa loob ng proseso ng aplikasyon.
Mga Pangunahing Punto
Runtime Application Self-Protection (RASP) — teknolohiya ng seguridad na isinama sa aplikasyon sa yugto ng pagbuo o sa pamamagitan ng ahente ng runtime. Sinusuri ng RASP ang pag-uugali ng aplikasyon sa panahon ng pagpapatupad at gumagawa ng mga desisyon tungkol sa pagharang ng mga pag-atake batay sa konteksto: saan nagmula ang tawag, anong data ang ipinapadala, ano ang estado ng stack. Hindi tulad ng mga sistema ng lagda, hindi hinahanap ng RASP ang mga kilalang pattern ng pag-atake — natutukoy nito ang abnormal na pag-uugali na lumilihis mula sa inaasahang senaryo ng pagpapatupad ng code.
Ang konsepto ng RASP ay pormal na ginawa ng Gartner noong 2011, at ang mga unang komersyal na pagpapatupad ay lumitaw noong 2014–2015. Para sa mga mobile platform, nagsimulang aktibong gamitin ang RASP mula noong 2017, nang matanto ng merkado ang kakulangan ng tradisyonal na obfuscation. Ayon sa ulat ng MarketsandMarkets (2025), ang dami ng merkado ng mga solusyong RASP ay 2.8 bilyon USD na may taunang paglago na 24.5%. Ang pagpapatupad ng RASP ay inirerekomenda ng mga pamantayang OWASP Mobile Top 10 at PCI DSS 4.0 para sa mga aplikasyon na nagpoproseso ng data ng pagbabayad.
Gumagana ang RASP sa dalawang antas: interception at assessment. Interception — pagharang ng mga system at library call sa pamamagitan ng mga hook na naka-embed sa code sa yugto ng pagbuo o sa runtime sa pamamagitan ng dinamikong instrumentasyon. Assessment — pagsusuri ng konteksto ng tawag: pagsusuri ng mga input parameter, stack ng tawag, estado ng sandbox, presensya ng debugger. Ang desisyon ay ginawa batay sa patakaran ng seguridad na itinakda ng developer. Ang patakaran ay maaaring mahigpit (harangin), malambot (ilog) o adaptive (baguhin ang pag-uugali depende sa antas ng banta).
Ang arkitektura ng RASP agent ay binubuo ng tatlong bahagi: layer ng instrumentasyon, analyzer at patakaran. Ang layer ng instrumentasyon ay humaharang ng mga system call at framework call. Sinusuri ng analyzer ang konteksto para sa pagsunod sa inaasahang mga pattern. Tinutukoy ng patakaran ang reaksiyon.
Para sa mga mobile application, ginagamit ang compile-time instrumentation: ang bytecode o native code ay binago sa yugto ng pagbuo — bago ang bawat mapanganib na tawag ay isiningit ang pagsusuri. Binabago ng compiler ng RASP agent ang mga entry point na FileOutputStream.write(), Runtime.exec(), Class.forName() at android.app.Activity.onStart(). Para sa Android, ginagamit ang transformasyon ng DEX bytecode sa pamamagitan ng Gradle plugin; para sa iOS — pagbabago ng Mach-O binary file sa pamamagitan ng post-link script.
Sa pagharang ng tawag, sinusuri ng RASP: klase at pamamaraan ng tumatawag (sino ang tumatawag), bakas ng stack (kadena ng mga tawag), mga argumento (ipinadalang data), halaga na ibinalik (ano ang ibinabalik), timestamp at id ng thread. Ang anomalya ay naitala kapag, halimbawa, ang Runtime.exec() ay tinatawag hindi mula sa UI thread at hindi mula sa code ng aplikasyon, kundi mula sa isang library na na-load sa pamamagitan ng JNI na may hindi karaniwang landas. O kapag ang FileOutputStream.write() ay tumanggap ng data na naglalaman ng executable bytecode sa halip na inaasahang PNG header.
Sinusuportahan ng RASP ang tatlong uri ng reaksiyon: Block — emergency na pagtatapos ng aplikasyon kapag may nakitang pag-atake, Log — pagpapadala ng mga detalye ng insidente sa server ng pagtitipon ng log nang hindi humihinto sa aplikasyon, Deceive — pagpapalit ng ibinalik na halaga ng peke upang ang umaatake ay makatanggap ng maling data. Ang kombinasyon ng Log at Deceive ay nagbibigay-daan sa pagtitipon ng intelihensiya tungkol sa umaatake nang hindi ibinubunyag ang katotohanan ng pagkakatuklas.
// Halimbawa: Pagsusuri ng RASP ng tawag na Runtime.exec()
public class RASPAgent {
public static Object onExecCalled(String command,
StackTraceElement[] stack) {
// Pagsusuri ng tumatawag
String caller = stack[1].getClassName();
// Kung ang tawag ay hindi mula sa aming package — kahina-hinala
if (!caller.startsWith("com.example.app")) {
SecurityPolicy.reportIncident(
"UNEXPECTED_EXEC", command, stack
);
return SecurityPolicy.getAction().execute(command);
}
// Suriin ang utos sa itim na listahan
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: walang laman na proseso
}
}
return null; // payagan ang pagpapatupad
}
}
Ang RASP ay madalas ikinukumpara sa Web Application Firewall (WAF), ngunit ang pangunahing pagkakaiba ay nasa posisyon. Ang WAF ay nasa perimeter ng network at sinusuri lamang ang mga HTTP na kahilingan. Ang RASP ay gumagana sa loob ng aplikasyon at nakikita ang lohika ng pagproseso.
| Katangian | WAF | RASP |
|---|---|---|
| Lokasyon | Perimeter ng network | Sa loob ng aplikasyon |
| Ano ang sinusuri | Mga HTTP na kahilingan | Mga system call, memorya, stack |
| Naka-encrypt na trapiko | Nangangailangan ng decryption ng TLS | Nakikita pagkatapos ng decryption |
| Mga pag-atake sa mobile | Hindi nakikita (Frida, debugging) | Direktang natutukoy |
| Maling alarm | Mataas (mga patakaran ng regex) | Katamtaman (pagsusuri ng konteksto) |
| Epekto sa pagganap | Minimal | 3–7% depende sa lalim ng pagsusuri |
Hindi tulad ng obfuscation (ProGuard, DexGuard) na ginagawang hindi mabasa ang code, ang RASP ay aktibong natutukoy ang mga pag-atake sa panahon ng eksploytasyon. Ang obfuscation ay passive na proteksyon: kung ang umaatake ay gumugol ng sapat na oras sa reverse engineering, ang code ay mababasa. Ang RASP ay aktibo: nakikita nito na sinusubukan ng umaatake na i-debug ang aplikasyon at gumanti bago pa man mabasa ang kahit isang linya ng code. Ang kombinasyon ng obfuscation + RASP ay nagbibigay ng multi-layered na proteksyon, kung saan ang obfuscation ay nagpapabagal ng pagsusuri, at ang RASP ay humihinto ng pag-atake sa yugto ng instrumentasyon.
Ang mga mobile RASP na solusyon ay inangkop sa mga detalye ng Android at iOS. Hindi tulad ng mga server Java application, ang mga mobile RASP agent ay gumagana sa kondisyon ng limitadong memorya at baterya, na nangangailangan ng magaan na instrumentasyon.
Sa Android, ang RASP agent ay naka-embed sa pamamagitan ng Gradle plugin na nagbabago ng DEX bytecode sa yugto ng pagbuo. Ang ahente ay humaharang ng higit sa 50 system call, kabilang ang: Runtime.exec() para sa pagtuklas ng paglunsad ng su o Frida, Class.forName() para sa pagtukoy ng pag-load ng mga kahina-hinalang klase, System.loadLibrary() para sa pagkontrol ng pag-load ng mga native library mula sa hindi karaniwang mga landas. Bukod pa rito, ang presensya sa /proc/self/maps ng mga library na frida-agent, frida-helper, libinject at substrate ay sinusuri.
Sa iOS, ang RASP ay ipinatutupad sa pamamagitan ng post-processing ng Mach-O binary file. Para sa iOS, ang kumplikasyon ay mas mataas dahil sa mahigpit na mga kinakailangan ng Apple sa pagbabago ng mga binary file. Ang ahente ay humaharang ng mga tawag ng mga function na fork(), dlopen(), ptrace() at sinusuri ang presensya ng CydiaSubstrate.dylib sa mga na-load na library. Ang RASP para sa iOS ay hindi maaaring baguhin ang code sa App Store build — para lamang sa Enterprise distribution. Para sa App Store, inirerekomenda ang paggamit ng compile-time instrumentation sa pamamagitan ng Swift Macro o Objective-C method swizzling.
Natutukoy ng mobile RASP ang: Frida (sa pamamagitan ng pagsusuri ng /proc/self/maps at /data/local/tmp/frida*), Xposed Framework (sa pamamagitan ng pagsusuri ng de.robv.android.xposed.XposedBridge sa ClassLoader), JDWP debugger (sa pamamagitan ng Debug.isDebuggerConnected()), mga emulator (sa pamamagitan ng pagsusuri ng Build.FINGERPRINT, Build.HARDWARE, Build.MODEL) at debuggable flag sa AndroidManifest. Ayon sa NowSecure Mobile Threat Report (2025), ang RASP agent ay natutukoy ang 89–97% ng mga na-instrument na Frida session.
Ang pagpapatupad ng RASP sa isang mobile application ay nangangailangan ng pagsasaayos ng instrumentasyon, pagtukoy ng mga patakaran at pagsasama sa SIEM system para sa pagtitipon ng mga log ng insidente.
Compile-time instrumentation — pagbabago ng bytecode sa yugto ng pagbuo, na hindi nakakaapekto sa pagganap sa runtime. Runtime instrumentation (sa pamamagitan ng Java Agent sa server o Frida sa client) — mas flexible, ngunit nagdaragdag ng 5–10% overhead. Para sa mga mobile application, ang compile-time na diskarte ay inirerekomenda, dahil hindi ito nangangailangan ng permanenteng koneksyon sa network at hindi kumukonsumo ng baterya para sa pagsusuri.
Ang RASP agent ay dapat gumana nang tama sa mga sikat na SDK. Ang Firebase Crashlytics, Google Analytics at Appsee ay hindi dapat harangin. Ang pagsasaayos ng whitelist para sa mga kilalang library ay sapilitan. Sa pagsasaayos ng ahente, itinakda ang mga eksepsiyon: kung ang tawag ay nagmula sa klase na com.google.firebase — nilalaktawan ang pagsusuri. Ang Whitelist ay ina-update sa bawat paglabas ng SDK.
Kapag natukoy ang Frida ng RASP agent, nangyayari ang: pagtitipon ng konteksto (bakas ng stack, bersyon ng OS, oras), pagpapadala ng data sa server ng pag-log sa naka-encrypt na anyo, pagpapatupad ng patakaran (crash, log-only o deceive), pagtaas ng counter para sa pagtukoy ng malawakang pag-atake. Ang data mula sa iba't ibang device ay pinagsama-sama sa server para sa pagtukoy ng mga pattern ng pag-atake.
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)
}
}
}
}
Ang RASP ay hindi isang silver bullet. Ang teknolohiya ay may mga limitasyon na dapat isaalang-alang sa pagdidisenyo ng proteksyon.
Ang bawat naharang na tawag ay nagdaragdag ng pagsusuri ng konteksto. Sa agresibong pagsasaayos (pagharang ng lahat ng IO at exec na tawag) ang pagganap ay maaaring bumaba ng 5–15%. Para sa mga mobile application, ang oras ng pagsisimula ay kritikal: ang pagsisimula ng RASP ay nagdaragdag ng 200–500 ms sa startup. Inirerekomenda ang point na instrumentasyon — mga kritikal na function lamang, hindi lahat ng posibleng function. Ang Profil na may RASP agent ay sapilitan sa yugto ng pagsubok.
Maaaring harangin ng RASP ang lehitimong pag-uugali: ang Firebase Crashlytics na nagpapadala ng stack ng error sa pamamagitan ng network call ay maaaring ituring na exfiltration ng data; ang Google Play Integrity API na sumusuri ng integridad ng device ay maaaring matukoy bilang kahina-hinalang tawag. Para mabawasan ang maling alarm, kinakailangan ang panahon ng pag-aaral (learning mode) na tumatagal ng 7–14 araw, kung saan ang RASP ay nagla-log lamang ngunit hindi humaharang.
Kung ang umaatake ay makakuha ng access sa antas ng kernel (sa pamamagitan ng kernel exploit), ang RASP ay hindi maaaring magtiwala kahit sa sarili nitong mga pagsusuri — ang ahente ay gumagana sa espasyo ng user at nakikita kung ano ang pinapayagan ng kernel. Para maiwasan ang pag-iwas sa antas ng kernel, ginagamit ang Secure Boot Chain check sa kombinasyon ng atestasyon ng server. Bukod pa rito, ang RASP agent mismo ay dapat na obfuscat at protektado laban sa debugging — kung hindi, aalisin o idesaaktibo ng umaatake ang RASP bago simulan ang pag-atake.
Mga Madalas Itanong
Ang antivirus ay gumagana sa antas ng operating system, nag-scan ng mga file at proseso batay sa mga lagda. RASP ay gumagana sa loob ng isang partikular na aplikasyon at sinusuri ang konteksto ng pag-uugali nito. Hindi alam ng antivirus kung paano dapat gumana ang isang partikular na aplikasyon; alam ng RASP, dahil naka-embed ito rito at nakikita ang lahat ng panloob na tawag at estado.
Oo, ngunit may mga limitasyon. Hindi pinapayagan ng Apple ang runtime modification ng code sa App Store, kaya ang mga bersyon ng iOS ng RASP ay gumagamit ng compile-time instrumentation sa pamamagitan ng Swift Macro. Ang mga bersyon ng Android ng RASP sa pamamagitan ng Gradle plugin ay ganap na compatible sa Google Play. Ang parehong platform ay nangangailangan na ang RASP ay hindi lumalabag sa privacy ng user at hindi nangongolekta ng data nang walang pahintulot.
Oo, ang RASP ay unang lumitaw sa Java stack. Ang mga Java agent sa pamamagitan ng java.lang.instrument ay humaharang ng mga tawag sa antas ng JVM. Mga solusyong OpenSource: OpenRASP (Baidu) at jRASP. Mga komersyal na solusyon: Contrast Security, Hdiv, Prevoty. Para sa microservice architecture, ang RASP ay ipinatutupad sa bawat serbisyo nang hiwalay.
Ang mga komersyal na RASP solution para sa mobile application ay nagkakahalaga mula 3 000 hanggang 15 000 USD bawat taon depende sa bilang ng mga application at antas ng suporta. OpenRASP (Baidu) — libreng open-source na opsyon para sa server application. Ang mga Mobile RASP SDK ay madalas ibinebenta kasama ng mga obfuscator (DexGuard + RASP, Arxan, Promon).
Ang metodolohiya ng pagsubok ay kinabibilangan ng: pagtatangkang ikonekta ang Frida sa aplikasyon at suriin ang reaksiyon ng RASP, pagpapatakbo ng aplikasyon sa rooted/jailbroken na device, decompilation ng APK sa pamamagitan ng jadx at pagsusuri na ang RASP code ay hindi naalis. Mga kasangkapan sa pagsubok: Frida, Objection, MobSF (Mobile Security Framework) para sa automation ng mga pagsusuri.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din