macos - MacOS 虚拟网络摄像头本质上是否与 10.14 的强化运行时库验证不兼容?

标签 macos security webcam core-media

初步观察

适用于 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 WebcamEpocCam ---他们的行为相似。两者都有 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.appcodesign --remove-signature Skype\ Helper\ \(GPU\).appcodesign --remove-signature Skype\ Helper\ \(Plugin\).appcodesign --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/

相关文章:

javascript - HTML<video> 网络摄像头访问在 Chrome 或 Safari 中不起作用

linux - 使用 Electron 自定义形状的独立 Windows 应用程序

security - nginx - 限制对 https 的直接 URL 访问,但可以从 http 重定向

security - 请求完成时如何验证我的 openid.op_endpoint

Python OpenCV 访问网络摄像头最大分辨率

java - 访问 jar 文件中的外部库 (jmf)

ruby - 在 Mac OS X 上的 Ruby 中检测 64 位 CPU

macos - 如何将 Mac 变成 iBeacon

ios - 在 Metal 中反射着色器统一名称

html - 像google/facebook中的设备身份验证