• 17-05-2026, 11:14:09
    #1

    🖥️ OXware Hypervisor Nedir?
    OXware, KVM/libvirt tabanlı, tamamen açık kaynaklı bir sanallaştırma yönetim platformudur. Tek bir web arayüzünden onlarca sanal makineyi yönetmek, izlemek ve güvence altına almak için tasarlandı. VMware vSphere veya Proxmox'un sunduğu kurumsal özelliklerin tamamını açık kaynak koduyla, kendi sunucunuzda çalıştırın. Ana konuya buradan ulaşabilirsiniz.


    Peki bu güncelleme nedir? Ne eklendi, ne çıkarıldı? Tek tek listeleyelim.
    Sanallaştırma
    • KVM/QEMU motoru üzerine kurulu, tam donanım sanallaştırma
    • VM oluştur, başlat, durdur, klonla, sil — tek ekrandan
    • Anlık snapshot alma ve geri yükleme
    • Canlı disk taşıma (VM çalışırken başka havuza geçir)
    • USB ve PCI/GPU passthrough desteği
    • SPICE ve VNC konsol erişimi


    Otomasyon & AI
    • Doğal dil ile VM yönetimi — "2 vCPU 4GB RAM Ubuntu kur" yaz, AI halleder
    • Kapasite tahmini — kaç gün sonra dolarsın, önceden bil
    • Anomali dedektörü — anormal CPU/RAM davranışını otomatik yakala
    • Zamanlanmış VM işlemleri — belirli günlerde otomatik başlat/durdur
    • Auto-scaler — CPU eşiği aşılınca vCPU'yu otomatik artır


    Güvenlik
    • RBAC — admin / operator / viewer rol hiyerarşisi, 52 korumalı endpoint
    • 2FA (TOTP) desteği
    • LDAP / Active Directory entegrasyonu
    • Kimlik bilgisi Vault — Fernet şifreleme ile SSH/RDP/API key saklama
    • Penetrasyon testi ve güvenlik denetimi yerleşik
    • CVE takibi — kurulu paketlerinizin bilinen açıklarını listele
    • IP allowlist, oturum yönetimi, audit log



    • nftables güvenlik duvarı yönetimi
    • Suricata tabanlı IDS/IPS
    • Network QoS — VM başına bant genişliği kısıtlama
    • SDN (OVS), VLAN, VPN yönetimi
    • DNS Watchdog — kritik domainleri sürekli izle


    Altyapı
    • Kaynak havuzları — VM gruplarına CPU/RAM kotası
    • Maliyet takibi — VM başına aylık tahmini harcama
    • Terraform provider — oxware_vm resource ile IaC desteği
    • 300+ REST endpoint, Swagger/OpenAPI dokümantasyonu
    • Prometheus metrikleri, webhook alert entegrasyonu


    🆕 Son Güncellemeler (v2.3)
    Bu sürümde 49 yeni özellik ve iyileştirme eklendi:
    AI: Kapasite tahmini, NL komutları, hazır mesaj butonları, AI ajan cron sistemi
    VM: Cloud-init NoCloud ISO (hostname/SSH key/kullanıcı otomatik yapılandırma)
    Donanım: USB Passthrough backend + tabbed PCI/USB modal
    İzleme: VM detayında gerçek RAM kullanımı ve disk boyutu gösterimi
    Ağ: Network QoS UI kartı, Storage Migration UI kartı
    Güvenlik: Hook scripts, LDAP, vault, alert kuralları, pen test
    Dashboard: Sürükle-bırak widget sıralama, global arama (Ctrl+K), klavye kısayolları
    Altyapı: Terraform provider (Go), Swagger nav linki, RBAC
    Bug Fix: Suricata tespiti, firewall badge, kapasite tahmini URL, drag-and-drop
    Zaafiyet: OMERATI-2026-001 açığı tamamen kapatılmıştır.

    🚀 Kurulum
    git clone https://github.com/ShinnAsukha/oxware-hypervisor
    cd oxware-hypervisor/oxware
    sudo bash install.sh
    Hali hazırda kurulu OXware sisteminiz var ise,
    sudo oxupdate
    komutu ile sistemi güncelleyebilirsiniz.

    Gereksinimler: Python 3.10+, KVM/libvirt, nftables, Suricata (opsiyonel)

    🔗 Bağlantılar



    Olumlu & Olumsuz tüm yorumlarınızı bekliyoruz, sistemimiz günden güne daha çok geliştirilmektedir. Ayrıca sistemin donanımsal ve yazılımsal desteği Claude Sonnet 4.6 ile alınmıştır.
  • 17-05-2026, 11:58:45
    #2
    @adagursoy; proje güzel fakat bir kaç noktada dikkatimi çeken birşey oldu olumlu olumsuz yorum olarak ben ikisinide tercih ediyorum olumlu tarafı güzel fikir güzel çalışma olumsuz tarafa gelirsek
    backend/app.py dosyasına bir göz gezdirdim VNC açığı tespit ettim kritiklik seviyesi yüksek çünkü dış erişim
    POST /api/auth/login (viewer hesabı)
    burda jwt alır GET /api/vms (Authorization: Bearer JWT) gibi require_role yok sadece require_auth geldigi için wss://host:8006/ws/vnc/<BAŞKA_VM_UUID>?token=<JWT> gibi oluşturup vnc_ws_middleware sızıntı yapar ve decode_token rahatlıkla geçer çünkü vm yetki kontrolu yok vm_id = libvirt içerdesin
    fonksiyon _vnc_ws_middleware bu
    const wsProto = (location.protocol === "https:") ? "wss" : "ws";
    const wsUrl = `${wsProto}://${location.host}/ws/vnc/${_vmId}?token=${encodeURIComponent(_token)}`;
    sunucu asla bunu sorgulamadan kabul ediyor

    /vnc_console/aaaaaaaa-bbbb gibi
    decode_token(token) imza ve süre tamamsa geç identity kullanıcı adı sorulmuyor vm_id geliyor fakat kimin oldugu sorulmuyor geçerli JWT + geçerli vm_id = o VMin konsolu başka kullanıcıya ait olsa da aynı

    vm uid /api/vms ile yetki kontrol edilmeden alınıyor herhangi UUID ile VNC portu öğrenilebilir const wsUrl = `${wsProto}://${location.host}/ws/vnc/${_vmId}?token=${encodeURIComponent(_token)}`; yani doğru kontrol bir endpointte var asıl vnc tünelinde yok

    POST https://192.168.1.10:8006/api/auth/login
    Content-Type: application/json
    {"username": "izleyici", "password": "Izleyici123!"}
    Yanıt örneği:
    {"status": "ok", "token": "eyJhbGciOiJIUzI1NiIs...", "username": "izleyici"}
    Tüm VM UUID’leri
    GET https://192.168.1.10:8006/api/vms
    Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
    örnek:
    {
    "status": "ok",
    "vms": [
    {"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "musteri-db", "state": "running"},
    {"id": "f9e8d7c6-b5a4-3210-fedc-ba0987654321", "name": "ic-erp", "state": "running"}
    ]
    }
    örnek verdigim izleyici bu VMlere sahip değil yine de listelenir
    başkasının vmsine VNC
    tarayıcıda veya wscat ile
    wss://192.168.1.10:8006/ws/vnc/a1b2c3d4-e5f6-7890-abcd-ef1234567890?token=eyJhbGciOiJIUzI1NiIs...
    veya UI:
    https://192.168.1.10:8006/vnc_consol...d-ef1234567890
    (localStorage’da oxware_token = izleyici JWT ise sayfa açılır ve WS bağlanır)

    kısaca rol fark etmiyor tek şart geçerli JWT anahtar kelime JWT
    geçerli JWTsi olan her kullanıcı URLdeki herhangi bir vm_id ile /ws/vnc/<vm_id> üzerinden o sanal makinenin vnc oturumuna tam erişim alır sunucu kullanıcı–VM eşlemesini hiç kontrol etmez

    zafiyet no: OMERATI-2026-001
    cvss:
    9.4/10
    önem derecesi KRİTİK

    İlgili Kod satırı
        # ── Auth ──
        try:
            with app.app_context():
                from flask_jwt_extended import decode_token
                decode_token(token)
        except Exception as _e:
            log.warning("VNC WS: auth failed vm=%s: %s", vm_id, _e)
            start_response("401 Unauthorized", [("Content-Type", "text/plain")])
            return [b"Unauthorized"]
    ----
     # ── VNC port from libvirt XML ──
      try:
          import libvirt as _lv_vnc
          ...
          _dom  = _conn.lookupByUUIDString(vm_id)
          ...
          vnc_port = int(_vnc_el.get("port", -1)) if _vnc_el is not None else -1
          ...
      try:
          tcp = _egreen_socket.create_connection(("127.0.0.1", vnc_port), timeout=5)
  • 17-05-2026, 12:00:49
    #3
    OmerAti adlı üyeden alıntı: mesajı görüntüle
    @adagursoy; proje güzel fakat bir kaç noktada dikkatimi çeken birşey oldu olumlu olumsuz yorum olarak ben ikisinide tercih ediyorum olumlu tarafı güzel fikir güzel çalışma olumsuz tarafa gelirsek
    backend/app.py dosyasına bir göz gezdirdim VNC açığı tespit ettim kritiklik seviyesi yüksek çünkü dış erişim
    POST /api/auth/login (viewer hesabı)
    burda jwt alır GET /api/vms (Authorization: Bearer JWT) gibi require_role yok sadece require_auth geldigi için wss://host:8006/ws/vnc/<BAŞKA_VM_UUID>?token=<JWT> gibi oluşturup vnc_ws_middleware sızıntı yapar ve decode_token rahatlıkla geçer çünkü vm yetki kontrolu yok vm_id = libvirt içerdesin
    fonksiyon _vnc_ws_middleware bu
    const wsProto = (location.protocol === "https:") ? "wss" : "ws";
    const wsUrl = `${wsProto}://${location.host}/ws/vnc/${_vmId}?token=${encodeURIComponent(_token)}`;
    sunucu asla bunu sorgulamadan kabul ediyor

    /vnc_console/aaaaaaaa-bbbb gibi
    decode_token(token) imza ve süre tamamsa geç identity kullanıcı adı sorulmuyor vm_id geliyor fakat kimin oldugu sorulmuyor geçerli JWT + geçerli vm_id = o VMin konsolu başka kullanıcıya ait olsa da aynı

    vm uid /api/vms ile yetki kontrol edilmeden alınıyor herhangi UUID ile VNC portu öğrenilebilir const wsUrl = `${wsProto}://${location.host}/ws/vnc/${_vmId}?token=${encodeURIComponent(_token)}`; yani doğru kontrol bir endpointte var asıl vnc tünelinde yok

    POST https://192.168.1.10:8006/api/auth/login
    Content-Type: application/json
    {"username": "izleyici", "password": "Izleyici123!"}
    Yanıt örneği:
    {"status": "ok", "token": "eyJhbGciOiJIUzI1NiIs...", "username": "izleyici"}
    Tüm VM UUID’leri
    GET https://192.168.1.10:8006/api/vms
    Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
    örneğ:
    {
    "status": "ok",
    "vms": [
    {"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "musteri-db", "state": "running"},
    {"id": "f9e8d7c6-b5a4-3210-fedc-ba0987654321", "name": "ic-erp", "state": "running"}
    ]
    }
    örnek verdigim izleyici bu VMlere sahip değil yine de listelenir
    naşkasının vmsine VNC
    tarayıcıda veya wscat ile
    wss://192.168.1.10:8006/ws/vnc/a1b2c3d4-e5f6-7890-abcd-ef1234567890?token=eyJhbGciOiJIUzI1NiIs...
    veya UI:
    https://192.168.1.10:8006/vnc_consol...d-ef1234567890
    (localStorage’da oxware_token = izleyici JWT ise sayfa açılır ve WS bağlanır)

    kısaca rol fark etmiyor tek şart geçerli JWT anahtar kelime KWT
    geçerli JWTsi olan her kullanıcı URLdeki herhangi bir vm_id ile /ws/vnc/<vm_id> üzerinden o sanal makinenin vnc oturumuna tam erişim alır sunucu kullanıcı–VM eşlemesini hiç kontrol etmez

    zafiyet no: OMERATI-2026-001
    cvss:
    9.4/10
    önem derecesi KRİTİK

    İlgili Kod satırı
        # ── Auth ──
        try:
            with app.app_context():
                from flask_jwt_extended import decode_token
                decode_token(token)
        except Exception as _e:
            log.warning("VNC WS: auth failed vm=%s: %s", vm_id, _e)
            start_response("401 Unauthorized", [("Content-Type", "text/plain")])
            return [b"Unauthorized"]
    ----
     # ── VNC port from libvirt XML ──
      try:
          import libvirt as _lv_vnc
          ...
          _dom  = _conn.lookupByUUIDString(vm_id)
          ...
          vnc_port = int(_vnc_el.get("port", -1)) if _vnc_el is not None else -1
          ...
      try:
          tcp = _egreen_socket.create_connection(("127.0.0.1", vnc_port), timeout=5)
    Merhaba hocam değerli yorumunuz için çok teşekkür ederim, whatsapp üzerinden bana iletebilir misiniz? Güvenlik açığını bildirdiğiniz için çok teşekkürler https://wa.me/+905439769301

    edit: Açık tamamen kapatılmıştır, OXware sisteminin ilk güvenlik zaafiyeti olarak sistemimize kaydedilmiştir. OMERATI-2026-001
  • 17-05-2026, 12:02:45
    #4
    Merhaba hocam sanallaştırma nedir?
    ne işe yarıyor bilgim olmadığı için soruyorum.
  • 17-05-2026, 12:04:10
    #5
    İbrahimH adlı üyeden alıntı: mesajı görüntüle
    Merhaba hocam sanallaştırma nedir?
    ne işe yarıyor bilgim olmadığı için soruyorum.
    Merhaba hocam. Ana bir sunucuyu küçük parçalara bölerek kullanmak anlamına gelir, yani ana bir sunucu içerisinde tekli sunucular kurarak VPS/VDS (Paylaşımlı/Paylaşımsız) olarak sunabilmenize yardımcı oluyor.