OzzTech - Yeni MacOS Güvenlik Açığı ‘Powerdir’

Yeni MacOS Güvenlik Açığı ‘Powerdir’

Yeni macOS güvenlik açığı ''powerdir'' bilgisayarlardaki işletim sisteminin Şeffaflık, İzin ve Denetim (TCC) teknolojisini atlatarak kullanıcının güvenliğine yetkisiz erişim elde etmesine olanak sağlamaktadır. Apple, 13 Aralık 2021'de yayınlanan güvenlik güncellemelerine ek olarak, CVE-2021-30970 olarak tanımlanan bu güvenlik açığını düzeltmek için düzeltme paylaştı. Güvenlik açığından korunmanız için macOS güvenlik güncellemelerini en kısa sürede uygulmanızı öneririz.

macOS TCC Nedir?

TCC yani şeffaflık izin ve denetim teknolojisi Apple tarafından 2012 yılında macOS Mountain Lion'da tanıtılmıştır. Bu teknolojinin temeli macOS kullanıcılarının, aygıtın kamerasına, mikrofonuna, konumuna, hatta takvimine veya iCloud hesabına erişim gibi uygulamalarının gizlilik ayarlarını konfigüre edilmesine yardımcı olmak için tasarlanmıştır. Kısaca TCC, uygulamaların kullanıcıların kişisel bilgilerine önceden bilgisi ve izni dahilinde olmadan erişimini engellemeyi sağlayan bir teknolojidir. (Örnek resim1) Apple TCC'yi korumak adına, yetkisiz kod yürütülmesini önleyen bir özellik geliştirerek TCC'ye erişimi yalnızca tam disk erişimine sahip uygulamalarla kısıtlayan bir policy geliştirdi. Ancak, hedef kullanıcının hem ana dizinini programlı olarak değiştirmenin hem de uygulama isteklerinin onay geçmişini depolayan sahte bir TCC veri tabanı yerleştirilebildiği bir güvenlik açığı tespit edildi. Bu güvenlik açığının, yama uygulanmamış sistemlerde kullanılması durumunda, kötü niyetli kişilerin, kullanıcının korunan hassas kişisel verilerine içeren potansiyel bir saldırı düzenlenmesine izin verebilir. Örneğin, saldırgan cihazda mevcut yüklü uygulamayı ele geçirebilir ve özel konuşmaları kaydetmek için mikrofona erişebilir, kullanıcının ekranında görüntülenen hassas bilgilerin ekran görüntülerini almak veya cihaza kendi kötü amaçlı uygulamasını yükleyebilir.

Daha önceden tespit edilip bildirilen TCC güvenlik açıkları Apple tarafından yamalanmış ve sorunlar düzeltilmiştir.

(Örnek resim1) Kullanıcı bunu genellikle macOS'te Sistem Tercihleri ​​altında yönetir. (Sistem Tercihleri ​​> Güvenlik ve Gizlilik > Gizlilik):

macOS güvenlik açığı
  • TCC, uygulama istekleri için izin geçmişini içeren veri tabanını saklar. Genel olarak, bir uygulama şifreli kullanıcı verilerine erişim istediğinde iki sebebi olabilir:
  1. Uygulamanın ve istek türünün TCC veri tabanında kaydı varsa veritabanı girişindeki flag, izin verilip verilmeyeceğini, isteğe otomatik olarak ve herhangi bir kullanıcı etkileşimi olmadan belirler.
  2. Uygulamanın ve istek türünün TCC veri tabanlarında kaydı yoksa, kullanıcıya bir bilgi istemi sunulur ve kullanıcıya erişim izni verilip verilmeyeceğine karar verilir.
  • TCC teknolojisinde iki tür veri tabanı bulunur. Her biri, istek türlerinin yalnızca bir alt kümesini korur:
  1. Kullanıcıya özel veritabanı: Sadece belirli kullanıcı profili için geçerli depolanmış izin türlerini bulundurur. ~/Library/Application Support/com.apple.TCC/TCC.db içine kaydedilir ve sadece profili bulunan kullanıcı erişimi vardır.
  2. Sistem düzeyinde veritabanı: sistem düzeyinde geçerli olan depolanmış izinlerdir. /Library/Application Support/com.apple.TCC/TCC.db içine kaydedilir. Rootu olan veya tam disk erişimi olan kullanıcılar tarafından erişilebilir.

