Yüzbinlerce Vatandaşın Sağlık Bilgisinin Sızabileceği Bir Güvenlik Açığı ve Yaşadığım Süreç

Özet: Ülkemizin büyük hastaneler zincirinin birinde (kod adı: Sıhhat Bahçesi), tüm hastaların tahlil/işlem sonuçlarının sızabileceği bir güvenlik açığı keşfettim. Bu güvenlik açığı yüzbinlerce insanın verisinin ifşasına ve ilgili hastane zincirinin para ve prestij kaybına yol açacaktı. Hastane ile iletişime geçip açığı kapattırdım. Fakat karşılığında bir para ödülü vermedikleri gibi bu açıkla alakalı blog yazmam halinde hukuki yaptırımlara maruz kalacağımı ilettiler (o yüzden gerçek adını veremiyorum). Bu yazıda hem yaşanan süreci anlatacağım hem de yazının sonunda güvenlik zafiyetiyle alakalı teknik detaylara yer vereceğim.

Etik Hackerlık Nedir?

  1. Kritik güvenlik zafiyetlerini kötü niyetli hacker’lardan önce bularak toplumu korumak. Bu genelde kamu kurumlarını etkileyen güvenlik açıkları için geçerlidir.
  2. Güvenlik zafiyeti ile alakalı teknik makale yayınlayarak saygınlık ve prestij kazanmak.
  3. Şirketlerin vereceği para ödülleri ile maddi gelir sağlamak.

Peki bir etik hacker bir firmada güvenlik zafiyeti bulduğu zaman süreç nasıl ilerler? Tüm dünyada etik olarak kabul gören süreç şöyledir:

Hacker açıkla ilgili raporu ilgili şirkete iletir. Şirketteki güvenlik uzmanları ya da yazılımcılar bunu analiz edip doğrular. Daha sonra hacker, güvenlik zafiyetinin kapatılması için şirkete bir süre tanır (maksimum 3 ay) ve bu süre zarfında açıkla ilgili tüm bilgileri gizli tutar. Güvenlik zafiyeti kapatıldıktan sonra da gerçekleşebilecek üç senaryo vardır:

  1. Hacker, güvenlik zafiyeti ile ilgili bir makale yayınlayarak bunu topluma duyurur.
  2. Fakat etik olarak kurumların blog yazılmasını istememe hakları vardır. Ancak bu durumda şirket hacker’a tatmin edici bir para ödülü vermelidir.
  3. Şirket hem para ödülü verip hem de blog yazılmasına izin verir. (Büyük şirketlerin tercih ettiği yol genellikle budur)

Peki bir şirket, hem para ödülü vermeyip hem de blog yazılmamasını talep edebilir mi? Yasal olarak bunun cevabı malesef evet. Fakat etik olarak koca bir HAYIR. Çünkü şirket, bu güvenlik açığını kapatarak hem maddi zararlardan kendini koruyor, hem de olası bir prestij kaybının önüne geçiyor. Fakat hacker hem harcadığı zamandan oluyor, hem para kazanamıyor hem de bununla alakalı bir blog yazamadığı için prestij elde edemiyor.

Etik hackerlar etik kuralları takip eder. Fakat biz bir hayır kurumu değiliz. Eğer bir şirketi maddi manevi zarardan kurtardıysak, bunun karşılığını para ya da prestij olarak almamız gerekir.

Zafiyetin Bulunması ve Yaşanan Süreç

Zafiyetle alakalı raporumu yazıp yetkili bir insan bulma sürecine başladım. Hastanenin websitesinde bu tip raporları iletebileceğimiz bir iletişim adresi bulunmuyordu. Hastaneyi aradığımda da bilgi alamadım. Daha sonra siber güvenlik sektöründeki çevresi geniş insanlara yazıp kontak bilgisi aramaya başladım. Bir kişinin kontağı varmış. İlgili kontağa raporu göndersem de cevap alamadım.

Daha sonra raporu USOM’a ilettim. İlgileneceklerini söylediler fakat daha sonra buradan da geri dönüş alamadım. Son çare olarak Linkedin’i açtım ve hastanenin tüm teknik personelini ekleyip mesaj atmaya başladım. Bu şekilde yetkili bir kişi buldum.

