Проверьте подпись пакета OSX перед загрузкой - PullRequest
2 голосов
/ 21 июля 2009

Цель: загрузить .so / .bundle, который был проверен на подпись (или проверен по произвольному алгоритму).

Я хочу иметь возможность проверить .so / .bundle либо с помощью встроенных в OSX инструментов двоичной подписи, либо с помощью какого-либо специального алгоритма, а затем загрузить этот .so / .bundle с помощью dlopen ...

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

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

1 Ответ

1 голос
/ 21 июля 2009

Вы можете сохранить сумму sha256 файла * .so или * .dylib в подписи. После того, как вы проверили сертификат, вы можете скопировать * .so или * .dylib в произвольное временное местоположение, а затем убедиться, что скопированный * .so или * .dylib имеет заданную контрольную сумму. Если это так, то вы можете динамически загрузить копию. Может все еще быть небольшое окно возможности перезаписать случайный временный файл, но я думаю, что он будет довольно маленьким. Я полагаю, вы могли бы проверить контрольную сумму после вызова dlopen, но до вызова dlsym. Если контрольная сумма не совпадает, вы можете вызвать dlcose для выгрузки библиотеки без выполнения каких-либо функций в ней.

...