Виртуальные веб-камеры MacOS по своей природе несовместимы с проверкой защищенной библиотеки времени выполнения 10.14?

Первоначальное наблюдение

Zoom для Mac 4.6.9, который устраняет страшные недостатки безопасности, устраняет disable-library-validation.

В том же выпуске Snap Camera, приложение для виртуальной веб-камеры, перестала работать.

Исследовать

Я не знаком с конкретными API-интерфейсами, которые вы используете для создания виртуальной веб-камеры, но похоже, что это включает CoreMediaIO плагины:

Создание устройства виртуальной веб-камеры для 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 (на этой тестовой странице) . Похоже, что по крайней мере один из помощников 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 Virtual Webcam, и противоречат ли они по сути своей проверке библиотеки? (например, загрузка библиотеки в процесс использования камеры способом, который больше не разрешен)

Разве больше невозможно создавать виртуальные веб-камеры на MacOS, не нарушая Hardened Runtime?


Обновление от 19 апреля: журнал изменений от Zoom для 4.6.10 теперь указано «Zoom временно удалил поддержку виртуальной камеры». Будет интересно посмотреть, смогут ли / как они его снова включить. (возможно, ограничение права на вспомогательный процесс, который используется только при необходимости?)


person jrr    schedule 09.04.2020    source источник
comment
очень интересный анализ, я сам изучаю, как зарегистрировать виртуальную камеру в системе, чтобы сделать мое собственное приложение SnapCamera эквивалентом. Но мальчик .. нет документации или примеров НУЛЯ.   -  person omarojo    schedule 17.04.2020
comment
Очевидно, вы можете codesign --remove-signature /Applications/zoom.us.app отключить проверку библиотеки, и виртуальные камеры снова появятся. (через reddit.com/r/VIDEOENGINEERING/r/VIDEOENGINEERING/ >)   -  person jrr    schedule 12.05.2020


Ответы (3)


У меня была такая же проблема с Microsoft Skype для MacOS (8.61.0.95) на Catalina 10.15.5

Я смог исправить это, перейдя в

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\

person Siegfried Loeffler    schedule 18.06.2020

Была такая же проблема с командами и EpocCamHD; три компонента, из которых необходимо удалить подпись кода:

sudo codesign --remove-signature /Applications/Microsoft\ Teams.app

sudo codesign --remove-signature /Applications/Microsoft\ Teams.app/Contents/MacOS/Teams

sudo codesign --remove-signature /Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft\ Teams\ Helper.app
person TatorPitt    schedule 04.08.2020

Чтобы восстановить функциональность виртуальной камеры ecamm.com iGlasses в MS Teams, ранее была удалена только эта подпись кода:

sudo codeign --remove-signature / Applications / Microsoft Teams.app/Contents/Frameworks/Microsoft \ Teams \ Helper.app

согласно: https://support.ecamm.com/en/articles/4343963-virtual-camera-missing-after-microsoft-teams-update.

Но с последней версией (MacOS 10.15.7, MS Teams 1.00.326266) в моем случае я обнаружил, что удаляются еще две подписи кода согласно https://stackoverflow.com/users/14049551/tatorpitt, было необходимо до восстановления функциональности iGlasses:

sudo codeign --remove-signature / Applications / Microsoft \ Teams.app

sudo codeign --remove-signature / Applications / Microsoft \ Teams.app/Contents/MacOS/Teams

person Ben Schmidt    schedule 04.11.2020