- Improper platform usage: ask for permissions to use on-device resources (ex: camera, location)
- Secure storage: pub pkg --
flutter_secure_storage, hive, secure_application
- Insecure communication:
http_certificate_pinning, ssl_pinning_plugin
(ssl/tsl cert based) - Insecure authentication:
local_auth
- Insufficient cryptography: only use NIST approved encryption algos
encrypt, crypto
- Insecure authorization
- Client code quality checks - vulnerability/maintainability checks (static and dynamic security checks)
- Code tempering:
flutter_jailbreak_detection
- Reverse engineering: check if IDA Pro & Hopper can de-obfuscate your code; use
--obfuscate
while building a flutter app, also use binary build which are hard to decompile - Extraneous functionality: check logs for info leaks about backend or any silly hard-coding PI data. Use RASP (runtime analysis self-protection)
freerasp
pkg to check against security leaks - Flush in-memory cache frequently
- Small App Window (view which allows to switch between apps): Android:
import android.view.WindowManager.LayoutParams;
getWindow().addFlags(LayoutParams.FLAG_SECURE);
iOS:
- (void)applicationWillResignActive:(UIApplication *)application {
self.window.hidden = YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
self.window.hidden = NO;
}
https://github.com/muellerberndt/android_app_security_checklist