Sektörler Açıktı: Bir Açığı Kapatmaya Giderken Bulunan Açık
Geçen yazıyı şöyle bitirmiştim: "O 1900 cihaz başka bir şehirde; haftaya oraya gidip onları da yerinde güncelleyeceğiz."
Geçen hafta gittik. Üç günde 1880 cihaz güncelledik. Dönerken çantamda hiç beklemediğim bir şey vardı: başka birinin güvenlik açığı.
Kartın üstündeki tükenmez kalem
Şehirde bir kurumun misafirhanesinde kaldık. Resepsiyonda kayıt olurken görevlinin masasındaki kart okuyucuyla bize kart oluşturması dikkatimi çekti — cihazı tanıdım, benzeriyle çalışıyorum.
Kartları alıp odalara giderken ekip arkadaşımın kartının üstünde tükenmez kalemle yazılmış bir oda numarası olduğunu fark ettik. Ona verilen oda o değildi. Bakıştığımızı gören görevli "o numaraya takılmayın, sizin odalarınız başka" dedi. Takılmadık.
Sonradan aklıma takıldı: o kartı düşürsen, bulan biri hangi kapıyı açacağını da biliyor. Muhtemelen bir müşteri kendi kolaylığı için yazmıştı. O an ben de üstünde durmadım — zaten kafam ertesi güne çalışıyordu. O an bunun hikâyenin en önemsiz kısmı olduğunu sanıyordum.
Odanın kapısında hoşuma giden bir şey vardı: kilit, bilinen ve iyi bir markanın akıllı kilidiydi. Kartı okuttum, girdim, sabah güncelleyeceğim cihazları düşünerek uykuya daldım.
Kâğıda bakmadığımız gün
Sabah şehrin su ve kanalizasyon idaresine gittik. Bizimle ilgilenecek daire başkanıyla kısa bir sohbetin ardından yanımıza bir çalışan verdiler. Elimize de küçük bir kâğıt verdiler: inşaat firmalarının adları ve her birindeki cihaz sayısı, elle yazılmış.
Kâğıda bakmadık. Bir an önce başlayıp bitirmek istiyorduk.
Şansımız şuydu: cihazların hiçbiri henüz eve takılmamıştı. 2900'ün tamamı koliler hâlinde, ya şantiyelerin deposunda ya idarenin ambarında bekliyordu. Kapı kapı dolaşmayacaktık.
İlk şantiyede bize bir ofis ayırdılar. Ben kurulumu yaparken firma yetkilileri ilk koliyi getirdi. İçinden bir cihaz alıp Bluetooth'unu açtım.
Cihaz güncel sürümdeydi.
Üçümüz birden sevindik; kafamızda işin yarısı çoktan bitmişti. Garanti olsun diye diğer kolileri de açıp birer cihaz test ettik — hepsi güncel. Sonra kâğıda baktık. Bu şantiyede 1026 cihaz vardı, sayfanın altındaki toplam ise 2900 küsür.
O 1026 cihaz, geçen yazıda anlattığım cihazlardı. Mühürlerini bozmadan, ofiste FUOTA ile güncellediklerim. O gün kutularını hiç açmamıştım; şimdi aynı cihazlar koliden çıkmış elimdeydi ve kendi işime bakıyordum. Tuhaf bir histi.
Ama sevinç de orada bitti. Toplamın 1026'sı zaten bitmişti, geriye kalan 1880 cihaz da zaten güncellemek için geldiğimiz partiydi. İş yarıya inmemişti; en baştan ne kadarsa o kadardı. Kötü bir haber yoktu — sadece iyi haber de yoktu.
680 ve 1200
İkinci firmanın şantiyesine geçtik. İlk iş yine kolilerden birini açıp sürüm testi yapmak oldu.
Bu seri güncel değildi.
Üç kişi, öğleden akşama kadar, oradaki 680 cihazı bitirdik.
Ertesi gün idarenin deposuna gittik; kalan 1200 cihaz oradaydı. Bize yine bir ofis verdiler, kolileri ayağımıza kadar getirdiler. O gün 750 cihaz güncelleyip işi bıraktık — şehri de görmek istiyorduk ve akşamı gezerek geçirdik. Kalan 450'yi son gün öğleden önce bitirdik.
İşin en iyi tarafı masa başında değildi
İkinci şantiyede çalışırken firmadan biri geldi, IT ekibinden diye tanıştırıldık. Sonradan öğrendim ki aslında geçici olarak akrabalarının şirketine yardıma gelmiş. İznini almadığım için adını yazamıyorum ama hem çok ilgili hem yazılım tarafında gerçekten bilgili biriydi.
Bir yandan cihazları güncellerken bir yandan da ona modüllerimizden ve şirketimizin geliştirdiği platformdan bahsettim. O da inşaat sektörü için kendi yazdığı ERP sisteminden bahsetti. İş bitince göstermek istedi, ofisine geçtik. Bir ERP'nin bu kadar derli toplu ve bu kadar hızlı olabileceğini açıkçası düşünmüyordum.
Depoda da benzer bir şey oldu. İdare çalışanlarıyla ettiğimiz muhabbetler bana sahanın ne kadar zor olduğunu gösterirken, aynı sohbetlerden cihazı nasıl geliştirebileceğime dair not çıkardım. Bunu her sahaya çıkışta yaşıyorum: ürününü en iyi, onu her gün eline alan adam anlatıyor.
Sektörler açıktı
Son gün misafirhaneden çıkış yapacaktık. Ekip arkadaşlarımın odalarından çıkmasını beklerken elimde oda kartı, aklıma o kilit geldi.
Bu firma kart olarak ne kullanmış acaba?
Telefonu çıkarıp NFC Tools'u açtım, kartı okuttum: MIFARE Classic 1k. Benim de sürekli kullandığım karttı.
Ardından alışkanlıkla sektörleri okumayı denedim. Bu kartta her sektör bir anahtarla kilitli ve kart fabrikadan herkesin bildiği varsayılan anahtarla çıkıyor; sistemi kuran kişinin kurulum sırasında o anahtarı silip kendi anahtarını yazması gerekiyor. Ben kendi işimde o adımı atlamıyorum. Bu yüzden sonucu da biliyordum: uygulama anahtarı tutturamayacak, hata verip bırakacak.
Okuma sayfasını açtım, kartı yaklaştırdım.
Bütün sektörler önümde duruyordu.
İnanmayıp tekrar denedim. Sonuç aynı.
Çünkü NFC Tools bir kırma aracı değil. Şifre çözmüyor, kriptografiyle uğraşmıyor; elindeki bilinen varsayılan anahtarları sırayla deniyor, o kadar. Tuttuysa tek bir anlama geliyor: o kartta anahtarlar hiç değiştirilmemişti. Kart, fabrikadan çıktığı gibi duruyordu.
Yanlış anlaşılmasın, abartmak istemiyorum: ben o kartı okuyabildiğimi gördüm. Başka bir kapıyı açabileceğimi denemedim, denemek de istemedim. Ama bu tabloda okumakla yazmak arasında ciddi bir engel yok; anahtar varsayılan kaldıysa sektör yazmaya da açık demektir.
Yani ortada kırılan bir şifre yok. Hiç kilitlenmemiş bir kapı var. Aradaki fark önemli: birincisi saldırı ister, bilgi ister, ekipman ister, zaman ister. İkincisi için elinde telefon olması yetiyor.
Beni asıl rahatsız eden kendi odam değildi. O misafirhanede birçok kamu görevlisi kalıyordu, aralarında kolluk kuvvetlerinden olanlar da vardı. Kapının arkasında ne olduğunu düşünmeye başlayınca mesele "birinin bavuluna bakması"ndan hızla çıkıyordu.
Lobide
Uygulamayı kapattım. Okuduğu tek bir satırı bile kaydetmedim; aklıma gelen ilk şey "bunu burada bırak" oldu.
Sonra bavulumu lobiye bırakıp resepsiyona gittim.
Anlattım. Kartı telefonuma okuttuğumu anlamıştı ama bunun ne demek olduğu havada kalmıştı. Telefonu uzattım, kartı tekrar okuttum, ekranı ona çevirdim. Yüzündeki ifade değişti. Üstlerine söyleyeceğini söyledi.
Ekip arkadaşlarım aşağı inene kadar lobide oturup kilit firmasına yazacağım mailin ilk satırlarını yazdım. Sonra çıkışımızı yapıp depoya gittik, kalan cihazları öğlene kadar bitirdik, kolileri sayıp teslim ettik. Akşam yine biraz gezdik. Ankara'ya dönüş yolunda ekiple konuştuğumuz tek konu yeni projeler oldu.
Ama o mail aklımdan çıkmadı. Hatanın tam olarak kimde olduğunu hâlâ bilmiyorum — kurulumu yapan ekip o adımı atlamış olabilir, sistem varsayılan anahtarı değiştirmeyi zorunlu tutmuyor olabilir. İkisi de aynı kapıya çıkıyor: üreticiye söylemek. Mail gitti, henüz cevap yok. Üstünden çok da geçmedi.
Firmanın adını da, şehri de buraya yazmıyorum. Kapı hâlâ o kapı.
Çıkardığım ders
Üç gün boyunca kendi ürünümüzdeki bir açığı kapatmak için 1880 cihazı tek tek elimize aldık. Sonra her gece, kapısını bir kartla açtığım odada uyudum.
Güvenlik çoğu zaman teknoloji problemi değil; süreç problemi. Kilit sağlam olabilir, kart güvenilir olabilir, yazılım hatasız olabilir. Ama zincirin herhangi bir halkasında varsayılan bir ayar unutulursa, bütün sistem onun kadar güvenli kalır.
Bizim işimizde de durum farklı değil. Bir tarafta cihazları kutuyu açmadan güncelleyebilmek için uğraşıyoruz, diğer tarafta kurulum sırasında doldurulması gereken tek bir alanın atlanması bütün güvenlik modelini anlamsız hâle getirebiliyor.
Bu hikâyeden aklımda kalan asıl şey ise güvenlik açığı değil.
O kartı kimse benden incelememi istemedi. Ben sadece merak ettim. Üç gün boyunca yaptığım iş de aslında buydu: koliyi açıp sürüme bakmak, bir ERP'nin nasıl yazıldığını görmek istemek, depodaki çalışana cihazın sahada nasıl davrandığını sormak. Hepsi aynı refleksin farklı biçimleri.
Ar-Ge benim için yeni bir şey üretmekten önce, eline geçen şeyin nasıl çalıştığını gerçekten anlamaya çalışmak demek.
Bazen bir cihazın sürümünü öğreniyorsun.
Bazen de kapının açık olduğunu.