SponsorZaloguj sięZgłoś
Blog

macOS 27.2.1 sprawia, że curl przestaje ufać eMudhra. Co warto sprawdzić w swojej aplikacji na komputery Mac

Przez Justinasa Rolando, twórcę MacPip

Krótka odpowiedź

W dniu 9 listopada 2026 Apple wydał macOS 27.2.1, a dla starszych komputerów Mac wersje 26.7.3 i 15.8.3. Oprócz ośmiu poprawek zabezpieczeń zamykają one lukę po kompromitacji certyfikatów eMudhra: od 19 października Safari, Mail i aplikacje korzystające z frameworków sieciowych i bezpieczeństwa Apple odrzucały już złe certyfikaty (liczba: 12), ale narzędzia wiersza poleceń, takie jak curl, git, python3 i openssl, czytały /etc/ssl/cert.pem i nadal je akceptowały. Aktualizacje usuwają z tego pliku pięć certyfikatów głównych, w tym AAA Certificate Services. Jeśli twoja aplikacja, instalator lub skrypt aktualizacji używa tych narzędzi albo dostarcza własną listę zaufanych certyfikatów głównych, przetestuj pobieranie i własne serwery na nowych wersjach.

Większość aktualizacji komputera Mac instaluję i zapominam. Ale macOS 27.2.1, wydany 9 listopada, warto przeczytać dokładnie, jeśli tworzysz aplikację na komputery Mac, bo zmienia, którym certyfikatom ufają niektóre narzędzia na każdym komputerze Mac. Apple wydał go razem z macOS Tahoe 26.7.3 i Sequoia 15.8.3 dla starszych komputerów Mac i wszystkie trzy mają tę samą zmianę.

Oto, co się stało, kogo to dotyczy i co warto przetestować.

Co się stało

Te same aktualizacje naprawiają osiem innych błędów zabezpieczeń w Wiadomościach, AirPlay i Bluetooth, według MacRumors. Apple nie podał, by któryś był wykorzystywany w atakach.

Dlaczego twórcę aplikacji na komputery Mac to powinno obchodzić

Jeśli twoja aplikacja to zwykła aplikacja napisana w Swift, która łączy się z internetem przez URLSession, najpewniej objęła ją październikowa poprawka. Strona Apple mówi o aplikacjach używających jej frameworków sieciowych i bezpieczeństwa, a Howard Oakley, cytowany przez Michaela Tsaia, mówi, że aplikacje oparte na standardowych API Apple używają magazynu zaufania macOS.

Nieobjęte aplikacje to te, które wydaje wielu niezależnych twórców:

Dlatego październikowa poprawka mogła nie dotrzeć do twojej aplikacji, a listopadowa też może nie, jeśli aplikacja ma własne certyfikaty główne.

Jest też druga strona. AAA Certificate Services to stary certyfikat główny Sectigo, którym podpisano mnóstwo zwykłych certyfikatów. Strona Apple ostrzega, że narzędzia używające tylko /etc/ssl/cert.pem mogą nie zweryfikować niektórych stron, których łańcuchy prowadzą przez usunięte certyfikaty główne. Jeśli twój serwer pobierania, kanał aktualizacji lub API licencji akurat do nich należy, curl na zaktualizowanym komputerze Mac może zacząć go odrzucać.

Co bym sprawdził w tym tygodniu

To moje własne kroki, nie Apple.

  1. Zaktualizuj jeden komputer Mac do 27.2.1 i przetestuj pobieranie z wiersza poleceń. Uruchom swój skrypt instalacyjny, brew install, jeśli masz cask, oraz curl -I na adresy pobierania, appcastu i licencji. Odrzucony certyfikat pojawia się jako błąd, a nie jako wolna strona.
  2. Przyjrzyj się własnemu łańcuchowi certyfikatów. Uruchom openssl s_client -connect yourapp.com:443 -showcerts i przeczytaj wiersze z wystawcą (issuer). Jeśli zobaczysz eMudhra, emSign lub AAA Certificate Services, poproś swojego dostawcę hostingu lub sprzedawcę certyfikatów o łańcuch kończący się na innym certyfikacie głównym.
  3. Ustal, z jakiego magazynu zaufania naprawdę korzysta twoja aplikacja. Electron, Go, Rust z wbudowanymi certyfikatami głównymi, Python z certifi i Java mają własne. Zaktualizuj środowisko uruchomieniowe lub pakiet z certyfikatami do wersji, która usuwa złe certyfikaty, i wspomnij o tym w informacjach o wydaniu.
  4. Przygotuj odpowiedź dla wsparcia. Jeśli ktoś na starszym komputerze Mac nie może zainstalować aktualizacji, strona Apple ma kroki ręcznego usunięcia certyfikatów głównych. Lepiej podać link do strony Apple, niż wklejać do e-maila polecenia z sudo.
  5. Powiedz ludziom, żeby zaktualizowali. Jeśli użytkownicy twojej aplikacji są raczej techniczni, krótka notatka w następnym wydaniu lub newsletterze nic nie kosztuje.
  6. Sprawdź plik na testowym Macu. Strona Apple podaje poniższe polecenie, które nic nie wypisuje, gdy dwa kluczowe certyfikaty główne zostały usunięte.
openssl crl2pkcs7 -nocrl -certfile /etc/ssl/cert.pem | openssl pkcs7 -print_certs -noout | grep -E 'emSign ECC Root CA - G3|AAA Certificate Services'

Czego bym nie robił

Nie warto wyłączać sprawdzania certyfikatów w skrypcie, żeby pozbyć się błędu. To właśnie przed tym chroni cała ta zmiana. Nie warto też mówić użytkownikom, że ich komputer Mac został zhakowany. Nic nie wskazuje, że klucze użyto, a większość aplikacji była chroniona już w październiku.

Perspektywa MacPip

MacPip nie sprawdza, którym certyfikatom ufa aplikacja. Wpisy są skanowane automatycznie po zgłoszeniu, a niebieski ptaszek oznacza tylko, że osoba wypróbowała aplikację w danym dniu. Jeśli tworzysz narzędzie dla deweloperów lub aplikację do bezpieczeństwa i prywatności, to właśnie ty najpewniej masz skrypt lub dołączone środowisko, którego to dotyczy, więc warto poświęcić godzinę.

Nowość na dziś: weryfikator manifestu prywatności. Wklej swój PrivacyInfo.xcprivacy, a sprawdzi każdy typ danych, cel i wymagany kod powodu, taki jak CA92.1, na podstawie list Apple. Mówi też, czego Apple oczekuje na komputerze Mac, a czego nie. Działa na stronie i nic nie jest wysyłane. Objaśnienie Info.plist i objaśnienie notaryzacji są obok. A jeśli twojej aplikacji na komputery Mac nie ma jeszcze w MacPip, dodanie jej jest bezpłatne.

Źródła

Czytaj dalej

Zgłoś twoją aplikacjęDarmowe narzędzia dla twórców