Cara Implementasi freeRASP di Flutter untuk Keamanan Aplikasi Mobile

Pada artikel kali ini, kami akan membahas bagaimana cara implementasi freeRASP dalam aplikasi mobile untuk meningkatkan keamanannya. Dengan tingginya risiko ancaman seperti rooting, hooking, hingga reverse engineering, freeRASP hadir sebagai solusi open-source yang dapat membantu mendeteksi potensi serangan. Melalui penerapan yang tepat, developer dapat menjaga performa aplikasi tetap optimal sekaligus memberikan perlindungan ekstra bagi data user.

Mengapa Runtime Protection Penting Saat Ini

Aplikasi mobile kini semakin banyak memproses data sensitif — mulai dari pembayaran, informasi pribadi, hingga alat internal perusahaan. Kondisi ini membuat aplikasi menjadi target bernilai tinggi bagi para penyerang. Oleh karena itu, memahami pentingnya runtime protection dan mengetahui cara implementasi freeRASP menjadi langkah krusial bagi developer untuk melindungi aplikasi dari berbagai ancaman.

APLIKASI ABSENSI ONLINE

Perlu dipahami bahwa meskipun praktik keamanan dasar seperti secure coding, TLS, autentikasi yang kuat, dan validasi di sisi server sangat penting, hal tersebut tidak mampu mendeteksi ancaman runtime tertentu. Misalnya:

  • Dynamic instrumentation (seperti Frida)
  • App tampering
  • Perangkat yang sudah di-root atau jailbreak

Runtime Application Self-Protection (RASP) berjalan di dalam aplikasi untuk mendeteksi kondisi-kondisi ini dan memungkinkan aplikasi bereaksi secara real-time: memberi peringatan kepada pengguna, menonaktifkan fitur berisiko, atau bahkan memblokir aplikasi bila diperlukan. freeRASP dari Talsec adalah toolkit RASP yang terbuka dan berfokus pada developer, yang dapat diintegrasikan langsung ke dalam aplikasi mobile. Tidak hanya untuk Flutter, freeRASP juga mendukung native Android, iOS, serta berbagai framework hybrid populer seperti React Native, Cordova, Capacitor, bahkan game engine Unity.

Artikel ini akan membahas apa itu freeRASP, alasan menggunakannya, cara implementasi di Flutter, rekomendasi kebijakan untuk menangani deteksi ancaman (termasuk dialog blocking untuk perangkat rooted/jailbroken), dan gambaran apa yang akan terlihat di Talsec Portal.

Apa Itu freeRASP dan Apa Fungsinya?

Secara garis besar, freeRASP adalah SDK perlindungan in-app yang melakukan pemeriksaan berkala maupun berbasis event untuk mendeteksi kondisi runtime yang mencurigakan. Beberapa kemampuan utama:

  • Root / Jailbreak detection (misalnya Magisk atau indikator jailbreak umum)
  • Hooking / instrumentation detection (Frida dan framework serupa)
  • Debugger detection
  • Integrity / tampering checks (deteksi tanda tangan & repackaging)
  • Emulator / simulator detection
  • Deteksi screenshot & screen-recording (bergantung pada platform; menggunakan API terbaru Android/iOS jika tersedia)
  • Opsional: pemindaian aplikasi berisiko melalui modul freeMalwareDetection (Android)
  • Telemetry ke Talsec Data Visualisation Portal untuk analisis tren & insiden

Dengan freeRASP, developer mendapatkan callback in-app untuk menguatkan keamanan sekaligus telemetri untuk monitoring.

👉 Penting: freeRASP adalah defense in depth. Ia melengkapi bukan menggantikan arsitektur dan enforcement di sisi server.

Tutorial: Cara Implementasi freeRASP hands-on di Flutter

Prasyarat

Sebelum mengintegrasikan freeRASP, pastikan project Anda memenuhi syarat berikut:

  • Minimum SDK level: 23 atau lebih tinggi
  • Gradle: 8.12.1 atau lebih tinggi
  • Compile SDK version: 35
  • Kotlin version: 2.1.0
  • Sertifikat signing aplikasi Android (Base64 SHA256) untuk pemeriksaan integritas rilis. Baca lebih lanjut disini
  • iOS: Bundle ID & Team ID (disarankan Xcode 15)
  • watcherMail untuk registrasi di Talsec Portal (agar telemetry aktif)

💡 Tips: integrasikan dulu ke build staging dengan isProd=false untuk testing dan pastikan callback tidak memengaruhi user production.

Langkah Praktis

Install package

Jalankan dari root project Anda:

flutter pub add freerasp

Perintah diatas merupakan cara untuk menambahkan package ke dalam file pubspec.yaml

Android Manifest (opsional — deteksi screenshot & screen-recording)

Tambahkan permission di android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
<uses-permission android:name="android.permission.DETECT_SCREEN_RECORDING" />

Catatan: bergantung pada versi Android (Android 14/15). Ikuti panduan platform untuk memastikan kompatibilitas.

Inisialisasi freeRASP di main.dart

