Android 14, root yetkisiyle bile sistem sertifikası değişikliklerini engelliyor mu?
(httptoolkit.com)- Android 14 (API v34), sistem CA sertifikalarını
/systemyerine APEX tabanlıcom.android.conscryptmodülünden okuyacak şekilde değiştirerek, sertifikaları root yetkisiyle enjekte etmeye dayanan mevcut hata ayıklama akışlarını bozuyor - Android 7 Nougat’tan sonra uygulamaların varsayılan güven deposu sistem CA’ları ve kullanıcı CA’ları olarak ayrılınca, geliştirme, test ve tersine mühendislik araçları sistem CA dizinini doğrudan değiştirme yöntemine dayanıyordu
- Yeni yapı, CA sertifikalarının Google Play System Update ile güncellenmesini sağlayarak sorunlu CA’ların kaldırılmasını ve yeni CA’ların dağıtımını hızlandırıyor; ancak cihaz sahibinin kontrolünü azaltıyor
- Android 14 beta emülatöründe
/system/etc/security/cacerts,/system/etc/security/cacerts_google,/apex/com.android.conscrypt/cacertsgibi yollar tmpfs ile örtülse veya silinse bile Settings ve uygulamalar Google CA listesini görmeye devam ediyor - Yazının yazıldığı sırada Android 13’te kalmak veya APEX kullanmayan özel bir OS gerçekçi alternatifti; daha sonraki güncellemelerde ise Android 14 sertifika enjeksiyonu için birden fazla atlatma yöntemi ortaya çıktığı belirtiliyor
Android CA yönetiminin değişim süreci
- Android, 2007’de Open Handset Alliance duyurusu sırasında “open platform”, “complete access to handset capabilities and tools” gibi ifadelerle açıklığı vurgulamıştı
- Zaman içinde kullanıcıların, geliştiricilerin ve araştırmacıların kendi cihazlarını kontrol edebildiği alanın giderek daraldığı değerlendiriliyor
-
Android 7 Nougat ile dönüşüm
- Cihaz sahibinin değiştirebildiği CA listesi sistem CA’ları ve kullanıcı CA’ları olarak ayrıldı
- OS üreticisinin sağladığı sabit sistem CA listesi tüm uygulamalar için varsayılan hâle geldi
- Kullanıcının değiştirebildiği CA listesi yalnızca uygulama açıkça opt-in yaptığında kullanılmaya başladı
- Sonuç olarak neredeyse tüm uygulamalar kullanıcı CA’larını varsayılan olarak güvenilir kabul etmemeye başladı
CA sertifikaları neden önemli?
- Cihazın güvendiği CA’lar, şifreli ağ trafiğinin güvenliğini garanti eden kuruluşların listesidir
- CA’lar, HTTPS gibi TLS bağlantılarında kullanılan sertifikaları herhangi bir alan adı için düzenleyebilir; o CA’ya güvenen cihazlar da bu sertifikayı normal bir bağlantının kanıtı olarak kabul eder
- Kullanıcının kendi oluşturduğu bir CA’yı cihaza güvenilir olarak eklemesi, kendi HTTPS veya TLS trafiğini araya girerek görmesini sağlar
- Telefonun gönderdiği ve aldığı veriler incelenebilir
- Gerekirse değiştirilebilir veya engellenebilir
- Bu kontrol güvenlik ve gizlilik araştırmaları, tersine mühendislik, uygulama hata ayıklama ve testleri, kurumsal iç ağ ayarları ve varsayılan CA’lara güvenmeyen kullanıcılar için önemlidir
- Teknik olmayan kullanıcıların yanlışlıkla CA değiştirmesini zorlaştırmak veya kullanıcıdan habersiz değişiklik yapılmasını engellemek makuldür; ancak ileri seviye kullanıcıların kontrolünü de sınırlamak birçok kullanım senaryosunu zorlaştırır
Android 7 sonrası root tabanlı atlatma yöntemi
- Android 7’den sonra da root yetkisi alınmış cihazlarda sistem CA deposu doğrudan manipüle edilebiliyordu
- En yaygın yöntem, güvenilecek sertifikayı
/system/etc/security/cacerts/içine koymaktı /system, root’lu cihazlarda bile genellikle salt okunur olduğundan iki yöntem kullanılıyordu/systemdizinini yazılabilir olacak şekilde yeniden yapılandırıp yeniden başlattıktan sonra gerçek sistem sertifika dizinini değiştirmek- Salt okunur dizinin üzerine geçici bir okuma/yazma dosya sistemi mount edip mevcut CA’ları kopyaladıktan sonra yeni sertifikayı eklemek
- Sertifikanın sistem tarafından kabul edilmesi için dosya adı, izinler ve SELinux etiketi gibi koşulların da doğru olması gerekiyordu
- HTTP Toolkit, geçici mount tabanlı prosedürü otomatikleştirerek root’lu Android cihazlarda veya emülatörlerde tek tıkla interception kurulumu sunuyordu
- Bu yaklaşım, özel root’lu cihazlarda, özel Android dağıtımlarında ve Google’ın resmi emülatör imajlarının çoğunda çalışıyordu
- Normal OEM cihazlar gibi kilitli tam “Google Play” edition imajları bunun istisnasıydı
- mitmproxy kurulum belgeleri, çeşitli blog yazıları, StackOverflow yanıtları, forum gönderileri, Magisk paketleri ve cacert.org yönergeleri de benzer bir yöntem kullanıyordu
Android 14’ün yeni CA güncelleme yapısı
- Android 14, yazının yazıldığı sırada son beta aşamasındaydı ve birkaç hafta içinde yayınlanması bekleniyordu
- Başlıca güvenlik özelliklerinden biri uzaktan güncellenebilir CA sertifikaları idi
- CA sertifikası yönetimi çekirdek OS imajından ayrılarak, Google Play üzerinden dağıtılıp güncellenen ayrı bir bileşene taşındı
- Bu yapıda Google, sorunlu CA’lara duyulan güveni daha hızlı geri çekebiliyor
- Her telefon üreticisinin tam OS OTA güncellemesi dağıtmasını bekleme ihtiyacı azalıyor
- Yalnızca Google Play System Update ile Android 14+ cihazların CA listesi değiştirilebiliyor
- Varsayılan güvenilir CA’lar güçlü yetkilere sahip olduğundan denetim ve yaptırım gerekir; başarısız olan CA’ların yetkileri de hızla kaldırılmalıdır
- Örneğin Ocak 2023’te TrustCor, kötü amaçlı yazılım dağıtan yapılar ve ABD savunma/istihbarat yüklenicileriyle yakın ilişkileri ortaya çıktıktan sonra Google dâhil büyük aktörler nezdinde CA güvenini kaybetti
- Tersine, yeni CA dağıtımının gecikmesi de sorun yaratır
- Let’s Encrypt, eski Android cihazlarda güncel kök CA bulunmadığı için imza zinciri iyileştirmelerinin dağıtımını birkaç kez ertelemek zorunda kaldı
- CA güncellemelerinin tepki hızını artıran yapı kendi başına değerli olsa da Android 14 uygulaması sistem CA’larını değiştirmeyi fiilen zorlaştırıyor
Gerçek dosya konumu ve APEX davranışı
- Android 14’teki temel değişiklik, mevcut
/system/etc/security/cacertsyerine/apex/com.android.conscrypt/cacertsvarsa sertifikaların buradan okunmasıdır /apex, Android Pony EXpress, yani APEX container’larının mount edildiği yoldur- APEX modülleri bağımsız olarak güncellenebilen sistem bileşenleridir ve imzalı, değiştirilemez container’lar olarak dağıtılır
- Android 14’te CA sertifikaları, Android’in çekirdek TLS/SSL kütüphanesi olan
com.android.conscryptmodülünün bir parçası hâline gelir - APEX’in düşük seviyeli işleyişi yeterince belgelenmemiştir ve bazı kritik ayrıntı bağlantılarının yalnızca Google iç sitelerinde olduğu söylenir
- Test sonuçları, APEX modülü içeriklerinin tek tek süreçlere doğrudan açıldığı ve başka konumlardaki dosyalar değiştirilse bile uygulamaların gördüğü içeriğe bunun yansımadığı bir davranış gösterdi
Android 14 emülatöründe gözlemlenenler
- Android 14 beta resmi emülatörünün AOSP ve “Play Services” imajlarında root erişimi mümkündür
- “Google Play” imajları normal OEM cihazlar gibi kilitlidir
- API 34 “Google APIs” imajıyla emülatör oluşturup root shell açılabilir
- Mevcut geçici mount yöntemiyle aşağıdaki yollar tmpfs ile örtüldüğünde de beklenen etki görülmedi
/system/etc/security/cacerts/system/etc/security/cacerts_google/apex/com.android.conscrypt/cacerts/apex/com.android.conscrypt@340818022/cacerts
- Settings → Security & Privacy → More → Encryption → Trusted Credentials içindeki “System” sekmesinde, gizlendiği düşünülen sertifikalar aynen görünmeye devam etti
- Örneğin “ACCV” sertifika dosyası
3c9a4d3b.0tüm dosya sisteminde arandığında, mount ile gizlendiği sırada görünmüyordu; ancak Settings’te görünmeye devam ediyordu - Aynı prosedür Android 13 imajında uygulandığında Settings’teki sertifika listesi boştu; yani mevcut yöntem beklendiği gibi çalışıyordu
Sistem imajını doğrudan değiştirmek de başarısız
- Android 14 emülatörü
-writable-systemile başlatılıpadb root,adb remount,avbctl disable-verification, yeniden başlatma gibi adımlardan sonra yazılabilir hâle getirilebiliyor - Sonrasında
/system/etc/security/cacerts/*,/system/etc/security/cacerts_google/*içindeki sertifikalar silinebiliyordu - Ancak
/apexiçindeki sertifikalar silinemiyordu- remount sonrası bile salt okunur kalıyorlardı
mount -o remount,rw ...komutu da başarısız oluyordu
- Yapılabilen en yakın müdahale, ilgili sertifika yolunu
umountederekmountçıktısında görünmez kılmaktan ibaretti - Buna rağmen Settings’teki “Trusted” listesinde CA sertifikaları yüklenmeye devam ediyordu
- Bunun Settings uygulamasının önbellek sorunu değil, uygulamaların gördüğü sertifika deposu açısından da aynı davranış olduğu değerlendiriliyor
- Dosya sistemi nasıl değiştirilirse değiştirilsin, uygulamaların Google’ın CA listesini görmeye devam ettiği ortaya çıktı
Etkiler ve sınırlamalar
- Android 14’te sistem CA sertifikası yükleyerek hata ayıklama, tersine mühendislik, test ve araştırma yapmaya dayanan mevcut akış bozuluyor
- Yazının yazıldığı tarih itibarıyla alternatifler Android 13’te kalmak veya CA sertifikası yönetiminde APEX modülü kullanmayan özel bir OS sürümü kullanmaktı
- Zaman geçtikçe Android Mainline’ın çekirdek iç bileşenlerinden ayrışmak veya eski yazılımları kullanmayı sürdürmek gerekeceğinden, bu alternatifler giderek daha az pratik hâle gelebilir
- APEX modülü içindeki içerik root yetkisiyle bile değiştirilemiyorsa, gelecekte APEX’e taşınan her sistem bileşeniyle kullanıcı kontrolü azalabilir
- GrapheneOS, LineageOS gibi Android fork’ları ile Magisk ve çeşitli modüller için de sorun oluşturabilir
- Ancak üstteki güncellemeye göre, daha sonraki tartışmalar ve atlatma araştırmaları sonucunda Android 14’te de sertifika enjeksiyonunu mümkün kılan çeşitli çözümler ortaya çıktı
- Android 14’te HTTPS trafiğinde hata ayıklama yaparken yalnızca mevcut root tabanlı sistem CA enjeksiyonunu varsaymak zorlaşıyor
1 yorum
Hacker News görüşleri
Eski Android root araçları ve modern genel amaçlı özel ROM'lar üzerinde, ayrıca Android OS ile ilgili çeşitli işler yapmış biri olarak başlığın hem şimdi hem de gelecekte yanlış olduğunu düşünüyorum
Android'de root dediğimiz şey gerçekten root yetkisidir; istediğiniz her şeyi yapabilirsiniz [1]
Günümüzdeki Android root aracı Magisk, Java kodunu bile “değiştirme” işlevi içeriyor; dolayısıyla derinlerde saklı olsa bile erişebilmesi gerekir
Yazarın yapamamış olması bunun imkânsız olduğu anlamına gelmez; zygote CA'ları önbelleğe aldığı için
stop;startile yeniden başlatmak gerekmesi ya da komutu çalıştırmadan önce doğru mount namespace'ine geçmek gerekmesi gibi bir sorun olabilirGrapheneOS ve LineageOS tüm kaynak koda erişebildiği için istedikleri gibi değiştirebilirler; tek kısıt, Google'ın inanılmaz bir hızla bozduğu şeylere yetişmenin zahmetli olması
Android kullanıcıya, özellikle de power user'lara giderek daha düşmanca hâle geldikçe daha fazla kişinin özel ROM'lara geçmesini umuyorum
Rüyamda, güvenlik modelinin ilk satırı “kullanıcı düşmandır” olmayan “OwnerDroid” gibi bir Android fork'u yapıyorum; ama birkaç küçük tuğla üretmiş olmak dışında tüm proje muazzam miktarda iş gerektiriyor
[1] Bazı çekirdek düzeyi korumalar bunun istisnası, ancak GKI bu riski azaltıyor
Artık bunu yapmak mümkün değil
Elbette tüm kaynak kod sizdeyse her şey mümkün; bu modülü devre dışı bırakmış bir Android sistem imajını sıfırdan derleyebilirsiniz, GrapheneOS/LineageOS da buna uyum sağlayabilir
Ancak çok fazla yeni iş çıkıyor ve temel bileşenlerde Android uygulamasından ayrışırsanız ileride daha fazla bakım gerektirebilir
Etkilenen kullanıcıların büyük çoğunluğu için “önce sistem imajını kendin derle” demek, konfor alanlarının ve ayırabilecekleri zamanın çok ötesinde
Sonunda başka çözümler çıkacaktır; ama bunlar namespace'lerin içine dalıp hedef sürecin mount'larını tek tek değiştirmek, Android'in güvendiği şekilde kendi APEX modülünü derleyip kurarak sistem modülünün yerine geçirmek ya da Frida ile tek tek uygulamalara hook atmak gibi şeyler olacak
Yine de kullanıcının kendi cihazını tamamen kontrol etmesini zorlaştıran büyük bir sorun
Zorunlu banka uygulamalarının root kontrolleri veya Google ile ilgili işlevler gibi kritik kısımlar belgelenmemiş durumda; “telefon modeli + yerel banka uygulaması + özel ROM” kombinasyonunun test edilip düzgün çalıştığına dair bilgi bulmak da neredeyse imkânsız
Özgürlük ve seçimden yanayım, ama ortalama bir telefon kullanıcısının birkaç telefon ve günlerce mesai harcamadan ya da zaten uzman değilse bunu gerçekçi bir davranış biçimi olarak görmek zor
Bilgisayarda power user'ım, ama telefonun daha aptal olmasında sakınca görmüyorum
Ancak telefonu giderek daha fazla çok faktörlü kimlik doğrulama cihazı olarak kullanmak zorunda kalınca ya da bankalar gibi daha güçlü kaldıraçlara sahip şirketlerin kaprislerine bağlanınca bunu yapmak zorlaşıyor
Root'lu telefonda çalışan bir uygulama bulmak için banka hesabımı üç kez değiştirmeyi düşünmüyorum
“Android fork'u nasıl rakip olabilir ki?” diye soruyorsanız, bu stratejinin işe yaradığı anlamına gelir
Yeni yöntem
/apex/com.android.conscrypt/cacertsvarsa sertifikaları oradan okuyorsa, mevcut SafetyNet atlatma, root gizleme veya Magisk gizleme yöntemlerinde olduğu gibi yalnızca gerekli süreçlerde/apex/com.android.conscrypt/cacertsyolunu gizleyip eski yönteme fallback yaptırmak mümkün olabilirHacker'ların alanı; onların içinde bile çok küçük bir kesimin kullandığı bir şey
Burada çok iyi yorumlar var ama PC'lerin akıllı telefonlar gibi çalışmamasının ne kadar büyük bir şans olduğunu düşünmeden edemiyorum
Android kendini öyle kapsamlı biçimde mahvetti ki, Microsoft'un PC dünyasını Google'ın akıllı telefon dünyasını yönettiği gibi yönetmemesine şükrettiğimi söylemek bana bile tuhaf geliyor
Windows'un kendisi Android'e kıyasla neredeyse bir istikrar ve sağduyu kalesi; donanım gerçekten eskilikten arızalanana kadar yükseltmeye zorlanmanız da gerekmiyor
Microsoft da Google gibi donanım-yazılım hattının tamamını kontrol etmiyor; ama mağaza üzerinden normları dayatma veya SafetyNet benzeri yöntemlerle ortam değişikliklerini caydırarak PC sahipliğini aşırı zahmetli hâle getirme gücüne sahipti
Microsoft'un geçmişte böyle şeyler yüzünden antitröst davasına uğrayıp uğramadığını net hatırlamıyorum; Google'ın başına da aynısının ne zaman geleceğini merak ediyorum
Microsoft da Windows'a çok sayıda DRM ekledi, sonra bunlardan bazılarını kırdı; uzaktan attestation da OS'e yerleşik
Google, aslında güvenilmemesi gereken Android iç uygulamasını değiştirip geliştiricileri rahatsız etmiş; Microsoft da böyle şeyleri sürekli yapar
Güncellenmiş bir Magisk modülü için birkaç hafta beklemek yeterli olacak gibi duruyor ve açıkçası o kadar da kötü değil
Android 14 alacak 5-6 cihazda o zamana kadar güncelleme düğmesine basmamak yeterli
Windows 11 TPM ve Secure Boot gerektiriyor
Bazı gelişmekte olan ülkelerin tüm bağlantılara ortadaki adam saldırısı yapmak için ulusal CA kurulmasını istediğini duymuştum; bunu çok zorlaştırmak, kullanıcının kendi gizliliğini kapatmasını sağlama işini pratikte zorlaştırır
PinePhone Pro’yu günlük ana cihazım olarak kullanıyorum.
Chase.com, Librewolf gibi standart dışı tarayıcıları ve telefon/tablet tarayıcılarının kullanımını gerçekten ısrarla engellemeye çalışıyor; mobil uygulamayı kullanmaya zorluyor.
En azından WEI zorunlu hâle gelene kadar bu tür aptalca önlemler kolayca aşılabildiği için ciddi bir sorun değil, ama Chase bir banka olduğundan hukuken tartışılabilecek bir tarafı var mı merak ediyorum.
İlk tahminim ADA uyumluluğu tarafı, ama emin değilim.
Artık o kadar yoruldum ki, bu konuda dava açmak istiyorum dememin boş laf olup olmadığından bile emin değilim.
Bir yan konu olsa da, mobil OS oligopolisinden çıkmanın neredeyse imkânsız olduğuna dair başka bir yüzünü gösterdiği için ilgili.
Linux telefon nişi mucizevi biçimde birkaç yüzde puana kadar büyüse bile Android büyük olasılıkla kötüleşmeye devam edecek ve bir şeye ihtiyaç var.
Dijital serflik çağının geleceğini düşünüyorum.
“Hayırsever” bir şirketin sağladığı cihazı kullanacağız; o şirket cihazın her yönüne sahip olacak ve ancak para ödeyerek, araba sürer gibi kullanabileceğiz.
Diğer yolların çoğu kilitlenecek, genel amaçlı bilişim yalnızca “kurumsal” olarak kalacak ve “özgür web” var olacak ama epey teknik ve kullanıcıya düşmanca olacak.
Pazarın büyük çoğunluğu, özellikle de parayla ilgilenen her yer, ondan veba gibi kaçacak.
Google’ın bununla açık web’i öldürdüğünü düşünüyorum.
Zaten biraz sıkıcılaşmaya başlamıştı, ama artık telefon ya da “onaylı” tarayıcı olmadan yaşamanın çok daha zorlaşması can sıkıcı.
Deneyimli bir kullanıcının ek yazılım kurup sorunu düzeltebilmesi güzel, ama Chase’in temel web sitesini düzeltip benzer ihtiyaçları olan acemi kullanıcıların da yardım almasını sağlaması daha iyi olur.
Bu konuda Android’in Apple’dan daha zorlayıcı olduğunu ve hâlâ öyle olduğunu düşünüyorum.
Yeni bir kök CA kurulup güvenilir sayılabildiği dönemde bile bazı uygulamalar bunu yok sayabiliyordu ve gerçekten de yok sayıyordu.
iOS ve Android’in ikisinde de uygulamalar sertifika sabitleme kullanabilir, ancak Android 7+’da 2016’dan beri uygulamalar varsayılan olarak kullanıcının eklediği CA’ları yok sayıyor[1].
iOS’ta bir kök CA’ya güvenme süreci profil kurulumu ve korkutucu uyarılardan geçecek şekilde zahmetli; bu başlı başına makul, ama deneyimime göre çoğu uygulama sertifika sabitleme kullanmadığı sürece buna güveniyor.
[1]: https://android-developers.googleblog.com/2016/07/changes-to...
iOS’a kıyasla genel amaçlı bir bilgisayara çok daha yakın olan Android’de stalkerware sorunu çok büyük.
Stalkerware istemlerle engellenmiyor, geriye dönük uyumluluğu silah hâline getiriyor ve her tür istismarı içeriyor.
iOS’ta birine telefonu 5 dakikalığına ödünç verdikten sonra HTTPS gizliliğinin yıllarca tersyüz edilmesi şaşırtıcı derecede kolay.
Kurulan CA sertifikalarına gerçekten güvenebilme seçeneğini istiyorum, ama özellikle bir web tarayıcısı olan Firefox’un bile gizli sekme kombinasyonları ve ayarlar olmadan kullanıcı sertifikalarını kullanmaması sinir bozucu.
Yine de dünya genelindeki Android kullanıcıları için doğan riski düşününce, bu özelliğin günlük kullanımda birkaç düzine teknisyen için aynı derecede önemli olduğunu söylemek zor.
Bu olayın, yerel BT departmanının planını engellemeye çalışan kötü niyetli bir Google komplosundan ziyade, Google’ın iyi sandboxing iyileştirmelerinin ve uzun süredir gecikmiş CA deposu güncelleme mekanizmasının bir yan etkisi olduğunu düşünüyorum.
Magisk modülü yakında bir geçici çözüm olarak çıkar; mevcut modül bir süre bozulacaktır ama büyük Android güncellemelerinden sonra bu yaygın bir şey.
Gerekirse modülü kendiniz de yazabilirsiniz.
Bu sadece mount’un çalışma biçimi değil mi diye düşünüyorum.
/apex/whateverüzerine bir şey mount edilmişse ve her uygulamanın ayrı bir mount ad alanı varsa, kendi ad alanınızda/apex/whateverüzerine tekrar mount etseniz de diğer ad alanlarında hiçbir şey değişmez.Dosya sistemini doğrudan değiştirmeniz ya da diğer uygulamanın mount ad alanına girip orada da tmpfs mount etmeniz gerekir.
Paylaşımlı mount yardımcı olabilir ama emin değilim; gerçekte ne olduğunu daha ayrıntılı görmek gerekir.
Bu sonucun, kullanıcıların root yetkisiyle bile kök CA’yı değiştirmesini engellemeye yönelik kasıtlı bir girişimden ziyade, Google’ın ad alanı/konteynerleştirme çalışmalarının bir yan ürünü olma ihtimalinin daha yüksek olduğunu düşünüyorum.
Ama nihai sonuç hâlâ büyük bir sorun.
Buradaki şaşırtıcı kısım “ayrı mount ad alanı”.
Eskiden bir shell açıp dosya sistemine mount eder ya da doğrudan değiştirirseniz uygulamalar o mount’tan dosyaları sorunsuz okurdu.
Artık bu cacert dosyaları için böyle değil ve yeni yöntemde doğrudan değiştirmek de imkânsız.
Bu değişiklikten önce Android uygulamalarının kendi mount ad alanlarını kullandığını bile bilmiyordum.
Tam olarak nasıl çalıştığına dair belge neredeyse yok ve bugüne kadar bunun böyle açıkça ortaya çıktığı bir örnek var mıydı, ondan da pek emin değilim.
manifest v3’e bakın.
Yazara Twitter’da yanıt bıraktım ama görmemiş olabilir diye buraya da bırakıyorum
Android 14’ün güncellenebilir sertifikaları hakkında blog yazısını yazan kişiyim; söz konusu yazı makalede bağlantı olarak verilmiş
Aslında APEX sertifika dizininden okumayı atlayacak şekilde ayarlanabilen bir sistem özelliği var
system.certs.enabled=trueKaynak: https://android-review.googlesource.com/c/platform/framework...
Bu,
android.os.SystemPropertiesOS özelliği, yaniadbile cihaz genelinde ayarlanabilen bir değer değil;java.lang.Systemözelliği, başka bir deyişle tek bir JVM/uygulama içinde ayarlanan bir yapılandırma değeriBana göre ilkini yeniden ayarlamak için uygulamanın kendisini değiştirmek gerekir
Otomasyon testleri için ya da debug/prod derlemeleri arasında ayarı açıp kapatmak için yararlı olabilir, ama cihaz genelinde CA sertifikalarına güvenilmesini istediğinizde pek işe yaramaz
Elbette böyle bir özelliği dışarıdan ayarlayıp tüm uygulamalara uygulamanın bir yolunu biliyorsanız gerçekten iyi çalışır; duymayı çok isterim
Bu arada yazar benim ve Twitter’da böyle bir yanıt görünmüyor
2023 Twitter’ına yakışır şekilde
Güvenlik için iyi görünüyor ve bazı geliştiriciler için cehennem gibi olabilir; ama bu Android sürümü 2-3 yıl sonra terk edilince ne olacak merak ediyorum
Hardcode edilmiş sertifikaların birkaç yıl daha dayanması için dua mı etmek gerekecek
Android 14, kök sertifikaları Google Play üzerinden güncellenebilir hale getiriyor; eskisi gibi kök sertifika eklemek veya kaldırmak için OTA güncellemesi gerekmiyor
Bugün öğrendiğim bir geçici çözüm de var [0]
Android 7.0 veya daha eski bir sürüm kullanıyorsanız Let’s Encrypt sertifikasıyla korunan web sitelerine erişmeye devam etmek için işlem yapmanız gerekebilir; Android OS güven deposu yerine kendi güven deposunu kullanan Firefox Mobile’ı kurup kullanmanız öneriliyormuş
[0] https://letsencrypt.org/2023/07/10/cross-sign-expiration.htm...
[1] https://www.xda-developers.com/android-14-root-certificates-...
Çünkü Google güncellemesinde Let’s Encrypt’in kullandığı ara sertifika yoktu
Bu geleceğe dair varsayımsal bir sorun değil, şu anda var olan bir sorun
Neden kime güveneceğimin nihai hakemi Google olmalı?
Google’ın da elbette açıkları var
Ayrıca zaten onaylı sertifika sağlayıcıları arasında da, sertifika almaması gereken kişi ve kuruluşlara sertifika vermiş geçmişleri olduğu için gerçekte güvenilmemesi gerekenler var
Uygulamalar genelde kullanıcı sertifikalarını kabul etmiyor ve Google Cloud ya da onunla ilgili bir şey daha yeni bir sertifikaya geçince bazı uygulamalar çalışmayı bırakmaya başladı
Yani Play Services üzerinden bant dışı güncelleniyorlar ve OEM’in OS güncellemesine gerek kalmıyor
Her Android sürümü çıktığında bir şeylerin kaldırıldığını, pek anlamı olmayan şeylerin eklendiğini görüyorum
iOS sanki ters yönde ilerliyor; yavaş yavaş ortada buluşacaklar ve sonra iOS her açıdan Android’i geçebilir gibi görünüyor
Apple tarafındaki insanlardan dürüst görüşlerini duymak isterim
Son zamanlarda macOS kullanıyorum ve Windows/Linux’ta onlarca yıldır olağan olan çok temel kullanıcı deneyimi noktalarında başarısız olduğu için sevmiyorum
Finder gibi şeyler gerçekten berbat
Gelecek nesilde Android yerine iPhone alırsam iOS’a da aynı olumsuz tepkiyi verir miyim?
Akıllı telefon kullanım senaryolarında iOS’un macOS’tan daha olgun ve kullanışlı bir kullanıcı deneyimi sunduğu söylenebilir mi?
Geçmek istiyorum ama zaman ve para harcamak istemiyorum
Eski Android, yalnızca
.apkdosyaları olan bir iOS’tan ibaret değildi; gerçekten üzücüBu kullanım için gayet iyi
Ama kullanıcı çok fazla kısıtlanıyor; jailbreak’e bakılabilir belki, fakat ben telefon kullanımımı minimumda tutup neredeyse her şeyi masaüstünde yapmaya çalışıyorum
Bu arada macOS’u da bırakıp Linux’a geçen biriyim
Kendi barındırdığım yazılımlara erişmek için kişisel bir PKI kullanıyorum
E-posta sunucusu, takvim sağlayıcısı, not sunucusu, fotoğraf senkronizasyon aracı gibi şeyler
Kök sertifikamı sertifika yetkilileri listesine ekleyebilmeliyim
Sistem tarafından sağlanan listeyi değiştirmek istemiyorum, sadece kendi sertifikamı eklemek istiyorum
Bu benim cihazım; istersem istediğimi değiştirebilmem gerektiğini düşünüyorum
E-posta ve takvim uygulamalarının da buna dahil olma ihtimali yüksek
Büyük olasılıkla işe yaramayacağı durum, uygulama ile uygulama üreticisinin sunucuları arasındaki trafiği araya girip okumak için kendi CA’nızı kurmanızdır
Kendi cihazınızın ne yaptığını inceleyebilmeniz gerektiği için bu üzücü, ama kendi barındırdığınız yazılımda kişisel PKI kullanma senaryosu kesinlikle destekleniyor
Bir yolu olması gerekiyor gibi
getlocalcert bunun için araç geliştiriyor [1]
Güven kökü ekleme ihtiyacını ortadan kaldırabildiği için, bazı ağlarda “özel ağ üzerinde genel sertifika” yaklaşımı genel olarak avantajlı
Açıkçası Android’in özel CA’ları engelleyeceğini beklemiyordum, ama sonuçta böyle oldu
[1] https://www.getlocalcert.net/
Şu anda Android telefon kullanmıyorum ama eskiden root yetkisi olmadan, ayarlardaki bir seçenekle Android telefona kendi CA sertifikamı ekleyebildiğimi ve en azından web tarayıcısı gibi uygulamaların buna güvendiğini hatırlıyorum
Çok eski bir zamandan da bahsetmiyorum
Bu yüzden özel sertifika yüklemek için cihazı rootlamanın neden gerektiğini, bunun başka bir kullanım için mi olduğunu anlayamamıştım
HTTP Toolkit, Turkey’deki berbat elektrikli araç şarj uygulamasından gizli API’leri çıkarmakta çok işe yaramıştı
SSL pinning’i ve root algılamasını aşmak için Frida’yı da birlikte kullandım
Sonra API’lerini saklamaya çalışmalarının sebebinin, o API’lerin canavar gibi şeyler olması olabileceğini fark ettim /s