macOS, tccd adlı özel bir arka plan programı (daemon) kullanarak TCC teknolojisini uygular. En az iki türde tccd örneği bulunur bunlar, kullanıcı tarafından ve root tarafından çalıştırılır.

Her bir istek türü kTCCService ön ekiyle başlamaktadır. Aşağıda bazı örnekler verilmiştir:

İstek TürüAçıklamaHandled by
kTCCServiceLiverpoolLocation services accessUser-specific TCC database
kTCCServiceUbiquityiCloud accessUser-specific TCC database
kTCCServiceSystemPolicyDesktopFolderDesktop folder accessUser-specific TCC database
kTCCServiceCalendarCalendar accessUser-specific TCC database
kTCCServiceRemindersAccess to remindersUser-specific TCC database
kTCCServiceMicrophoneMicrophone accessUser-specific TCC database
kTCCServiceCameraCamera accessUser-specific TCC database
kTCCServiceSystemPolicyAllFilesFull disk access capabilitiesSystem-wide TCC database
kTCCServiceScreenCaptureScreen capture capabilitiesSystem-wide TCC database
TCC.db dosyası aslında bir SQLITE veri tabanı olduğunu unutmayın. Bu yüzden eğer bir kullanıcıya tam disk erişim izni verilirse veri tabanını görüntüleyebilir ve düzenleyebilir.
macOS güvenlik açığı

Veri tabanı sütunları kendiliğinden açıklayıcıdır. csreq değerleri, uygulama için kod imzalama gereksinimlerini kodlayan bir on altılı sayı sisteminde kodlanmış blob içerir. Bu değerler codesign ve csreq programları ile hesaplanabilmektedir.

Eğer kötü niyetli bir aktör TCC veri tabanlarına tam disk erişimi elde ederse, kendi kötü niyetli uygulamalarını yükleyebilir ya da istedikleri uygulamalara keyfi izin verebilmek için düzenleyebilirler. Saldırgandan etkilenen kullanıcının uygulamalarda izin vermesi veya reddetmesi istenmez, böylece uygulamanın bilmedikleri veya izin vermedikleri konfigürasyonlarda çalışmasına izin verilir.

macOS Güvenlik Açığı - TCC güvenliğini sağlama

Bu teknolojiden önce uygulamalar, içeriklerini görüntülemek veya değiştirmek için doğrudan TCC veritabanlarına erişim sağlayabiliyordu. Bu bypass riski göz önüne alınarak, Apple iki değişiklik gerçekleştirdi:

  • İlk değişiklik Apple, yetkisiz kod yürütülmesine engelleyen bir macOS'a ait bir özellik olan Sistem Bütünlüğü Koruması (SIP) aracılığıyla sistem genelinde TCC.db'ye koruma sağladı.
  • İkincisi, Apple, yalnızca tam disk erişimine sahip uygulamaların TCC.db dosyalarına erişebileceği bir TCC policy geliştirdi. Bununla birlikte, Örneğin, SSH arka plan programı, sshd uygulamaların düzgün çalışması için bu tür erişime ihtiyaç duydukları için bu policynin kötüye kullanılma ihtimali olduğunu unutmayın.

Saldırganlar /Library/Application Support/com.apple.TCC içindeki dosyaları inceleyerek bir kullanıcının Terminalinin tam disk erişimi olup olmadığını öğrenebilir. Başarılı bir saldırı girişiminde, Terminal'in tam disk erişim yetenekleri bulunduğu ve bu yüzden bir saldırganın kullanıcının TCC.db'sini serbestçe değiştirebilmektedir.