Kendisiyle telefonda konuştuk. Raporu kendisine e-mail attım. Bir süre sonra zafiyeti kapattıklarına dair geri dönüş yaptılar.

Fakat analiz gerçekleştirdiğimde açığın tam olarak kapatılamadığını farkettim. Bir hafta sonra tekrar dönüş yaptılar. Bu sefer zafiyetin kapatıldığını onayladım.

Kendilerine zafiyetle alakalı blog yazmak istediğimi söyledim. Bunu yazmamı istemediler. Ben de bu isteklerinin etik olduğunu, fakat hizmetlerim için sembolik bir para ödülü ile ödüllendirilmem gerektiğini söyledim. Düşüneceklerini söylediler.

Bir süre sonra bana ödül olarak ücretsiz check-up vereceklerini söylediler. Bu komik teklifi reddettim. Çünkü en kötü tamamlayıcı sağlık sigortası bile her yıl check-up hakkı zaten veriyordu. Bu teklifi reddettikten sonra uzun bir süre cevap alamadım. Tekrar sorduğumda hukuk departmanının konuyu araştırdığını söyediler.

Ben de saf gibi “herhalde fatura kesmeden bana nasıl para göndereceklerini düşünüyorlar” diye düşündüm. Yine uzun bir süre ses çıkmadı. Para ödülü alamayacağım kesinleşti. Tekrar bir umut iletişime geçtiğimde ise avukatların blog yayınlamakla alakalı hukuki süreci araştırdıklarını söylediler.

Yani aba altından bir hukuk sopası göstermekti bu. Para ödülü vermiyoruz ve blog yayınlarsan dava açarız. Ve işin kötüsü gerçekten açabilirler ve muhtemelen de kazanırlar. Dava sürecinden çekinip hastanenin ismini telaffuz etmememin iki sebebi var:

  1. Mahkemeye benim yaptığım işin kötü niyetli olmadığını, etik amaçlar güttüğümü muhtemelen anlatamam.
  2. Blog yazarak marka değerlerini düşürdüğümü iddia edebilirler. Mahkemede tüm dünyada etik hackerlık sürecinin böyle ilerlediğini muhtemelen anlatamam.

Dolayısıyla başımdan geçen süreci “Sıhhat Bahçesi” kod adını kullanarak anlattım. Süreçle ilgili takdiri okurların akılına ve vicdanına bırakıyorum.

Zafiyetlerin Teknik Analizi

SMS Kodunun Sızması ile Authentication Bypass

Daha sonra karşımıza bir SMS onay paneli çıkmaktadır. Telefona gelen SMS kodu doğru girildiği takdirde tahlil sonuçları görüntülenmektedir.

Fakat TC kimlik numarasını girdikten sonra Burp Suite ile gelen response’a baktığımız zaman, SMS kodunun response içerisinde “message” parametresi ile saldırgana döndüğünü görüyoruz.

Yani SMS doğrulama tüm anlamını yitirmekte. Saldırgan TC kimlik numarası gönderip, gelen response içerisindeki kodu okuyarak tahlillere erişmekte.

Websitesinde herhangi bir rate-limit ya da CAPTCHA mekanizması olmadığı için bir saldırgan milyonlarca TC Kimlik numarasını sisteme göndererek tahlil sonucu olup olmadığını analiz edebilir. Olumlu yanıt dönen TC kimlik numaralarına ait sonuçları otomatik bir şekilde indirebilir. Mernis gibi sızıntılarla TC kimlik numaraları hali hazırda sızdığı için, 24 yaş üstü tüm vatandaşların tahlil sonuçları görüntülenebilir. Bunun yanısıra saldırgan, TC kimlik numaralarını rastgele üreterek de sonuçlara ulaşabilir.

Aşağıda bunun bir örneği gösterilmiştir. 1798 başarısız denemeden sonra doğru TC kimlik numarası başarılı bir şekilde tespit edilmiştir:

Client-Side Validation Bypass

Response’daki “success” kısmını “false”dan “true”ya döndürdüğümüz zaman tahlillere ulaşabiliyoruz. Bunun sebebi de kontrolün front-end’de Javascript kullanılarak yapılması.

Brute Force

computer security, programming, music. Website: https://utkusen.com

computer security, programming, music. Website: https://utkusen.com