Skip to main content

Application Package Scanning

Scan macOS, iOS, Android, Windows, and Linux application packages for security issues.

Quick Start

cyscan app MyApp.app # macOS app bundle
cyscan app MyApp.ipa # iOS TestFlight / App Store build
cyscan app MyApp.apk # Android APK
cyscan app Installer.pkg # macOS installer
cyscan app setup.exe # Windows executable
cyscan app package.deb # Debian package
cyscan app package.rpm # RPM package
cyscan app --format json MyApp.app # JSON output
cyscan app --fail-below 80 MyApp.ipa # CI gate

Supported Formats

FormatPlatformWhat's checked
.appmacOSCode signing, entitlements, sandbox, ATS, Hardened Runtime, notarization, privacy manifest, binary secrets, framework signing, min OS version
.ipaiOSProvisioning profile (dev vs dist), ATS, privacy manifest, min iOS version, binary secrets, embedded frameworks
.pkgmacOSInstaller script analysis, signing, notarization
.apkAndroidDebuggable flag, backup, cleartext traffic, 13 dangerous permissions, signing, DEX secrets, min SDK
.aabAndroidSame as APK (App Bundle)
.exeWindowsBinary secrets, HTTP URLs
.msiWindowsBinary secrets, HTTP URLs
.debLinuxMaintainer script analysis, SUID binaries
.rpmLinuxScriptlet analysis

macOS .app Checks (12+)

CheckSeverityWhat it detects
Code SigningCriticalUnsigned or invalid signature
App SandboxHighMissing sandbox entitlement
Dangerous EntitlementsCritical-Highdisable-library-validation, allow-unsigned-executable-memory, get-task-allow, debugger
App Transport SecurityHighNSAllowsArbitraryLoads = true
URL SchemesMediumRegistration of http/https/file schemes
Hardened RuntimeHighNot enabled
Library ValidationHighDisabled
Framework SigningHighUnsigned embedded frameworks
Binary SecretsCriticalAWS keys, Stripe keys, private keys, OpenAI keys in Mach-O strings
Privacy ManifestHighMissing PrivacyInfo.xcprivacy (required since Spring 2024)
Provisioning ProfileHighDevelopment profile in release build
NotarizationHighNot notarized by Apple
Minimum OS VersionMediumBelow macOS 13 (Ventura)

Android APK Checks

CheckSeverityWhat it detects
DebuggableCriticalandroid:debuggable=true
Backup AllowedHighandroid:allowBackup=true
Cleartext TrafficHighandroid:usesCleartextTraffic=true
Min SDK VersionMediumBelow API 28 (Android 9)
Dangerous PermissionsHigh-CriticalSEND_SMS, READ_SMS, CALL_PHONE, INSTALL_PACKAGES, SYSTEM_ALERT_WINDOW, etc.
APK SigningCriticalInvalid or missing signature
DEX SecretsCriticalAWS keys, Stripe keys, Firebase keys in compiled bytecode

Installer Script Analysis (.pkg / .deb / .rpm)

Installer scripts (preinstall, postinstall, preinst, postinst, etc.) are analyzed for:

PatternSeverityWhy it's dangerous
curl | bashCriticalDownloads and executes arbitrary code at install time
chmod 777HighSets world-writable permissions
Hardcoded passwordsCriticalCredentials in plain text
sudo / elevated privilegesMediumUnnecessary root operations
SUID binaries in packageHighPrivilege escalation vectors

Example Output

App: MyApp (app)
Bundle ID: com.example.myapp
Version: 2.1.0
Frameworks: 5

Security Score: 72/100 [FAIR]
Passed: 8 Failed: 4 Total: 12

[ PASS ] [CRIT] Code Signing
[ FAIL ] [HIGH] App Sandbox
App is NOT sandboxed
[ PASS ] [HIGH] App Transport Security (ATS)
[ FAIL ] [CRIT] Hardcoded secret: AWS Access Key
AWS Access Key found embedded in binary
[ FAIL ] [HIGH] Privacy Manifest (PrivacyInfo.xcprivacy)
MISSING — Apple requires for App Store
[ PASS ] [HIGH] Apple Notarization
...