web-dev-qa-db-ja.com

MacOS仮想Webカメラは10.14の強化されたランタイムライブラリ検証と本質的に互換性がありませんか?

最初の観察

Zoom for Mac 4.6.9 、これは 怖いセキュリティ上の欠陥 に対処し、 disable-library-validation 資格を削除します。

同じリリースの仮想WebカメラアプリであるSnap Camera stopped working

研究

仮想ウェブカメラの構築に使用する特定のAPIについてはよく知りませんが、CoreMediaIOプラグインが含まれているようです。

OS X用の仮想Webカメラデバイスの作成

> otool -L /Library/CoreMediaIO/Plug-Ins/DAL/SnapCamera.plugin/Contents/MacOS/SnapCamera
/Library/CoreMediaIO/Plug-Ins/DAL/SnapCamera.plugin/Contents/MacOS/SnapCamera:
    libSnapCamera.dylib (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1452.23.0)
    /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo (compatibility version 1.2.0, current version 1.5.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1452.23.0)
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
    /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 400.9.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.50.4)

好奇心から、他のいくつかの仮想Webカメラ- Iriun Webcam および EpocCam -を試しましたが、それらは同様に動作します。どちらにもCoreMediaIOプラグインがあり、どちらも最近のズームでは機能しません。

3つの仮想カメラはすべて、Microsoft Teamsで機能します。

> codesign -d --entitlements :- /Applications/Microsoft\ Teams.app/ |grep valid
Executable=/Applications/Microsoft Teams.app/Contents/MacOS/Teams
    <key>com.Apple.security.cs.disable-library-validation</key>

これらはGoogleでも機能しますChrome(on this test page )。Chromeのヘルパーの少なくとも1人に次の資格があるようです:

codesign -d --entitlements :- /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Versions/81.0.4044.92/Helpers/Google\ Chrome\ Helper\ \(Plugin\).app
Executable=/Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/81.0.4044.92/Helpers/Google Chrome Helper (Plugin).app/Contents/MacOS/Google Chrome Helper (Plugin)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.Apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.Apple.security.cs.disable-library-validation</key>
    <true/>
</dict>
</plist>

また、プラグインがアクティビティモニターのオープンファイルとポートに表示され、チームとChromeに属するいくつかのプロセスに対応していることにも気付きました。 (/Library/CoreMediaIO/Plug-Ins/DAL/SnapCamera.plugin/Contents/MacOS/SnapCamera

質問

CoreMedia Virtual Webcamプラグインはどのように機能し、ライブラリ検証と本質的に競合しますか? (たとえば、許可されなくなった方法でカメラを使用するプロセスにライブラリをロードする)

Hardened Runtimeを実行せずにMacOSで仮想Webカメラを作成することはできなくなりましたか?


更新4/19:4.6.10のズームの changelog「ズームは一時的に仮想カメラのサポートを削除しました。」と表示されます。彼らがそれを再び有効にするかどうか/どのようにして有効にするかを見てみるのは興味深いでしょう。 (おそらく、資格を必要なときにのみ使用されるヘルパープロセスに制限しますか?)

12
jrr

Catalina 10.15.5のMicrosoft Skype for MacOS(8.61.0.95)でも同じ問題が発生しました

私はに行くことによってこれを修正することができました

_cd /Applications/Skype.app/Contents/Frameworks_

allの署名を削除して、Skypeの.app部分、つまり.

_codesign --remove-signature Skype\ Helper.app_

codesign --remove-signature Skype\ Helper\ \(GPU\).app

codesign --remove-signature Skype\ Helper\ \(Plugin\).app

codesign --remove-signature Skype\ Helper\ \(Renderer\).app

その後、Skypeを再起動します。

設定で、カメラを選択すると、CamTwistとCamTwist(2VUY)が表示されます。

同様の修正がズームでも機能します。

_codesign --remove-signature /Applications/zoom.us.app\_

2