Every upload is checked for known malware
Every plan, guest uploads included
An install link asks testers to trust a file. Most links carry honest test builds, but a sharing service is also a place where someone could pass on a known piece of Android or iOS malware. Checking every upload against what is already known keeps those files away from your testers and keeps the service trustworthy for everyone who shares on it.
So every build uploaded to AppForShare, on every plan and from guests too, is checked for known malware right after the link is issued. The upload is never slowed down. When the check matches, the build is held: the link stays, but it takes no installs until a person at AppForShare releases or removes it.
Example
Shop 3.2.0 (88), Android
- Malware checkChecked for known malware on Nov 9, 2026
- EnginesClamAV and MalwareBazaar
- RecheckDaily with new signatures while under 72 hours old
Made for
- Testers and clients who install builds from people they work with
- Developers who want the service they share on to keep known malware off its links
- Agencies and teams that are asked how a sharing service screens uploads
What it ends
- A sharing link that nobody checks after the upload
- A known malicious APK passed around on the same service as your builds
- Not knowing what happens to a build when a check matches
How it works
Step 1
Upload as usual
From the dashboard, the CLI, CI, the MCP server or without an account. The link is issued at once; there is nothing to turn on.
Step 2
The file is checked
ClamAV opens the .apk or .ipa, which are zip archives, and checks the files inside against its signatures. The file's SHA-256 is looked up at MalwareBazaar by abuse.ch. Only the hash leaves our servers, never the file.
Step 3
A match is held
The install page says "Held for review" and takes no installs. Our staff are alerted, and the account owner gets one email with the signature that matched.
Step 4
A person decides
Staff release the build, so the link works again, or remove it. A removed file cannot be uploaded again.
What is checked
ClamAV, the open source antivirus engine, reads the uploaded package with archive scanning on, so the files inside an .apk or .ipa are checked, not only the outer zip. For an .aab, the APK made from it is checked. ClamAV reads files up to 2 GiB.
MalwareBazaar is a public database of malware samples run by abuse.ch. We send it the SHA-256 hash of the file, and of the original upload when we converted it, and it answers whether that exact file is a known sample. The file itself is never sent.
Live builds under 72 hours old are checked again once a day with the newest signatures, because new malware is added to both every day.
What a hold means
A held build keeps its link, but the install page shows "Held for review" in the tester's language and takes no installs. Channels skip it. The file is kept so staff can look at it, and nothing is deleted automatically.
Staff get an alert at once. The owner of an account build gets one email naming the signature that matched; a guest upload shows the hold on its manage page. If you think it is a mistake, reply to the email or write to [email protected].
A person decides every hold. Released builds work again; a build released after a match is not held again for the same signature. Removed builds stay removed, and the same file cannot be uploaded again.
Where you see it
The build page shows the date of the last check. The CI API carries malwareScan with a status (pending, clean, flagged, error or skipped) and the time of the check on every build, appforshare info prints it, and the MCP tools list_builds and build_info return it to your AI coding assistant.
A malware check and a security scan are different jobs
The malware check looks for files that are already known to be malicious. It protects testers and the service. The Security scan reads your own build for mistakes, such as a key left in the code or a risky setting, and tells you how to fix them. AppForShare runs both on every upload; the Security scan findings are on Pro and Team.
Good to know
- It finds malware that is already known: a ClamAV signature or a MalwareBazaar sample. Most known mobile malware targets Android, so there are fewer signatures for iOS apps.
- Files over 2 GiB get the hash lookup only.
- If a check cannot run, the build stays live and the check runs again within a day.
Questions
- Which plans include it?
- Every plan, and uploads without an account too. It is part of the platform, not a paid extra.
- Is my file sent to anyone?
- No. ClamAV runs on our servers. Only the file's SHA-256 hash is sent to MalwareBazaar to ask whether it is a known sample.
- Does it slow my upload down?
- No. The link is issued first and the check runs right after. A build is held only if it matches.
- What if my build is held by mistake?
- Reply to the email or write to [email protected]. A person reviews every hold and releases the build when the match is wrong.
- Can I see the result?
- Yes: the build page, the CI API field malwareScan, appforshare info and the MCP tools list_builds and build_info.
Read next
Try it on your own app
Free account in a minute. Pro starts with a 7 day free trial.
More features
- Builds on GitHub Actions
- Flutter builds on GitHub Actions
- Flutter facts and checks
- Security scan on every build
- Connect Expo (EAS builds)
- Connect Codemagic
- Send store builds to TestFlight and Google Play
- TestFlight groups and beta review on send
- TestFlight feedback in your inbox
- iOS device registration
- Hands free device setup
- Store listing editor
- App Store submission
- Google Play releases
- TestFlight tester sync
- Tester app with notifications
- Tester groups and status
- Join links for testers
- Beta and Live channels
- Build history page
- Tasks and activity feed
- Feedback to Linear and Jira
- Release checklist, approvals and blockers
- Release page per version
- Install link controls
- Several links per build
- Retire a test build
- TestFlight and APK in one link
- Install page in 13 languages
- In-app update check
- .aab uploads
- MCP server for AI tools
- Tester feedback with screenshots
- In-app feedback link
- AI test plan for each build
- Diawi compatible upload API
- Remember my iPhone
- Install help and why it failed
- Email the install link
- Custom channel address
- Verified publisher
- Daily install email
- Zipped .app upload
- Manage link for guest uploads
- Test accounts on the install page
- Telegram notifications
- Permissions in plain words
- Reply to testers and star ratings
- Follow a channel by email
- Download button for a README
- Store pages
- Check a build before upload
- Token scopes and CLI tools
- Upload from Claude or ChatGPT
- Passkeys and email code sign in
- Free build tools
- How reports work