Как определить расширения, заблокированные гейткипером

В macOS High Sierra, «Системные настройки»> «Безопасность», он говорит: «Некоторое системное программное обеспечение было заблокировано для загрузки. Я вижу там список из трех разработчиков, и я не узнаю их всех. Я предполагаю, что это файлы kext в / L/E или /S/L/E, но как я могу точно определить, какой kext соответствует каждому имени разработчика?Я пытался, grep -rn "Intel Corporation Apps" /System/Library/Extensionsно это не находит.введите описание изображения здесь

РЕДАКТИРОВАТЬ: Добавление к этому вопросу, потому что на него никогда не было полного ответа, и теперь я столкнулся с еще одним упрямым кекстом, который я не могу удалить в Мохаве. Он отображается в разделе «Отключенное программное обеспечение», но не в панели безопасности «Системные настройки».введите описание изображения здесь

Я проверил /L/E и /S/L/E и /Library/StagedExtensions, и единственный результат, который я нашел, находится в/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist

kextutil не может его найти, так где еще я могу искать?:

# kextutil -b cn.com.bwstor.filesystems.enfs
Can't find extension with identifier cn.com.bwstor.filesystems.enfs
Все, пожалуйста, сообщите об этом дефекте (предупреждение «расширение заблокировано» и невозможность найти расширение) в Apple: feedbackassistant.apple.com

Ответы (5)

Я понял. В разделе «Информация о системе» > «Программное обеспечение» > «Отключенное программное обеспечение» отображается список этих расширений с идентификатором их пакета. В моем случае этой информации было достаточно, чтобы понять, что представляет собой приложение, но чтобы найти фактический файл kext, нужно больше копать. Пример:

grep -r "com.aladdin.kext.aksfridge" /Library/Extensionsничего не находит.

grep -r "com.aladdin.kext.aksfridge" /Library/Application Supportнашел это.

Я не уверен, есть ли задокументированный список местоположений, которым разрешено загружать кексты, но вы можете найти идентификатор пакета на всем жестком диске, и он обязательно его найдет.

Очень красивое решение. Мой ответ имеет отличный фон, но не имеет ясности этого ответа. Отличная работа.

Сегодня у меня был подобный опыт. Я подумал, что это может быть полезно для вас.

Вкладка «Системные настройки> Безопасность и конфиденциальность> Общие» показала мне заблокированное системное программное обеспечение. В нем упоминался разработчик Jongwoo Choi, которого я не узнал. Что это за программное обеспечение? Где он установлен? После поиска в Интернете этих заблокированных расширений программного обеспечения они оказались «расширениями ядра» или файлами .kext.

Еще несколько поисков научили меня этому:

  • «Информация о системе > Программное обеспечение > Расширения» показывает все расширения, установленные на вашем компьютере. Дайте ему некоторое время для загрузки, список может быть длинным.
  • Теперь, чтобы найти заблокированное расширение этим разработчиком, я заказал список «Получено от». Если у вас есть имя расширения, вы можете упорядочить его по столбцу «Имя расширения». Большинство расширений получены от Apple, поэтому я думаю, что их можно пропустить. Также могут быть пропущены те, у которых «Загружено» значение «да», поскольку загрузка программного обеспечения заблокирована. Затем я проверил каждый элемент из «Идентифицированный разработчик» или «Не подписан».
  • Теперь вы сможете найти имя разработчика или компании (которое было упомянуто в списке заблокированных программ на вкладке «Системные настройки > Безопасность и конфиденциальность > Общие») в деталях, которые вы получаете для каждого элемента в окне под списком расширений. Проверьте значение «Подписано». Для меня была только одна запись для этого конкретного разработчика.
  • Как только вы его найдете, значение «Местоположение» покажет вам, где находится файл .kext. Значение для «Bundle ID» также может помочь объяснить, о чем идет речь.

Поскольку расширения ядра не были загружены, я решил удалить их.

