СпонсорУвійтиПодати
Блог

macOS 27.2.1 більше не довіряє eMudhra в curl. Що я б перевірив у своєму застосунку для Mac

Від Justinas Rolando, розробника MacPip

Коротка відповідь

9 листопада 2026 р.: Apple випустила macOS 27.2.1, а також 26.7.3 і 15.8.3 для старіших Mac. Окрім восьми виправлень безпеки, вони закривають прогалину після компрометації сертифікатів eMudhra: з 19 жовтня Safari, Mail і застосунки на мережевих фреймворках та фреймворках безпеки Apple уже відмовлялися приймати погані сертифікати (їх кількість: 12), але інструменти командного рядка на кшталт curl, git, python3 і openssl читали /etc/ssl/cert.pem і далі їх приймали. Оновлення прибирають із цього файлу п'ять кореневих сертифікатів, зокрема AAA Certificate Services. Якщо ваш застосунок, інсталятор чи скрипт оновлення використовують ці інструменти або постачають власний список довірених кореневих сертифікатів, перевірте свої завантаження та власні сервери на нових версіях.

Більшість оновлень Mac я встановлюю і забуваю. А macOS 27.2.1, що вийшла 9 листопада, я б прочитав уважно, якби робив застосунок для Mac: вона змінює, яким сертифікатам довіряють деякі інструменти на кожному Mac. Apple випустила її разом із macOS Tahoe 26.7.3 і Sequoia 15.8.3 для старіших Mac, і в усіх трьох та сама зміна.

Ось що сталося, кого це стосується і що я б перевірив.

Що сталося

Ті самі оновлення виправляють ще вісім помилок безпеки в Messages, AirPlay і Bluetooth, за даними MacRumors. Apple не повідомляла, що якусь із них використовували в атаках.

Чому розробнику застосунків для Mac це важливо

Якщо ваш застосунок звичайний застосунок на Swift і виходить в інтернет через URLSession, то, найімовірніше, його було захищено ще в жовтні. На сторінці Apple йдеться про застосунки, що використовують її мережеві фреймворки та фреймворки безпеки, а Howard Oakley, якого цитує Michael Tsai, каже, що застосунки на стандартних API Apple використовують сховище довіри macOS.

Не захищеними виявилися застосунки того типу, який випускають багато незалежних авторів:

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

Є й другий бік. AAA Certificate Services це старий кореневий сертифікат Sectigo, яким підписано чимало звичайних сертифікатів. Apple попереджає, що інструменти, які використовують лише /etc/ssl/cert.pem, можуть не перевірити деякі сайти, чиї ланцюжки проходять через видалені кореневі сертифікати. Якщо ваш сервер завантажень, стрічка оновлень чи API ліцензій опинилися серед них, curl на оновленому Mac може почати їх відхиляти.

Що б я перевірив цього тижня

Це мої власні кроки, а не Apple.

  1. Оновіть один Mac до 27.2.1 і перевірте завантаження з командного рядка. Запустіть свій інсталяційний скрипт, brew install, якщо у вас є cask, і curl -I для адрес завантаження, appcast і ліцензій. Відмова прийняти сертифікат проявиться як помилка, а не як повільна сторінка.
  2. Погляньте на ланцюжок сертифікатів свого сайту. Виконайте openssl s_client -connect yourapp.com:443 -showcerts і прочитайте рядки issuer. Якщо бачите eMudhra, emSign або AAA Certificate Services, попросіть хостинг чи продавця сертифікатів видати ланцюжок, що закінчується іншим кореневим сертифікатом.
  3. З'ясуйте, яким сховищем довіри ваш застосунок користується насправді. Electron, Go, Rust із вбудованими кореневими сертифікатами, Python із certifi та Java приносять власні. Оновіть середовище виконання або пакет кореневих сертифікатів до версії, де погані сертифікати прибрано, і зазначте це в нотатках до випуску.
  4. Підготуйте відповідь для підтримки. Якщо хтось зі старим Mac не може встановити оновлення, на сторінці Apple є кроки для ручного видалення кореневих сертифікатів. Я б дав посилання на сторінку Apple, а не вставляв у листа команди із sudo.
  5. Попросіть людей оновитися. Якщо ваші користувачі здебільшого технічні, коротка нотатка в наступному випуску чи розсилці нічого не коштує.
  6. Перевірте файл на тестовому Mac. На сторінці Apple є команда нижче, яка нічого не виводить, коли два головні кореневі сертифікати видалено.
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

Чого б я не робив

Я б не вимикав перевірку сертифікатів у скрипті, щоб помилка зникла. Саме від цього й захищає вся ця зміна. І я б не казав користувачам, що їхній Mac зламали. Ознак того, що ключі використовувалися, немає, а більшість застосунків були захищені ще в жовтні.

Погляд MacPip

MacPip не перевіряє, яким сертифікатам довіряє застосунок. Картки скануються автоматично під час подання, а синя галочка означає лише те, що людина спробувала застосунок у певну дату. Якщо ви робите інструмент для розробників або застосунок із безпеки та конфіденційності, у вас найбільше шансів мати скрипт чи вбудоване середовище виконання, яких це стосується, тож година на перевірку не пропаде.

Нове сьогодні: перевірка маніфесту конфіденційності. Вставте свій PrivacyInfo.xcprivacy, і вона звірить кожен тип даних, мету та код обов'язкової причини, наприклад CA92.1, зі списками самої Apple. Вона також каже, чого Apple вимагає на Mac, а чого ні. Усе працює на сторінці, нічого не надсилається. Поруч розбір Info.plist і розбір нотаризації. А якщо вашого застосунку для Mac ще немає на MacPip, додати його можна безкоштовно.

Джерела

Читайте далі

Подайте свій застосунокБезкоштовні інструменти для розробників