import 'package:flutter/widgets.dart';
import 'package:freerasp/freerasp.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final config = TalsecConfig(
    androidConfig: AndroidConfig(
      packageName: 'com.mycompany.myapp',
      signingCertHashes: ['<RELEASE_BASE64_SHA256>'],
      supportedStores: ['com.android.vending'],
    ),
    iosConfig: IOSConfig(
      bundleIds: ['com.mycompany.myapp'],
      teamId: 'YOUR_TEAM_ID',
    ),
    watcherMail: '[email protected]',
    isProd: false, // mulai dari staging
  );

  Talsec.instance.attachListener(appThreatCallback);
  await Talsec.instance.start(config);
}

// Callback ancaman
final appThreatCallback = ThreatCallback(
  onAppIntegrity: () => print('integrity issue'),
  onObfuscationIssues: () => print('obfuscation missing'),
  onDebug: () => print('debugger present'),
  onHooks: () => print('hooks detected'),
  onScreenshot: () => print('screenshot taken'),
  onRoot: () => handleRootOrJailbreak(),
  onJailbreak: () => handleRootOrJailbreak(),
);

Menangani deteksi — Dialog Blocking untuk Root/Jailbreak

Untuk perangkat rooted/jailbroken, sebaiknya aplikasi langsung diblokir. Berikut contoh memunculkan dialog yang tidak bisa ditutup:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

void handleRootOrJailbreak() {
  final context = navigatorKey.currentState?.overlay?.context;
  if (context == null) return;

  showDialog(
    context: context,
    barrierDismissible: false,
    builder: (context) => WillPopScope(
      onWillPop: () async => false, //mencegah dialog ditutup
      child: AlertDialog(
        title: const Text('Security issue detected'),
        content: const Text('Perangkat ini terdeteksi rooted/jailbroken. Demi keamanan, aplikasi diblokir.'),
        actions: [
          TextButton(
            onPressed: () async {
              SystemNavigator.pop(); // keluar dari aplikasi
            },
            child: const Text('Tutup aplikasi'),
          ),
        ],
      ),
    ),
  );
}

📌 UX Tips:

  • Gunakan blocking dialog hanya untuk ancaman level tinggi (tampering, hooking, root/jailbreak).
  • Untuk ancaman ringan, pertimbangkan cukup memberi peringatan atau membatasi fitur.
  • Selalu log insiden ke backend & Talsec Portal.

Obfuscation dan ProGuard

Pastikan build rilis Anda menggunakan obfuscation R8/ProGuard. SDK sudah menyediakan aturan ProGuard consumer; jangan menghapusnya kecuali Anda benar-benar memahami konsekuensinya. Obfuscation meningkatkan tingkat kesulitan untuk melakukan reverse-engineer pada binary Anda.

Opsional: freeMalwareDetection (Android)

Jika aplikasi Anda perlu mendeteksi paket terpasang yang mencurigakan atau izin berisiko, modul opsional ini dapat menambah sinyal deteksi. Gunakan secara bijak untuk menghindari masalah privasi dan tetap mematuhi kebijakan store.

Apa yang Akan Terlihat di Talsec Portal

Dengan telemetry aktif (watcherMail) setiap event akan direcord ke Talsec Portal, dimana Anda akan dapat:

  • Melihat ringkasan ancaman (grafik waktu & jumlah insiden)
  • Menelusuri insiden per perangkat dengan metadata lengkap
  • Analisis lingkungan perangkat (OS, store, indikator umum)
  • Membuat laporan & ekspor CSV untuk audit
  • Memantau tren & benchmark dibanding data agregat anonim
This image has an empty alt attribute; its file name is image

Kebijakan, false positive, dan tips operasional

  • Mulai dari staging: lakukan validasi sinyal dan sesuaikan callback.
  • Catat semuanya: selalu rekam metadata deteksi agar Anda bisa menyelidiki kemungkinan false positive.
  • UX yang bijak: seimbangkan antara keamanan dan pengalaman pengguna — untuk aplikasi konsumen, lebih baik membatasi alur sensitif sebelum melakukan pemblokiran penuh; untuk aplikasi perbankan atau aplikasi dengan risiko tinggi, pemblokiran yang lebih ketat mungkin lebih tepat.
  • Kepatuhan: berhati-hatilah saat menggunakan deteksi malware atau memindai paket terpasang; pastikan sesuai dengan kebijakan privasi dan aturan store.

Kesimpulan

freeRASP menawarkan cara praktis dan ringan untuk menambah lapisan keamanan runtime di aplikasi mobile. Plugin Flutter membuat integrasi lebih mudah, sementara SDK native dan wrapper hybrid memungkinkan strategi perlindungan yang konsisten lintas platform.

Dengan memahami cara implementasi freeRASP secara tepat—mulai dari server-side check, secure storage, hingga autentikasi kuat—developer dapat menjadikannya sebagai bagian penting dari strategi defense in depth. Mulailah dari staging, kumpulkan telemetry, atur kebijakan (peringatan vs. blocking), lalu aktifkan di production dengan signing & obfuscation yang sesuai.

LOGIQUE sendiri, dalam menyediakan jasa pengembangan aplikasi Flutter, selalu menekankan keamanan, performa, dan skalabilitas agar aplikasi lebih andal. Jika Anda membutuhkan bantuan untuk pengembangan aplikasi mobile, silakan hubungi kami. Tim ahli kami akan memberikan konsultasi yang komprehensif untuk merancang strategi pengembangan aplikasi terbaik bagi bisnis Anda.

Scroll to top