İçeriğe atla
Yazılar

OCPP 2.0.1'in Güvenlik Modeli: EV Şarj Altyapısında Saldırı Yüzeyi

Elektrikli araç şarj ağları hızla büyüyor. Peki bu ağı ayakta tutan protokolün güvenlik varsayımları gerçekte ne kadar sağlam?

4 dk okuma
Elektrikli araç, şarj istasyonu ve CSMS zincirini, istasyon ile CSMS arasındaki OCPP/WebSocket bağlantısını ve her katmanın zayıf noktalarını savunma önerileriyle gösteren mimari şema.
OCPP 2.0.1 mimarisinde üç ana saldırı yüzeyi: yerel arayüz, taşıma katmanı ve backend güveni.
İçindekiler
  1. OCPP mimarisini 30 saniyede oturtalım
  2. 1. Katman — Fiziksel ve yerel arayüz
  3. 2. Katman — OCPP taşıma katmanı
  4. 3. Katman — Backend güveni ve komut kötüye kullanımı
  5. Savunma tarafı: ne yapılmalı
  6. Adli bilişim açısı
  7. Kapanış

Türkiye’de elektrikli araç şarj altyapısı son birkaç yılda katlanarak büyüdü. Cadde başındaki her AC/DC şarj ünitesinin arkasında, çoğu zaman görünmeyen bir protokol çalışıyor: OCPP (Open Charge Point Protocol). Şarj istasyonu ile onu yöneten merkezî sistem (CSMS) arasındaki tüm konuşma bu protokol üzerinden geçiyor — kimin ne zaman ne kadar şarj aldığı, faturalandırma, uzaktan başlat/durdur, firmware güncellemesi.

OCPP’nin ilk sürümleri güvenliği neredeyse hiç düşünmeden tasarlandı. 2.0.1 ile birlikte tabloya güvenlik profilleri, TLS ve sertifika yönetimi girdi. Ama sahada gördüğüm gerçek şu: standardın “yapabilirsin” dediği güvenlik önlemleri, uygulamada çoğu zaman “yapılmamış” durumda. Bu yazıda protokolü bir saldırganın gözünden, üç katmanlı bir saldırı yüzeyi olarak inceliyoruz.

OCPP mimarisini 30 saniyede oturtalım

Zincir üç halkadan oluşuyor: elektrikli araç → şarj istasyonu (Charge Point) → CSMS (backend). Araç ile istasyon arasındaki konuşma ISO 15118 / güç hattı iletişimi tarafında; istasyon ile backend arasındaki konuşma ise OCPP tarafında yürüyor. OCPP 2.0.1, taşıma katmanı olarak WebSocket (ws / wss) kullanır ve mesajlar JSON formatındadır.

Kritik nokta: şarj istasyonu genelde bir gömülü Linux ya da RTOS cihazıdır. Yani karşımızda hem bir ağ istemcisi, hem bir gömülü cihaz, hem de para akışına dokunan bir uç nokta var. Üçünün kesişimi de saldırı yüzeyini büyütüyor.

1. Katman — Fiziksel ve yerel arayüz

Şarj istasyonu, kilitli bir kabinin içinde bile olsa “fiziksel olarak erişilemez” değildir. Sahada en sık karşılaşılan zayıflıklar:

  • Açıkta bırakılmış debug/servis portları (UART, JTAG) ve şifresiz servis menüleri
  • Firmware’i doğrudan barındıran, çıkarılabilir SD kart veya eMMC
  • Servis moduna geçince kullanıcı adı/parola sormayan bakım arayüzleri

Bu katman ele geçirildiğinde saldırgan yalnızca tek bir istasyonu değil, o istasyona gömülü CSMS bağlantı bilgilerini, sertifikaları ve anahtarları da elde eder. Bir istasyondan çıkarılan kimlik bilgisi, tüm filoya sızmanın kapısı olabilir.

2. Katman — OCPP taşıma katmanı