sudo rm -rf path/to/the/kext/file

Затем я перезагрузился (не уверен, что это необходимо). «Системные настройки> Безопасность и конфиденциальность> Общие» не показывало мне сообщение о заблокированном программном обеспечении. Ура!

Тем не менее, «Системная информация> Программное обеспечение> Отключенное программное обеспечение» по-прежнему показывает мне одну запись об отключенном программном обеспечении. Я узнал заголовок записи из подробной информации в списке расширений ранее. Это тот, который я только что удалил. Для меня это было "F3YNT8UCP3 - net.sf.tuntaposx.tap"

Почему он все еще там, когда я удалил файл .kext? Как упомянул Эллиотт в комментарии выше, кажется, что существует база данных SQLite, которая отслеживает информацию об утверждении установленного программного обеспечения. Удаление файла .kext не удаляет запись из базы данных.

Как удалить запись из базы данных, чтобы удалить ее из списка «Системная информация> Программное обеспечение> Отключенное программное обеспечение», описано здесь, в Stack Overflow . Первая часть записи об отключенном программном обеспечении — это идентификатор команды (в моем случае — F3YNT8UCP3). Этот идентификатор понадобится вам, чтобы указать, какую запись следует удалить из базы данных SQLite.

Таким образом, удаление файла .kext должно удалить предупреждение в «Системные настройки> Безопасность и конфиденциальность> Общие». Удаление элемента из базы данных SQLite должно удалить запись об отключенном программном обеспечении в «Информация о системе> Программное обеспечение> Отключенное программное обеспечение».

Как найти файл kext? Я не вижу Locationстолбца в списке отключенного программного обеспечения.
@Elliott, Locationэто не столбец в списке. Но он доступен на панели сведений ниже, как только вы выберете одну запись в списке. Под списком я подразумеваю список «Об этом Mac> Системный отчет> Программное обеспечение> Расширения».

Добавляя к своему собственному ответу, Эллиотт, вы можете передать этот идентификатор пакета kextutil:

sudo kextutil -b "com.hp.kext.hp-fax-io"

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

file:///Library/StagedExtensions/System/Library/Extensions/hp_fax_io.kext/ is in hash exception list, allowing to load
Kext rejected due to system policy: <OSKext 0x7fe302c19730 [0x7fffa5fc38f0]> { URL = "file:///Library/StagedExtensions/System/Library/Extensions/hp_fax_io.kext/", ID = "com.hp.kext.hp-fax-io" }
Code Signing Failure: not code signed
Warnings:
    Personality CFBundleIdentifier differs from containing kext's (not necessarily a mistake, but rarely done):
        HPF00072 FAX - 2
        HPF00006 FAX - 2
[…]

Также кажется, что вы можете найти все эти расширения в этом каталоге:

$ ls -la /Library/StagedExtensions/System/Library/Extensions
drwxr-xr-x@ - root 14 Feb  2013 hp_fax_io.kext
drwxr-xr-x@ - root 19 Aug  2013 hp_Inkjet1_io_enabler.kext
drwxr-xr-x@ - root 19 Aug  2013 hp_Inkjet9_io_enabler.kext
drwxr-xr-x@ - root 31 Okt  2014 intelhaxm.kext
drwxr-xr-x@ - root 22 Mai  2012 JMicronATA.kext
drwxr-xr-x@ - root 16 Aug  2012 Pen Tablet.kext
drwxr-xr-x@ - root 23 Jul  2016 SiLabsUSBDriver64.kext
drwxr-xr-x@ - root 23 Jul  2016 Wacom Tablet.kext
Это отличная информация, но сегодня у меня есть два kext, перечисленных в Disabled Software, которые не отображаются с kextutil, он говорит, что не может найти расширение с этим идентификатором. Я искал весь диск больше часа, но ничего не нашел.
Догадаться! Эта информация хранится в базе данных SQLite, /private/var/db/SystemPolicyConfigurationи вам необходимо отключить SIP, чтобы изменить ее.

