Documentation

Go to Portal Website

System Sharing Suppression

PlanPlatformsMASVS
TeamiOSMASVS-STORAGE-2, MASVS-PLATFORM-1

Overview

System Sharing Suppression prevents high-risk data exfiltration activities from being accessible in the iOS share sheet, document interaction menus, and print dialogs for views marked as sensitive. When enabled, the SDK automatically suppresses risky sharing activities (AirDrop, Print, Save to Camera Roll, Copy to Clipboard, Mail, Messages, and Assign to Contact) from any share UI presented within sensitive view controllers.

This control is essential for applications handling confidential data where users should be able to share some content (e.g., via approved channels) but must not be able to exfiltrate sensitive screens via system-level sharing mechanisms.

How It Works

The control operates on an opt-in basis: only view controllers explicitly marked as sensitive are protected. Non-sensitive views continue to function normally with full system sharing capabilities.

Marking Views Sensitive

Use the MobileDefender API to mark individual view controllers as containing sensitive content:

// Swift
MobileDefenderLibrary.markSensitiveViewController(myViewController)
// Objective-C
[MobileDefenderLibrary markSensitiveViewController:myViewController];

Once marked, any share sheet, document interaction controller, or print dialog presented from that view controller (or its child view controllers) will have high-risk activities automatically suppressed.

Activities Suppressed

When a share sheet (UIActivityViewController) is presented from a sensitive view controller, the following activities are automatically excluded:

ActivitySystem IdentifierRisk
AirDropUIActivityTypeAirDropWireless file transfer to nearby devices
PrintUIActivityTypePrintPhysical or PDF output of content
Save to Camera RollUIActivityTypeSaveToCameraRollSaves content to photo library
CopyUIActivityTypeCopyToPasteboardExposes content to clipboard (cross-app)
MailUIActivityTypeMailAttaches content to email
MessagesUIActivityTypeMessageAttaches content to iMessage/SMS
Assign to ContactUIActivityTypeAssignToContactSaves image as contact photo

These activities are merged with any exclusions your application already specifies. Your app's existing excludedActivityTypes list is preserved.

Additional Protections

Beyond the share sheet, the control also blocks:

Threats Mitigated

Use Cases

Caveats

Opt-In Only

The control does not automatically detect which views are sensitive. You must explicitly mark view controllers using the markSensitiveViewController: API. Unmarked view controllers will have full system sharing capabilities.

Host-Controlled Sharing

This control only affects system-provided sharing UI (UIActivityViewController, UIDocumentInteractionController, UIPrintInteractionController). It does not:

User Experience

Suppressing sharing activities reduces the number of options available in the share sheet. Ensure this aligns with your app's security policy and user expectations. Consider providing in-app messaging explaining why certain sharing options are unavailable for sensitive content.

Child View Controllers

The sensitive tag propagates to child view controllers via parentViewController traversal. If a navigation controller is marked sensitive, all pushed view controllers inherit the protection.

Support Matrix

PlatformMinimum VersionStatus
iOS12.0+✅ Supported
Android❌ Not available

How to Enable the Control

Navigate to Preventative Controls from the AppTego portal, and expand the Data Sharing Protection section. Under this section you will find the System Sharing Suppression control. Click Enable to enable it for the next build or for it to be applied with a live push (if enabled).

API Configuration Example

{
  "SystemSharingPrevention": {
    "protection": true,
    "detection": false
  }
}

Integration Example

Swift

import MobileDefender

class SensitiveViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Mark this view controller as containing sensitive content
        MobileDefenderLibrary.markSensitiveViewController(self)
    }

    @IBAction func shareButtonTapped(_ sender: UIButton) {
        let activityVC = UIActivityViewController(
            activityItems: [sensitiveData],
            applicationActivities: nil
        )

        // High-risk activities automatically excluded by MobileDefender
        // No code changes needed to your share sheet logic
        present(activityVC, animated: true)
    }
}

Objective-C

#import <MobileDefender/MobileDefender.h>

@implementation SensitiveViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // Mark this view controller as containing sensitive content
    [MobileDefenderLibrary markSensitiveViewController:self];
}

- (IBAction)shareButtonTapped:(UIButton *)sender {
    UIActivityViewController *activityVC = [[UIActivityViewController alloc]
        initWithActivityItems:@[self.sensitiveData]
        applicationActivities:nil];

    // High-risk activities automatically excluded by MobileDefender
    [self presentViewController:activityVC animated:YES completion:nil];
}

@end

Telemetry

When a share sheet is suppressed, the SDK logs a system_share_blocked event containing:

This telemetry is sent via MobileDefenderMain.sendLog:data: and can be used for compliance auditing or security monitoring.