OCPP 2.0.1 üç güvenlik profili tanımlar: yalnızca temel kimlik doğrulama, TLS + temel kimlik doğrulama, ve TLS + istemci sertifikası (mTLS). Standart en güçlü profili önerir ama zorunlu kılmaz. Pratikte gördüklerim:

  • Bağlantının hâlâ şifresiz ws:// üzerinden kurulması
  • TLS kullanılsa bile istemci tarafında sertifika doğrulamasının atlanması (self-signed kabul etme)
  • Sabit kodlanmış ya da tüm filoda ortak paylaşılan kimlik bilgileri

Şifresiz veya doğrulamasız bir bağlantı, klasik bir ortadaki adam (MITM) senaryosuna kapı açar. Saldırgan araya girip mesajları okuyabilir, faturalandırma verisini manipüle edebilir veya sahte komutlar enjekte edebilir.

3. Katman — Backend güveni ve komut kötüye kullanımı

OCPP çift yönlü bir protokoldür: CSMS istasyona komut gönderebilir. RequestStartTransaction, RequestStopTransaction, Reset, UpdateFirmware, SetVariables gibi mesajlar bunlardan bazıları. Eğer saldırgan sahte bir CSMS gibi davranabiliyor ya da gerçek CSMS’e komut enjekte edebiliyorsa:

  • İstasyonu uzaktan durdurup hizmet dışı bırakabilir (DoS)
  • Zararlı firmware yükleme akışını tetikleyebilir
  • Yapılandırma değişkenlerini değiştirerek istasyonu güvenlik profili düşük bir moda çekebilir

Buradaki asıl risk tek bir istasyon değil, ölçektir. Merkezî sisteme güvenerek çalışan yüzlerce istasyon, backend güveni kırıldığında aynı anda etkilenebilir.

Savunma tarafı: ne yapılmalı

Bir güvenlik analizi, çözüm önermeden yarım kalır. Öncelik sırasıyla:

  1. mTLS’i zorunlu kıl — istemci sertifikası olmadan bağlantı kabul etme.
  2. Sertifika sabitleme (pinning) ve düzgün bir PKI/sertifika rotasyonu kur.
  3. Güvenli boot ve şifreli depolama ile yerel arayüzden anahtar sızmasını engelle.
  4. Komut yetkilendirmesi: her OCPP komutunun kaynağını ve yetkisini doğrula.
  5. Backend tarafında anomali tespiti: aynı istasyondan olağan dışı komut/işlem paternlerini izle.

Adli bilişim açısı

Bir şarj istasyonu olayında iş “saldırı oldu mu” sorusundan “ne oldu, ne zaman, hangi izle” sorusuna geçtiğinde adli bilişim devreye girer. OCPP tarafında işlem logları, mesaj zaman damgaları ve firmware güncelleme kayıtları birer delildir. Gömülü cihaz tarafında ise uçucu bellek, NVRAM ve yapılandırma bölümü incelenmesi gereken artefaktlardır. OT/gömülü sistemlerde klasik disk imajı almak çoğu zaman mümkün olmadığından, canlı analiz ve seçici delil toplama öne çıkar — bu konuya serinin ayrı bir yazısında gireceğim.

Kapanış

OCPP 2.0.1 aslında ihtiyacımız olan güvenlik araçlarının çoğunu içeriyor. Sorun protokolde değil, uygulama ve konfigürasyonda. “Standart destekliyor” ile “sahada açık” arasındaki fark, tam da savunma yapan mühendisin doldurması gereken boşluk. Bu boşluğu görmek için de protokolü hem gömülü hem ağ hem de operasyonel açıdan aynı anda okumak gerekiyor.

Bir sonraki yazıda benzer bir “güvenlik sonradan eklendi” hikâyesini bu kez OT dünyasının en yaygın protokolü Modbus üzerinden anlatacağım.


Bu içerik eğitim ve savunma amaçlıdır. Anlatılan zafiyetler gerçek sistemlere yönelik bir saldırı reçetesi değil, savunma ve adli analiz için farkındalık amacıyla ele alınmıştır.