Являются ли виртуальные веб-камеры MacOS несовместимыми с проверенной проверкой библиотеки времени выполнения 10.14? - PullRequest
5 голосов
/ 09 апреля 2020

Начальное наблюдение

Увеличение для Ма c 4.6.9 , которое обращается страшная безопасность fl aws, удаляет библиотеку отключения -валификация права.

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

Исследования

I ' Я не знаком с конкретными 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, которые имеют право:

> 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 в Открытых файлах и портах для пара процессов, принадлежащих командам и Chrome. (/Library/CoreMediaIO/Plug-Ins/DAL/SnapCamera.plugin/Contents/MacOS/SnapCamera)

Вопрос

Как работают подключаемые модули виртуальной веб-камеры CoreMedia, и они по своей природе конфликтуют с проверкой библиотеки? (например, загрузка библиотеки в процесс использования камеры способом, который больше не разрешен)

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


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

...