初步观察
适用于 Mac 的缩放 4.6.9 ,地址 scary security flaws , 删除 disable-library-validation权利。
在同一版本中,Snap Camera,一个虚拟网络摄像头应用程序,stopped working .
研究
我不熟悉您用于构建虚拟网络摄像头的特定 API,但看起来它涉及 CoreMediaIO
插件:
Creating a Virtual Webcam Device for OS X
> 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)
出于好奇,我尝试了其他几个虚拟网络摄像头 -- Iriun Webcam和 EpocCam ---他们的行为相似。两者都有 CoreMediaIO 插件,并且都不适用于最近的 Zoom。
所有三个虚拟摄像头都在 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(在此 test page 上)。看起来至少有一个 Chrome 的助手有权利:
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>
我还注意到该插件出现在 Activity Monitor 的 Open Files and Ports 中,用于属于 Teams 和 Chrome 的几个进程。 (
/Library/CoreMediaIO/Plug-Ins/DAL/SnapCamera.plugin/Contents/MacOS/SnapCamera
)题
CoreMedia 虚拟网络摄像头插件如何工作,它们是否与库验证存在内在冲突? (例如,以不再允许的方式将库加载到相机使用过程中)
是否不再可能在 MacOS 上创建虚拟网络摄像头而不与 Hardened Runtime 冲突?
4/19 更新:Zoom 的 changelog对于 4.6.10 现在说“Zoom 已暂时删除虚拟相机支持。”。看看他们是否/如何重新启用它会很有趣。 (也许限制了仅在需要时使用的辅助进程的权利?)
最佳答案
我在 Catalina 10.15.5 上使用 Microsoft Skype for MacOS (8.61.0.95) 遇到了同样的问题
我能够通过去解决这个问题
cd /Applications/Skype.app/Contents/Frameworks
然后删除 的签名全部 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\
关于macos - MacOS 虚拟网络摄像头本质上是否与 10.14 的强化运行时库验证不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61114738/