Ek olarak, TCC baypası ile ilgili daha önce bildirilen birkaç güvenlik açığı bulunmaktadır. Bunlar:

  1. Time Machine bağlantıları (CVE-2020-9771): macOS, Time Machine adlı yerel bir yedekleme ve geri yükleme çözümü sağlar. Time Machine yedeklemelerinin (apfs_mount yardımcı programı kullanılarak) "noowners" flaglenmesiyle yüklenebildiği tespit edildi. Bu yedeklemeler TCC.db dosyalarını içerdiği için, bir saldırgan bu yedekleri bağlayabilir ve tam disk erişimi olmadan cihazın TCC policysini belirleyebilir.
  2. Ortam değişkeni zehirlenmesi (CVE-2020-9934): Kullanıcının tccd'sinin $HOME/Library/Application Support/com.apple.TCC/TCC.db'yi genişleterek TCC.db dosyasına giden yolu oluşturabileceği keşfedildi. Kullanıcı $HOME ortam değişkenini değiştirebildiği için saldırgan seçtiği TCC.db dosyasını rastgele bir yola yerleştirebilir, $HOME ortam değişkenini poisingleyebilir ve bunun yerine TCC.db'nin bu dosyayı bitirmesini sağlayabilir.
  3. Paket sonuç sorunu (CVE-2021-30713): Bu hatada uygulama kodlarını hedef uygulamanın paketine yerleştirebilir ve TCC özelliklerini "devralabilir".

Ana dizini değiştirme: macOS 'powerdir' güvenlik açığı:

CVE-2020-9934 ($HOME ortam değişkeni zehirlenme güvenlik açığı) içindi. Düzeltme, tccd'deki _db_open işlevinde görülebilir:

macOS güvenlik açığı

$HOME ortam değişkenini genişletmek yerine, Apple'ın geçerli kullanıcıda getpwuid()'i çağırmaya karar verdiğini not ettik (getuid() ile alındı). İlk olarak, getpwuid işlevi, verilen kullanıcı hakkında bilgi içeren bellekteki bir yapıyı (struct password*) alır. Ardından, tccd pwdir üyesini ondan çıkarır. Bu pwdir üyesi, kullanıcının ana dizinini içerir ve değeri, $HOME ortam değişkeni değiştirildikten sonra bile devam eder.

macOS Powerdir güvenlik açığı Çözüm

Ortam değişkeni zehirlenmesinden kaynaklanan bir saldırıyı gerçekten engellerken, temel soruna karşı koruma sağlamaz.

POC exploit:

Sahte bir TCC.db dosyası yerleştirin ve directory hizmetleri komut satırı yardımcı programını (dscl) kullanarak ana dizini değiştirin:

Root erişimi gerektirirken, bunun yalnızca uygulamaya yerel veya kullanıcıya özel TCC.db'nin sürdürdüğü TCC policysi kTCCServiceSystemPolicySysAdminFiles verildiği zaman işe yaramaktadır. Bu, tam disk erişimine sahip olmak gibi güçlü değildir ancak dsexport ve dsimport yardımcı programları ile bu sınırlamalar atlanabilir.

Bu nedenle, ilk POC exploiti ile:

  1. Hedef uygulama için bir csreq blobu alın.
  2. Gerekli erişim ve csreq blobu ile sahte bir TCC.db dosyası yerleştirin.
  3. Kullanıcının Diretory dizinini değiştirmek için Directory Hizmetleri girişini değiştirin.
  4. Değiştirilen Directory Hizmetleri girişini dsimport ile içe aktarın.
  5. Kullanıcının tccd'sini durdurun ve işlemi tekrar başlatın.

  1. Saldırgan, powerdir açığı ile rastgele bir uygulamadaki ayarları değiştirebilir. Saldırganların Teams gibi herhangi bir uygulamada mikrofon ve kamera erişimini etkinleştirmesine nasıl izin verdikleri aşağıda gösterilmiştir:
macOS güvenlik açığı

Monterey sürümü ve ikinci POC exploidi

macOS Monterey'i incelerken, yerel sistemin birçok yapılandırma yönünden sorumlu bir Sistem Konfigürasyonu arka plan programı olan ve söz konusu en son macOS sürümüyle birlikte gönderilen bir Apple ikili dosyası /usr/libexec/configd bulunmaktadır. Kullanılan configd'nin üç yönü vardır:

  • kTCCServiceSystemPolicySysAdminFiles değerine sahip “com.apple.private.tcc.allow” isimli Apple imzalı bir ikili dosyadır. Bu da ana dizini sessizce değiştirebileceği anlamına gelmektedir.
  • macOS Paketleri bulunan konfigürasyon aracıları genişletilebilir özelliği bulunmaktadır. Yani bu özel Paket yüklenebileceğini ve bu sayede kod enjekte edebileceği anlamına gelir.
  • Özel konfigürasyon aracılarını yüklemek için güçlendirilmiş runtime flagı bulunmamaktadır. Bu özellik, tamamen imzasız kod yükleyebileceğimiz anlamına gelmektedir.

