11 лет злоумышленники могли пользоваться относительно простым способом распространять вредоносное ПО на macOS, обходя проверки инструментов безопасности, заставляя их считать, что электронную подпись поставила Apple.

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

Где обнаружили пробел в безопасности?

Но специалисты по безопасности обнаружили, что механизм, который использовался в macOS с 2007 года для проверки подписей было просто обойти. В результате этого пользователи могли получить вредоносное ПО, предполагая, что устанавливают программу с подписью от Apple.

Этот метод работал при использовании двоичного формата, также извесного как Fat or Universal file, который содержит несколько файлов, для разных процессоров, которые использовались в компьютерах Mac на протяжении многих лет, таких как i386, x86_64 и PPC. Только первый, так называемый файл Mach-O должен быть подписан Apple.

По меньшей мере восьми сторонним инструментам этого было достаточно, в это число входят: VirusTotal, Google Santa, Facebook OSQuery, Little Snitch Firewall, Yelp, OSXCollector, Db Response от Carbon Black и несколько инструментов Objective-See. Многие программные продукты полагались на один или несколько инструментов из этого списка.

Червь Stuxnet, целью которого была программа обогащения урана в Иране восемь лет назад опирался на цифровые подписи, которые принадлежали законным разработчикам ПО. И большинство таких атак связанно с получением законной подписи для Microsoft Windows, но в случае macOS даже не требуется кражи сертификата.

Меры по исправлению проблемы

Пробел в безопасности обнаружил Джошуа Питтс, старший инженер компании по безопасности Okta, в феврале он связался с Apple и сторонними разработчиками. Он сообщил, что инстурменты, встроенные в macOS стали восприимчивыми к обходу начиная с версии OS X Leopard.

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