Первоначальное наблюдение
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 временно удалил поддержку виртуальной камеры». Будет интересно посмотреть, смогут ли / как они его снова включить. (возможно, ограничение права на вспомогательный процесс, который используется только при необходимости?)
codesign --remove-signature /Applications/zoom.us.app
отключить проверку библиотеки, и виртуальные камеры снова появятся. (через reddit.com/r/VIDEOENGINEERING/r/VIDEOENGINEERING/ >) - person jrr   schedule 12.05.2020