Saldırgan configd'yi -t seçeneğiyle çalıştırırsa, yüklenecek özel Paketi belirleyebilir. Bundan dolayı, yeni POC expolidi ile, kullanıcının ana dizinini bir configd kod enjeksiyonu ile değiştirmeye yönelik dsexport ve dsimport yöntemini değiştirir. Örneğin Teams gibi herhangi bir uygulamanın ayarların değiştirilmesinin, diğer hizmetlerin yanı sıra kameraya erişimini sağlayan ilk POC exploidi ile aynı sonucu yaratır.


İlginizi Çekebilecek Makaleler
FortiGate ACME Sertifika Desteği
Siber Güvenlik

FortiGate ACME Sertifika Desteği

Ocak 24, 2022 1:22

Otomatik Sertifika Yönetim Ortamı (ACME), RFC 8555’te tanımlandığı üzere, ücretsiz SSL sunucu sertifikaları sağlamak için genel Let’s...

Android Reverse Mühendisliği Araçları Örnek Vakalar
Siber Güvenlik

Android Reverse Mühendisliği Araçları Örnek Vakalar

Ocak 24, 2022 12:39

Bir önceki yazıda yeni çıkan android reverse mühendisliği araçları hakkında bilgi vermiştim. Bu yazımda...

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor
Siber Güvenlik

Emotet Artık Alışılmadık IP Adreslerini Kullanıyor

Ocak 24, 2022 9:44

Emotet kötü amaçlı yazılım botnetinin dağıtımını içeren sosyal mühendislik kampanyaları, güvenlik çözümlerinin tespitinden kaçınmak...

FortiWeb Kurulumu 5-Operation Modu
Siber Güvenlik

FortiWeb Kurulumu 5-Operation Modu

Ocak 24, 2022 7:49

FortiWeb kurulumunu anlattığımız beşinci yazımızda operation modu ve FortiWeb cihazı açıldıktan sonra, FortiWeb cihazını...

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme
Siber Güvenlik

FortiWeb Kurulumu 4- Admin Şifresi Değiştirme

Ocak 23, 2022 10:21

FortiWeb kurulumunu anlattığımız serinin dördüncü yazısında Admin şifresi nasıl değiştirceğinizi, saat ve günü nasıl...

Metasploittable 2
Siber Güvenlik

Metasploittable 2

Ocak 22, 2022 11:57

Metasploittable 2 Nedir? Neden Kullanılır? Nasıl Kurulur? Metasploittable 2 Metasploit firması tarafından bizlerin güvenli...

FortiWeb Kurulumu 3- Firmware Güncellenmesi
Siber Güvenlik

FortiWeb Kurulumu 3- Firmware Güncellenmesi

Ocak 22, 2022 11:56

FortiWeb kurulumunu anlattığımız serinin üçüncü yazısında Firmware güncellemesini anlatacağız. FortiWeb cihazınız gönderildiğinde en son...

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama
Siber Güvenlik

FortiWeb Kurulumu 2- Web UI ve CLI Bağlama

Ocak 21, 2022 7:50

FortiWeb kurulumu yazımızın ikinci serisinde Web UI veya CLI bağlamanın nasıl yapılacağını anlatacağız. Eğer...

Yapay Zeka Nedir?
Yazılım Geliştirme

Yapay Zeka Nedir?

Ocak 20, 2022 10:57

Sürekli olarak değişen, gelişen ve oldukça hızlı bir şekilde boyut atlayan, günümüze kadar gelen...

İletişim
OZZTECH Bilgi Teknolojileri olarak siber güvenlik danışmanlığı ve bilgi güvenliği eğitimleri alanlarında 10 yılı aşkın bir süredir ülkemizin önde gelen kurumlarına hizmet vermeye devam etmektedir. Detaylı bilgi ve danışmanlık hizmetlerimiz için aşağıdaki formu kullanarak veya [email protected] adresimiz üzerinden bizlerle iletişime geçebilirsiniz.