У меня нет полного ответа, но есть удивительные усилия по реверс-инжинирингу и обмену информацией, которые могут дать вам финальную часть или точку опоры, достаточную для создания собственного.

Ричард Первс проделал потрясающую работу, чтобы осветить «kextpocalypse» и сценарии, и у большинства крупных поставщиков MDM есть конкретные примеры того, как отправлять белые списки и работать с этими одобренными пользователями расширениями ядра.

Кроме того, имейте в виду, что поведение не полностью настроено, поскольку Apple совершенствует и меняет его работу в каждом выпуске (в последнее время), поэтому YMMV больше, чем обычно.

Майкл Линн также превосходит все, что я ожидаю от платного консультанта, создающего мощные сценарии и профессионально документирующего их.

Я пришел к этому обсуждению, пытаясь проверить кексы, перенесенные с 10.13 на 10.15, которые не загружались. Кажется, я нашел объяснение и обходной путь.

Кексты были действительны для версии 10.15, но не были установлены в версии 10.15, так как они появились при миграции системы. Я предполагаю, что такая же проблема возникнет при обновлении ОС. (Само собой разумеется, что я глубоко разочарован в Apple за то, что она не предвидела такой возможности.)

Я наткнулся на следующий совет по установке драйверов SATSMART в FAQ на binaryfruit.com , который имеет отношение к этому вопросу:

Как пересобрать расширения ядра macOS/кеш драйверов

Когда macOS загружается — она сохраняет все используемые в настоящее время расширения ядра (драйверы) в кэше для более быстрой загрузки в следующий раз — и если вы перемещаете вещи в «/Library/Extensions/» и «/System/Library/Extensions/» — вы эти изменения не будут отражены до тех пор, пока кэши не будут перестроены. Кроме того, из-за ошибок в некоторых версиях macOS кэш kext устаревает или повреждается, особенно в случае обновления системы. Ручная пересборка kext-кэша может решить многие проблемы с драйверами (расширениями ядра).

Введите в терминал следующие команды: sudo kextcache -i / sudo kextcache -system-caches

Первая команда выводит полный список кекстов, которые не загружались по ряду причин, включая (но не ограничиваясь этим) кексты, отклоненные из-за системной политики, означающей, что разрешение не было предоставлено в разделе «Безопасность и конфиденциальность», а также их местоположения.

По моему опыту, кексы, заблокированные по причинам, отличным от необходимости одобрения пользователем, отображаются здесь, даже если они не отображаются среди отключенного программного обеспечения.

Обращаясь к исходному вопросу OP более конкретно, касающемуся знания того, кто является разработчиком kext, поскольку это может не соответствовать напрямую брендингу программного обеспечения, их можно проанализировать из приложений инспектора пакетов, таких как Pacifist , а затем сравнить с именами kext, выведенными вышеприведенной командой терминала. .

Лично я предпочитаю открывать пакет установщика в Suspicious Package , где разработчик и его 10-символьный буквенно-цифровой идентификатор TeamID легко читаются. Для кекстов, просто ожидающих одобрения пользователя, это, конечно, соответствует TeamID, найденному в Disabled Software, как объяснено в OP выше. Однако это не только удобно для пользователя, но и предоставляет кексты, которые не загружаются по другим причинам.

Как только TeamID станет известен, кекст можно будет безопасно утвердить в разделе «Безопасность и конфиденциальность», когда в следующий раз появится предупреждение о заблокированном кексте (например, при установке другого кекста).

Не все хотят устанавливать новый kext, чтобы одобрить более ранние, и некоторые источники ( например, эта база знаний MIT ) сообщают, что идентификатору команды можно предоставить одобрение kext с помощью команд терминала в режиме восстановления, но я не могу лично проверить, действительно ли это работает в конкретной ОС.

Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, которые помогут другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре .