Skip to main content

A simple utility for bypassing amfid signature verification

Project description

amfidont

Description

A macOS utility that attaches to amfid with LLDB and bypasses app signature validation for explicitly allowed binaries. Allowed targets are matched by executable path prefix and/or cdhash.

Requirements

  • SIP configuration that allows debugging system processes by either:
    • fully disable SIP
    • disable only debugging restrictions (csrutil enable --without debug)

Installation

xcrun python3 -m pip install -U amfidont

Usage

Usage: amfidont [OPTIONS] COMMAND [ARGS]...

A simple utility for bypassing amfid signature verification

Options:
  --path, -p TEXT      path of executable to allow (can be specified multiple times, merged with ~/.amfidont/paths)
  --cdhash, -c TEXT    cdhash of executable to allow (can be specified multiple times, merged with ~/.amfidont/cdhashes)
  --verbose, -v        enable verbose output
  --allow-all          allow all validations to pass
  --spoof-apple, -S    patch isApple to return true for allowed binaries
  --install-completion Install completion for the current shell.
  --show-completion    Show completion for the current shell, to copy it or customize the installation.
  --help               Show this message and exit.

Commands:
  daemon        Start amfidont in daemon mode.
  add-path      Add an allowed path prefix to persistent configuration.
  remove-path   Remove an allowed path prefix from persistent configuration.
  add-cdhash    Add an allowed cdhash to persistent configuration.
  remove-cdhash Remove an allowed cdhash from persistent configuration.

Example

  1. Add a persistent allowed path:

    sudo amfidont add-path /Users/user/dev/myapp/build/Release/MyApp.app/
    
  2. Start bypass mode (foreground):

    sudo amfidont --verbose
    
  3. (Optional) Start as daemon instead:

    sudo amfidont daemon --verbose
    
  4. (Optional) Spoof allowed binaries as Apple-signed:

    sudo amfidont --spoof-apple --verbose
    

    For example, this can be used to run self-signed arm64e binaries without setting the arm64e_preview_abi boot argument.

  5. Stop foreground mode with Ctrl-C (this detaches amfidont and leaves amfid running).

Inner implementation details

  • amfidont attaches to /usr/libexec/amfid using LLDB.
  • It sets a breakpoint on:
-[AMFIPathValidator_macos validateWithError:]
  • On each breakpoint hit, it inspects validator fields:
    • code path (codePath)
    • cdhash (cdhashAsData)
    • validation state (isValid)
  • If the validator is invalid but the path/cdhash matches configured allow-rules, the return register is patched to success and execution continues.
  • When --spoof-apple is enabled, an additional breakpoint is set on:
-[AMFIPathValidator_macos isApple]

This patches isApple to return true for allowed binaries, making them appear Apple-signed. For example, this allows running self-signed arm64e binaries without the arm64e_preview_abi boot argument.

  • Persistent configuration is stored in:
    • ~/.amfidont/paths
    • ~/.amfidont/cdhashes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amfidont-0.0.3.tar.gz (52.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amfidont-0.0.3-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file amfidont-0.0.3.tar.gz.

File metadata

  • Download URL: amfidont-0.0.3.tar.gz
  • Upload date:
  • Size: 52.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for amfidont-0.0.3.tar.gz
Algorithm Hash digest
SHA256 172da70fb8e78252732eff13d3d3c6f2aff114c76d8999d265b42c99c29a8b4a
MD5 f201893987cdcaaf90fd35e5d5778c0b
BLAKE2b-256 db97ce8b0e3759973ee26f267d2c677117035c3dd944d106e17690e5f1657987

See more details on using hashes here.

Provenance

The following attestation bundles were made for amfidont-0.0.3.tar.gz:

Publisher: python-publish.yml on zqxwce/amfidont

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file amfidont-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: amfidont-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 39.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for amfidont-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4cbd929c49083848210dc8806b22182ff99e7fa42edb5bbe6d832b7246fd3ce7
MD5 6825c1a1bd10a4a583ceb1dc4df8fa82
BLAKE2b-256 2ec2d9f450eb196b5fb50c4917cdb955560f5802d1e4dc57ceeb8499d3281495

See more details on using hashes here.

Provenance

The following attestation bundles were made for amfidont-0.0.3-py3-none-any.whl:

Publisher: python-publish.yml on zqxwce/amfidont

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page