Ana içeriğe atla

Güvenlik

Kişisel asistan güven modeli: bu kılavuz, her Gateway için tek bir güvenilir operatör sınırı olduğunu varsayar (tek kullanıcılı/kişisel asistan modeli). OpenClaw, birden fazla saldırgan kullanıcının tek bir agent/Gateway paylaşması için düşmanca çok kiracılı bir güvenlik sınırı değildir. Karma güven veya saldırgan kullanıcılarla çalışma gerekiyorsa, güven sınırlarını ayırın (ayrı Gateway + kimlik bilgileri, ideal olarak ayrı OS kullanıcıları/host’lar).
Bu sayfada: Güven modeli | Hızlı denetim | Sıkılaştırılmış temel yapılandırma | DM erişim modeli | Yapılandırma sıkılaştırma | Olay müdahalesi

Önce kapsam: kişisel asistan güvenlik modeli

OpenClaw güvenlik kılavuzu, bir kişisel asistan dağıtımını varsayar: tek bir güvenilir operatör sınırı, potansiyel olarak birçok agent.
  • Desteklenen güvenlik duruşu: her Gateway için tek bir kullanıcı/güven sınırı (tercihen her sınır için ayrı bir OS kullanıcısı/host/VPS).
  • Desteklenen bir güvenlik sınırı değildir: karşılıklı olarak güvenilmeyen veya saldırgan kullanıcılar tarafından paylaşılan tek bir Gateway/agent.
  • Saldırgan kullanıcı izolasyonu gerekiyorsa, güven sınırına göre ayırın (ayrı Gateway + kimlik bilgileri ve ideal olarak ayrı OS kullanıcıları/host’lar).
  • Birden fazla güvenilmeyen kullanıcı tek bir araç etkin agent’a mesaj gönderebiliyorsa, onları o agent için aynı devredilmiş araç yetkisini paylaşıyor olarak değerlendirin.
Bu sayfa, bu model içinde sıkılaştırmayı açıklar. Tek bir paylaşılan Gateway üzerinde düşmanca çok kiracılı izolasyon iddiasında bulunmaz.

Hızlı kontrol: openclaw security audit

Ayrıca bakın: Biçimsel Doğrulama (Güvenlik Modelleri) Bunu düzenli olarak çalıştırın (özellikle yapılandırmayı değiştirdikten veya ağ yüzeylerini açtıktan sonra):
openclaw security audit
openclaw security audit --deep
openclaw security audit --fix
openclaw security audit --json
security audit --fix kasıtlı olarak dar kapsamlı kalır: yaygın açık grup politikalarını allowlist’lere çevirir, logging.redactSensitive: "tools" ayarını geri yükler, durum/yapılandırma/include dosyası izinlerini sıkılaştırır ve Windows üzerinde çalışırken POSIX chmod yerine Windows ACL sıfırlamalarını kullanır. Yaygın riskli yapılandırmaları işaretler (Gateway kimlik doğrulama maruziyeti, tarayıcı kontrolü maruziyeti, yükseltilmiş allowlist’ler, dosya sistemi izinleri, gevşek exec onayları ve açık kanal araç maruziyeti). OpenClaw hem bir ürün hem de bir deneydir: frontier model davranışını gerçek mesajlaşma yüzeylerine ve gerçek araçlara bağlıyorsunuz. “Mükemmel güvenli” bir kurulum yoktur. Amaç şu konularda bilinçli olmaktır:
  • botunuzla kimler konuşabilir
  • botun nerede işlem yapmasına izin verilir
  • bot nelerle etkileşime geçebilir
Çalışmaya devam eden en küçük erişimle başlayın, sonra güven kazandıkça genişletin.

Dağıtım ve host güveni

OpenClaw, host ve yapılandırma sınırının güvenilir olduğunu varsayar:
  • Birisi Gateway host durumunu/yapılandırmasını (openclaw.json dahil ~/.openclaw) değiştirebiliyorsa, onu güvenilir bir operatör olarak değerlendirin.
  • Karşılıklı olarak güvenilmeyen/saldırgan operatörler için tek bir Gateway çalıştırmak önerilen bir kurulum değildir.
  • Karma güvene sahip ekipler için, güven sınırlarını ayrı Gateway’lerle (veya en azından ayrı OS kullanıcıları/host’larla) ayırın.
  • Önerilen varsayılan: makine/host (veya VPS) başına bir kullanıcı, bu kullanıcı için bir Gateway ve bu Gateway içinde bir veya daha fazla agent.
  • Tek bir Gateway örneği içinde, kimliği doğrulanmış operatör erişimi kullanıcı başına kiracı rolü değil, güvenilir bir kontrol düzlemi rolüdür.
  • Oturum tanımlayıcıları (sessionKey, oturum kimlikleri, etiketler) yetkilendirme belirteçleri değil, yönlendirme seçicileridir.
  • Birkaç kişi tek bir araç etkin agent’a mesaj gönderebiliyorsa, her biri aynı izin kümesini yönlendirebilir. Kullanıcı başına oturum/bellek izolasyonu gizliliğe yardımcı olur, ancak paylaşılan bir agent’ı kullanıcı başına host yetkilendirmesine dönüştürmez.

Paylaşılan Slack çalışma alanı: gerçek risk

“Eğer Slack’te herkes bot’a mesaj gönderebiliyorsa”, temel risk devredilmiş araç yetkisidir:
  • izin verilen herhangi bir gönderici, agent politikasında exec, tarayıcı, ağ/dosya araçları gibi araç çağrılarını tetikleyebilir;
  • bir göndericiden gelen prompt/içerik enjeksiyonu, paylaşılan durumu, cihazları veya çıktıları etkileyen eylemlere neden olabilir;
  • tek bir paylaşılan agent hassas kimlik bilgilerine/dosyalara sahipse, izin verilen herhangi bir gönderici araç kullanımıyla veri sızdırmayı potansiyel olarak yönlendirebilir.
Ekip iş akışları için en az araçla ayrı agent’lar/Gateway’ler kullanın; kişisel veri agent’larını özel tutun.

Şirket tarafından paylaşılan agent: kabul edilebilir desen

Bu, o agent’ı kullanan herkes aynı güven sınırı içinde olduğunda (örneğin bir şirket ekibi) ve agent kesin biçimde iş kapsamıyla sınırlı olduğunda kabul edilebilir.
  • bunu ayrılmış bir makine/VM/container üzerinde çalıştırın;
  • bu çalışma zamanı için ayrılmış bir OS kullanıcısı + ayrılmış tarayıcı/profil/hesaplar kullanın;
  • bu çalışma zamanında kişisel Apple/Google hesapları veya kişisel parola yöneticisi/tarayıcı profilleriyle oturum açmayın.
Kişisel ve şirket kimliklerini aynı çalışma zamanında karıştırırsanız, ayrımı ortadan kaldırır ve kişisel veri maruziyeti riskini artırırsınız.

Gateway ve Node güven kavramı

Gateway ve Node’u farklı rollere sahip tek bir operatör güven alanı olarak değerlendirin:
  • Gateway kontrol düzlemi ve politika yüzeyidir (gateway.auth, araç politikası, yönlendirme).
  • Node, bu Gateway ile eşleştirilmiş uzak yürütme yüzeyidir (komutlar, cihaz eylemleri, host yerel yetenekleri).
  • Gateway’ye kimliği doğrulanmış bir çağıran, Gateway kapsamında güvenilir kabul edilir. Eşleştirmeden sonra Node eylemleri, o Node üzerinde güvenilir operatör eylemleridir.
  • sessionKey, kullanıcı başına kimlik doğrulama değil, yönlendirme/bağlam seçimidir.
  • Exec onayları (allowlist + ask), düşmanca çok kiracılı izolasyon değil, operatör niyeti için korumalardır.
  • Güvenilir tek operatörlü kurulumlar için OpenClaw ürün varsayılanı, gateway/node üzerinde host exec’in onay istemleri olmadan izinli olmasıdır (security="full", siz sıkılaştırmadıkça ask="off"). Bu varsayılan, tek başına bir güvenlik açığı değil, kasıtlı bir UX tercihidir.
  • Exec onayları tam istek bağlamına ve en iyi çabayla doğrudan yerel dosya operand’larına bağlanır; her çalışma zamanı/interpreter yükleyici yolunu anlamsal olarak modellemez. Güçlü sınırlar için sandboxing ve host izolasyonu kullanın.
Düşmanca kullanıcı izolasyonu gerekiyorsa, güven sınırlarını OS kullanıcısı/host bazında ayırın ve ayrı Gateway’ler çalıştırın.

Güven sınırı matrisi

Riski değerlendirirken bunu hızlı model olarak kullanın:
Sınır veya denetimAnlamıYaygın yanlış yorum
gateway.auth (token/password/trusted-proxy/device auth)Çağıranların Gateway API’lerine kimliğini doğrular”Güvenli olması için her frame üzerinde kullanıcı başına imza gerekir”
sessionKeyBağlam/oturum seçimi için yönlendirme anahtarı”Session key bir kullanıcı kimlik doğrulama sınırıdır”
Prompt/içerik korumalarıModel kötüye kullanım riskini azaltır”Tek başına prompt injection, kimlik doğrulama atlatmasını kanıtlar”
canvas.eval / browser evaluateEtkinleştirildiğinde kasıtlı operatör yeteneği”Her JS eval primitifi bu güven modelinde otomatik olarak bir açıktır”
Yerel TUI ! shellAçık operatör tetiklemeli yerel yürütme”Yerel shell kolaylık komutu uzak enjeksiyondur”
Node eşleştirme ve Node komutlarıEşleştirilmiş cihazlarda operatör düzeyinde uzak yürütme”Uzak cihaz kontrolü varsayılan olarak güvenilmeyen kullanıcı erişimi sayılmalıdır”

Tasarım gereği güvenlik açığı olmayanlar

Bu desenler sık rapor edilir ve gerçek bir sınır atlatması gösterilmediği sürece genellikle işlem yapılmadan kapatılır:
  • Politika/kimlik doğrulama/sandbox atlatması olmadan yalnızca prompt injection zincirleri.
  • Tek bir paylaşılan host/yapılandırma üzerinde düşmanca çok kiracılı çalışma varsayan iddialar.
  • Normal operatör okuma yolu erişimini (örneğin sessions.list/sessions.preview/chat.history) paylaşılan Gateway kurulumunda IDOR olarak sınıflandıran iddialar.
  • Yalnızca localhost dağıtımı bulguları (örneğin yalnızca loopback Gateway üzerinde HSTS).
  • Bu depoda bulunmayan gelen yollar için Discord inbound Webhook imza bulguları.
  • system.run için gerçek yürütme sınırı hâlâ Gateway’nin genel Node komut politikası ve Node’un kendi exec onaylarıyken, Node eşleştirme meta verilerini ikinci, gizli bir komut başına onay katmanı olarak ele alan raporlar.
  • sessionKey’i bir kimlik doğrulama belirteci olarak gören “kullanıcı başına yetkilendirme eksik” bulguları.

Araştırmacı ön kontrol listesi

Bir GHSA açmadan önce bunların hepsini doğrulayın:
  1. Yeniden üretim en güncel main veya en son sürümde hâlâ çalışıyor.
  2. Rapor tam kod yolunu (file, function, line range) ve test edilen sürümü/commit’i içeriyor.
  3. Etki belgelenmiş bir güven sınırını aşıyor (yalnızca prompt injection değil).
  4. İddia Kapsam Dışı bölümünde listelenmemiş.
  5. Mevcut advisory’ler tekrar açısından kontrol edildi (uygunsa kanonik GHSA yeniden kullanıldı).
  6. Dağıtım varsayımları açıkça belirtilmiş (loopback/yerel vs açıkta, güvenilir vs güvenilmeyen operatörler).

60 saniyede sıkılaştırılmış temel yapılandırma

Önce bu temel yapılandırmayı kullanın, sonra güvenilir agent başına araçları seçerek yeniden etkinleştirin:
{
  gateway: {
    mode: "local",
    bind: "loopback",
    auth: { mode: "token", token: "replace-with-long-random-token" },
  },
  session: {
    dmScope: "per-channel-peer",
  },
  tools: {
    profile: "messaging",
    deny: ["group:automation", "group:runtime", "group:fs", "sessions_spawn", "sessions_send"],
    fs: { workspaceOnly: true },
    exec: { security: "deny", ask: "always" },
    elevated: { enabled: false },
  },
  channels: {
    whatsapp: { dmPolicy: "pairing", groups: { "*": { requireMention: true } } },
  },
}
Bu, Gateway’yi yalnızca yerel tutar, DM’leri izole eder ve kontrol düzlemi/çalışma zamanı araçlarını varsayılan olarak devre dışı bırakır.

Paylaşılan gelen kutusu hızlı kuralı

Birden fazla kişi botunuza DM gönderebiliyorsa:
  • session.dmScope: "per-channel-peer" ayarlayın (veya çok hesaplı kanallar için "per-account-channel-peer").
  • dmPolicy: "pairing" veya katı allowlist’leri koruyun.
  • Paylaşılan DM’leri asla geniş araç erişimiyle birleştirmeyin.
  • Bu, iş birlikçi/paylaşılan gelen kutularını sıkılaştırır, ancak kullanıcılar host/yapılandırma yazma erişimini paylaştığında düşmanca ortak kiracı izolasyonu için tasarlanmamıştır.

Bağlam görünürlüğü modeli

OpenClaw iki kavramı ayırır:
  • Tetikleme yetkilendirmesi: agent’ı kimlerin tetikleyebileceği (dmPolicy, groupPolicy, allowlist’ler, mention kapıları).
  • Bağlam görünürlüğü: model girdisine hangi ek bağlamın enjekte edildiği (yanıt gövdesi, alıntılanan metin, thread geçmişi, iletilen meta veriler).
Allowlist’ler tetikleyicileri ve komut yetkilendirmesini sınırlar. contextVisibility ayarı, ek bağlamın (alıntılanan yanıtlar, thread kökleri, getirilen geçmiş) etkin allowlist kontrolleri tarafından izin verilen göndericilere göre nasıl filtreleneceğini kontrol eder:
  • contextVisibility: "all" (varsayılan), ek bağlamı alındığı gibi korur.
  • contextVisibility: "allowlist", ek bağlamı etkin allowlist kontrolleri tarafından izin verilen göndericilerle sınırlar.
  • contextVisibility: "allowlist_quote", allowlist gibi davranır, ancak tek bir açıkça alıntılanmış yanıtı yine de korur.
contextVisibility ayarını kanal başına veya oda/konuşma başına yapın. Kurulum ayrıntıları için Grup Sohbetleri bölümüne bakın. Advisory değerlendirme kılavuzu:
  • Yalnızca “model, allowlist’te olmayan göndericilerden alıntılanmış veya geçmiş metni görebiliyor” gösteren iddialar, kendi başına kimlik doğrulama veya sandbox sınırı atlatması değil, contextVisibility ile ele alınabilecek sıkılaştırma bulgularıdır.
  • Güvenlik etkisi taşıması için raporların yine de gösterilmiş bir güven sınırı atlatması (kimlik doğrulama, politika, sandbox, onay veya belgelenmiş başka bir sınır) içermesi gerekir.

Denetimin kontrol ettiği şeyler (yüksek seviye)

  • Gelen erişim (dmPolicy, grup politikaları, allowlist’ler): yabancılar botu tetikleyebilir mi?
  • Araç etki alanı (yükseltilmiş araçlar + açık odalar): prompt injection, shell/dosya/ağ eylemlerine dönüşebilir mi?
  • Exec onay kayması (security=full, autoAllowSkills, strictInlineEval olmadan interpreter allowlist’leri): host-exec korumaları hâlâ sandığınız şeyi mi yapıyor?
    • security="full" geniş kapsamlı bir duruş uyarısıdır, bir hatanın kanıtı değildir. Güvenilir kişisel asistan kurulumları için seçilmiş varsayılandır; yalnızca tehdit modeliniz onay veya allowlist korumaları gerektiriyorsa sıkılaştırın.
  • Ağ maruziyeti (Gateway bind/auth, Tailscale Serve/Funnel, zayıf/kısa auth token’ları).
  • Tarayıcı kontrol maruziyeti (uzak Node’lar, relay port’ları, uzak CDP uç noktaları).
  • Yerel disk hijyeni (izinler, symlink’ler, yapılandırma include’ları, “senkronize klasör” yolları).
  • Plugin’ler (açık bir allowlist olmadan uzantılar mevcut).
  • Politika kayması/yanlış yapılandırma (sandbox docker ayarları yapılandırılmış ama sandbox modu kapalı; gateway.nodes.denyCommands desenleri etkisiz çünkü eşleştirme yalnızca tam komut adıyla yapılır (örneğin system.run) ve shell metnini incelemez; tehlikeli gateway.nodes.allowCommands girdileri; genel tools.profile="minimal" ayarının agent başına profillerle geçersiz kılınması; gevşek araç politikası altında erişilebilir uzantı Plugin araçları).
  • Çalışma zamanı beklenti kayması (örneğin tools.exec.host artık varsayılan olarak auto iken örtük exec’in hâlâ sandbox anlamına geldiğini varsaymak veya sandbox modu kapalıyken açıkça tools.exec.host="sandbox" ayarlamak).
  • Model hijyeni (yapılandırılmış modeller eski görünüyorsa uyarır; katı bir engel değildir).
--deep ile çalıştırırsanız, OpenClaw ayrıca en iyi çabayla canlı bir Gateway probu yapmaya çalışır.

Kimlik bilgisi depolama haritası

Bunu erişimi denetlerken veya neyin yedekleneceğine karar verirken kullanın:
  • WhatsApp: ~/.openclaw/credentials/whatsapp/<accountId>/creds.json
  • Telegram bot token: yapılandırma/env veya channels.telegram.tokenFile (yalnızca normal dosya; symlink’ler reddedilir)
  • Discord bot token: yapılandırma/env veya SecretRef (env/file/exec sağlayıcıları)
  • Slack token’ları: yapılandırma/env (channels.slack.*)
  • Eşleştirme allowlist’leri:
    • ~/.openclaw/credentials/<channel>-allowFrom.json (varsayılan hesap)
    • ~/.openclaw/credentials/<channel>-<accountId>-allowFrom.json (varsayılan olmayan hesaplar)
  • Model auth profilleri: ~/.openclaw/agents/<agentId>/agent/auth-profiles.json
  • Dosya tabanlı secret payload’u (isteğe bağlı): ~/.openclaw/secrets.json
  • Eski OAuth içe aktarma: ~/.openclaw/credentials/oauth.json

Güvenlik denetimi kontrol listesi

Denetim bulgular yazdırdığında, bunu öncelik sırası olarak değerlendirin:
  1. Herhangi bir “open” + araçlar etkin: önce DM’leri/grupları kilitleyin (eşleştirme/allowlist’ler), sonra araç politikasını/sandboxing’i sıkılaştırın.
  2. Genel ağ maruziyeti (LAN bind, Funnel, eksik auth): hemen düzeltin.
  3. Tarayıcı kontrolünün uzaktan maruziyeti: bunu operatör erişimi gibi değerlendirin (yalnızca tailnet, Node’ları bilinçli şekilde eşleştirin, genel maruziyetten kaçının).
  4. İzinler: durum/yapılandırma/kimlik bilgileri/auth dosyalarının grup/dünya tarafından okunabilir olmadığından emin olun.
  5. Plugin’ler/uzantılar: yalnızca açıkça güvendiğiniz şeyleri yükleyin.
  6. Model seçimi: araçları olan herhangi bir bot için modern, talimata karşı daha dayanıklı modelleri tercih edin.

Güvenlik denetimi sözlüğü

Gerçek dağıtımlarda büyük olasılıkla göreceğiniz yüksek sinyalli checkId değerleri (kapsamlı değildir):
checkIdÖnem derecesiNeden önemliBirincil düzeltme anahtarı/yoluOtomatik düzeltme
fs.state_dir.perms_world_writablekritikDiğer kullanıcılar/süreçler tüm OpenClaw durumunu değiştirebilir~/.openclaw üzerindeki dosya sistemi izinlerievet
fs.state_dir.perms_group_writableuyarıGrup kullanıcıları tüm OpenClaw durumunu değiştirebilir~/.openclaw üzerindeki dosya sistemi izinlerievet
fs.state_dir.perms_readableuyarıDurum dizini başkaları tarafından okunabilir~/.openclaw üzerindeki dosya sistemi izinlerievet
fs.state_dir.symlinkuyarıDurum dizini hedefi başka bir güven sınırına dönüşürdurum dizini dosya sistemi düzenihayır
fs.config.perms_writablekritikBaşkaları auth/araç politikası/yapılandırmayı değiştirebilir~/.openclaw/openclaw.json üzerindeki dosya sistemi izinlerievet
fs.config.symlinkuyarıYapılandırma hedefi başka bir güven sınırına dönüşüryapılandırma dosyası dosya sistemi düzenihayır
fs.config.perms_group_readableuyarıGrup kullanıcıları yapılandırma token’larını/ayarlarını okuyabiliryapılandırma dosyasındaki dosya sistemi izinlerievet
fs.config.perms_world_readablekritikYapılandırma token’ları/ayarları açığa çıkarabiliryapılandırma dosyasındaki dosya sistemi izinlerievet
fs.config_include.perms_writablekritikYapılandırma include dosyası başkaları tarafından değiştirilebiliropenclaw.json içinden başvurulan include dosyası izinlerievet
fs.config_include.perms_group_readableuyarıGrup kullanıcıları include edilen secret’ları/ayarları okuyabiliropenclaw.json içinden başvurulan include dosyası izinlerievet
fs.config_include.perms_world_readablekritikInclude edilen secret’lar/ayarlar herkes tarafından okunabiliropenclaw.json içinden başvurulan include dosyası izinlerievet
fs.auth_profiles.perms_writablekritikBaşkaları saklanan model kimlik bilgilerini enjekte edebilir veya değiştirebiliragents/<agentId>/agent/auth-profiles.json izinlerievet
fs.auth_profiles.perms_readableuyarıBaşkaları API anahtarlarını ve OAuth token’larını okuyabiliragents/<agentId>/agent/auth-profiles.json izinlerievet
fs.credentials_dir.perms_writablekritikBaşkaları kanal eşleştirme/kimlik bilgisi durumunu değiştirebilir~/.openclaw/credentials üzerindeki dosya sistemi izinlerievet
fs.credentials_dir.perms_readableuyarıBaşkaları kanal kimlik bilgisi durumunu okuyabilir~/.openclaw/credentials üzerindeki dosya sistemi izinlerievet
fs.sessions_store.perms_readableuyarıBaşkaları oturum transkriptlerini/meta verilerini okuyabiliroturum deposu izinlerievet
fs.log_file.perms_readableuyarıBaşkaları redakte edilmiş ama yine de hassas log’ları okuyabilirGateway log dosyası izinlerievet
fs.synced_diruyarıiCloud/Dropbox/Drive içindeki durum/yapılandırma token/transkript maruziyetini artırıryapılandırma/durumu senkronize klasörlerin dışına taşıyınhayır
gateway.bind_no_authkritikPaylaşılan secret olmadan uzak bindgateway.bind, gateway.auth.*hayır
gateway.loopback_no_authkritikTers proxy arkasındaki loopback kimlik doğrulamasız hâle gelebilirgateway.auth.*, proxy kurulumuhayır
gateway.trusted_proxies_missinguyarıTers proxy header’ları mevcut ama güvenilir olarak işaretlenmemişgateway.trustedProxieshayır
gateway.http.no_authuyarı/kritikGateway HTTP API’lerine auth.mode="none" ile erişilebilirgateway.auth.mode, gateway.http.endpoints.*hayır
gateway.http.session_key_override_enabledbilgiHTTP API çağıranları sessionKey değerini geçersiz kılabilirgateway.http.allowSessionKeyOverridehayır
gateway.tools_invoke_http.dangerous_allowuyarı/kritikHTTP API üzerinden tehlikeli araçları yeniden etkinleştirirgateway.tools.allowhayır
gateway.nodes.allow_commands_dangerousuyarı/kritikYüksek etkili Node komutlarını etkinleştirir (kamera/ekran/kişiler/takvim/SMS)gateway.nodes.allowCommandshayır
gateway.nodes.deny_commands_ineffectiveuyarıDesen benzeri deny girdileri shell metniyle veya gruplarla eşleşmezgateway.nodes.denyCommandshayır
gateway.tailscale_funnelkritikGenel internete açık maruziyetgateway.tailscale.modehayır
gateway.tailscale_servebilgiTailnet maruziyeti Serve üzerinden etkingateway.tailscale.modehayır
gateway.control_ui.allowed_origins_requiredkritikAçık browser-origin allowlist olmadan loopback dışı Control UIgateway.controlUi.allowedOriginshayır
gateway.control_ui.allowed_origins_wildcarduyarı/kritikallowedOrigins=["*"] browser-origin allowlist kullanımını devre dışı bırakırgateway.controlUi.allowedOriginshayır
gateway.control_ui.host_header_origin_fallbackuyarı/kritikHost-header origin fallback’i etkinleştirir (DNS rebinding sıkılaştırmasını düşürür)gateway.controlUi.dangerouslyAllowHostHeaderOriginFallbackhayır
gateway.control_ui.insecure_authuyarıGüvensiz auth uyumluluk anahtarı etkingateway.controlUi.allowInsecureAuthhayır
gateway.control_ui.device_auth_disabledkritikCihaz kimliği kontrolünü devre dışı bırakırgateway.controlUi.dangerouslyDisableDeviceAuthhayır
gateway.real_ip_fallback_enableduyarı/kritikX-Real-IP fallback’ine güvenmek, proxy yanlış yapılandırmasında kaynak IP sahteciliğine yol açabilirgateway.allowRealIpFallback, gateway.trustedProxieshayır
gateway.token_too_shortuyarıKısa paylaşılan token brute force’a karşı daha zayıftırgateway.auth.tokenhayır
gateway.auth_no_rate_limituyarıAçıkta auth’u hız sınırlaması olmadan bırakmak brute-force riskini artırırgateway.auth.rateLimithayır
gateway.trusted_proxy_authkritikProxy kimliği artık auth sınırı hâline gelirgateway.auth.mode="trusted-proxy"hayır
gateway.trusted_proxy_no_proxieskritikGüvenilir proxy IP’leri olmadan trusted-proxy auth güvensizdirgateway.trustedProxieshayır
gateway.trusted_proxy_no_user_headerkritikTrusted-proxy auth kullanıcı kimliğini güvenli şekilde çözemeyebilirgateway.auth.trustedProxy.userHeaderhayır
gateway.trusted_proxy_no_allowlistuyarıTrusted-proxy auth, kimliği doğrulanmış herhangi bir upstream kullanıcısını kabul edergateway.auth.trustedProxy.allowUsershayır
gateway.probe_auth_secretref_unavailableuyarıDerin prob, bu komut yolunda auth SecretRef’lerini çözemediderin prob auth kaynağı / SecretRef kullanılabilirliğihayır
gateway.probe_faileduyarı/kritikCanlı Gateway probu başarısız olduGateway erişilebilirliği/authhayır
discovery.mdns_full_modeuyarı/kritikmDNS tam modu, yerel ağda cliPath/sshPort meta verilerini yayınlardiscovery.mdns.mode, gateway.bindhayır
config.insecure_or_dangerous_flagsuyarıHerhangi bir güvensiz/tehlikeli hata ayıklama bayrağı etkinbirden çok anahtar (ayrıntı için bulgu detayına bakın)hayır
config.secrets.gateway_password_in_configuyarıGateway parolası doğrudan yapılandırmada saklanıyorgateway.auth.passwordhayır
config.secrets.hooks_token_in_configuyarıHook bearer token’ı doğrudan yapılandırmada saklanıyorhooks.tokenhayır
hooks.token_reuse_gateway_tokenkritikHook giriş token’ı aynı zamanda Gateway auth kilidini de açıyorhooks.token, gateway.auth.tokenhayır
hooks.token_too_shortuyarıHook girişi için brute force daha kolayhooks.tokenhayır
hooks.default_session_key_unsetuyarıHook agent çalıştırmaları oluşturulan istek başına oturumlara yayılıyorhooks.defaultSessionKeyhayır
hooks.allowed_agent_ids_unrestricteduyarı/kritikKimliği doğrulanmış hook çağıranları yapılandırılmış herhangi bir agent’a yönlenebilirhooks.allowedAgentIdshayır
hooks.request_session_key_enableduyarı/kritikDış çağıran sessionKey seçebilirhooks.allowRequestSessionKeyhayır
hooks.request_session_key_prefixes_missinguyarı/kritikDış session key biçimleri üzerinde sınır yokhooks.allowedSessionKeyPrefixeshayır
hooks.path_rootkritikHook yolu /, bu da girişin çakışmasını veya yanlış yönlenmesini kolaylaştırırhooks.pathhayır
hooks.installs_unpinned_npm_specsuyarıHook kurulum kayıtları değiştirilemez npm spec’lerine sabitlenmemişhook kurulum meta verilerihayır
hooks.installs_missing_integrityuyarıHook kurulum kayıtlarında integrity meta verisi eksikhook kurulum meta verilerihayır
hooks.installs_version_driftuyarıHook kurulum kayıtları, kurulu paketlerden sapmışhook kurulum meta verilerihayır
logging.redact_offuyarıHassas değerler log’lara/duruma sızarlogging.redactSensitiveevet
browser.control_invalid_configuyarıTarayıcı kontrol yapılandırması çalışma zamanından önce geçersizbrowser.*hayır
browser.control_no_authkritikTarayıcı kontrolü token/parola auth olmadan açığa çıkıyorgateway.auth.*hayır
browser.remote_cdp_httpuyarıDüz HTTP üzerinden uzak CDP aktarım şifrelemesine sahip değiltarayıcı profili cdpUrlhayır
browser.remote_cdp_private_hostuyarıUzak CDP özel/iç bir host’u hedefliyortarayıcı profili cdpUrl, browser.ssrfPolicy.*hayır
sandbox.docker_config_mode_offuyarıSandbox Docker yapılandırması mevcut ama etkin değilagents.*.sandbox.modehayır
sandbox.bind_mount_non_absoluteuyarıGöreli bind mount’lar öngörülemez şekilde çözülebiliragents.*.sandbox.docker.binds[]hayır
sandbox.dangerous_bind_mountkritikSandbox bind mount, engellenmiş sistem, kimlik bilgisi veya Docker socket yollarını hedefliyoragents.*.sandbox.docker.binds[]hayır
sandbox.dangerous_network_modekritikSandbox Docker ağı host veya container:* namespace-join modunu kullanıyoragents.*.sandbox.docker.networkhayır
sandbox.dangerous_seccomp_profilekritikSandbox seccomp profili container izolasyonunu zayıflatıyoragents.*.sandbox.docker.securityOpthayır
sandbox.dangerous_apparmor_profilekritikSandbox AppArmor profili container izolasyonunu zayıflatıyoragents.*.sandbox.docker.securityOpthayır
sandbox.browser_cdp_bridge_unrestricteduyarıSandbox tarayıcı köprüsü kaynak aralığı kısıtlaması olmadan açığa çıkıyorsandbox.browser.cdpSourceRangehayır
sandbox.browser_container.non_loopback_publishkritikMevcut tarayıcı container’ı CDP’yi loopback dışı arayüzlerde yayınlıyortarayıcı sandbox container yayın yapılandırmasıhayır
sandbox.browser_container.hash_label_missinguyarıMevcut tarayıcı container’ı güncel yapılandırma hash etiketlerinden daha eskiopenclaw sandbox recreate --browser --allhayır
sandbox.browser_container.hash_epoch_staleuyarıMevcut tarayıcı container’ı güncel tarayıcı yapılandırma döneminden daha eskiopenclaw sandbox recreate --browser --allhayır
tools.exec.host_sandbox_no_sandbox_defaultsuyarıexec host=sandbox, sandbox kapalıyken fail-closed davranırtools.exec.host, agents.defaults.sandbox.modehayır
tools.exec.host_sandbox_no_sandbox_agentsuyarıAgent başına exec host=sandbox, sandbox kapalıyken fail-closed davranıragents.list[].tools.exec.host, agents.list[].sandbox.modehayır
tools.exec.security_full_configureduyarı/kritikHost exec, security="full" ile çalışıyortools.exec.security, agents.list[].tools.exec.securityhayır
tools.exec.auto_allow_skills_enableduyarıExec onayları, skill bin’lerine örtük olarak güveniyor~/.openclaw/exec-approvals.jsonhayır
tools.exec.allowlist_interpreter_without_strict_inline_evaluyarıInterpreter allowlist’leri, zorunlu yeniden onay olmadan satır içi eval’e izin verirtools.exec.strictInlineEval, agents.list[].tools.exec.strictInlineEval, exec approvals allowlisthayır
tools.exec.safe_bins_interpreter_unprofileduyarısafeBins içindeki interpreter/runtime bin’leri açık profiller olmadan exec riskini genişletirtools.exec.safeBins, tools.exec.safeBinProfiles, agents.list[].tools.exec.*hayır
tools.exec.safe_bins_broad_behavioruyarısafeBins içindeki geniş davranışlı araçlar düşük riskli stdin-filter güven modelini zayıflatırtools.exec.safeBins, agents.list[].tools.exec.safeBinshayır
tools.exec.safe_bin_trusted_dirs_riskyuyarısafeBinTrustedDirs, değiştirilebilir veya riskli dizinler içeriyortools.exec.safeBinTrustedDirs, agents.list[].tools.exec.safeBinTrustedDirshayır
skills.workspace.symlink_escapeuyarıÇalışma alanı skills/**/SKILL.md, çalışma alanı kökü dışına çözülüyor (symlink-chain kayması)çalışma alanı skills/** dosya sistemi durumuhayır
plugins.extensions_no_allowlistuyarıUzantılar, açık bir Plugin allowlist’i olmadan kuruluplugins.allowlisthayır
plugins.installs_unpinned_npm_specsuyarıPlugin kurulum kayıtları değiştirilemez npm spec’lerine sabitlenmemişPlugin kurulum meta verilerihayır
plugins.installs_missing_integrityuyarıPlugin kurulum kayıtlarında integrity meta verisi eksikPlugin kurulum meta verilerihayır
plugins.installs_version_driftuyarıPlugin kurulum kayıtları, kurulu paketlerden sapmışPlugin kurulum meta verilerihayır
plugins.code_safetyuyarı/kritikPlugin kod taraması şüpheli veya tehlikeli desenler bulduPlugin kodu / kurulum kaynağıhayır
plugins.code_safety.entry_pathuyarıPlugin giriş yolu gizli veya node_modules konumlarına işaret ediyorPlugin manifest entryhayır
plugins.code_safety.entry_escapekritikPlugin girişi Plugin dizininin dışına taşıyorPlugin manifest entryhayır
plugins.code_safety.scan_faileduyarıPlugin kod taraması tamamlanamadıPlugin uzantı yolu / tarama ortamıhayır
skills.code_safetyuyarı/kritikSkill yükleyici meta verisi/kodu şüpheli veya tehlikeli desenler içeriyorskill kurulum kaynağıhayır
skills.code_safety.scan_faileduyarıSkill kod taraması tamamlanamadıskill tarama ortamıhayır
security.exposure.open_channels_with_execuyarı/kritikPaylaşılan/genel odalar, exec etkin agent’lara erişebilirchannels.*.dmPolicy, channels.*.groupPolicy, tools.exec.*, agents.list[].tools.exec.*hayır
security.exposure.open_groups_with_elevatedkritikAçık gruplar + yükseltilmiş araçlar, yüksek etkili prompt injection yolları oluştururchannels.*.groupPolicy, tools.elevated.*hayır
security.exposure.open_groups_with_runtime_or_fskritik/uyarıAçık gruplar, sandbox/çalışma alanı korumaları olmadan komut/dosya araçlarına erişebilirchannels.*.groupPolicy, tools.profile/deny, tools.fs.workspaceOnly, agents.*.sandbox.modehayır
security.trust_model.multi_user_heuristicuyarıYapılandırma çok kullanıcılı görünüyor, ancak Gateway güven modeli kişisel asistandırgüven sınırlarını ayırın veya paylaşılan kullanıcı sıkılaştırması kullanın (sandbox.mode, araç deny/çalışma alanı kapsamı)hayır
tools.profile_minimal_overriddenuyarıAgent geçersiz kılmaları genel minimal profili atlaragents.list[].tools.profilehayır
plugins.tools_reachable_permissive_policyuyarıUzantı araçları gevşek bağlamlarda erişilebilirtools.profile + araç allow/denyhayır
models.legacyuyarıEski model aileleri hâlâ yapılandırılmışmodel seçimihayır
models.weak_tieruyarıYapılandırılmış modeller mevcut önerilen katmanların altındamodel seçimihayır
models.small_paramskritik/bilgiKüçük modeller + güvensiz araç yüzeyleri enjeksiyon riskini artırırmodel seçimi + sandbox/araç politikasıhayır
summary.attack_surfacebilgiKimlik doğrulama, kanal, araç ve maruziyet duruşunun toplu özetibirden çok anahtar (ayrıntı için bulgu detayına bakın)hayır

HTTP üzerinden Control UI

Control UI, cihaz kimliği oluşturmak için güvenli bir bağlama (HTTPS veya localhost) ihtiyaç duyar. gateway.controlUi.allowInsecureAuth yerel bir uyumluluk anahtarıdır:
  • Localhost üzerinde, sayfa güvenli olmayan HTTP üzerinden yüklendiğinde cihaz kimliği olmadan Control UI auth’a izin verir.
  • Eşleştirme kontrollerini atlatmaz.
  • Uzak (localhost dışı) cihaz kimliği gereksinimlerini gevşetmez.
HTTPS’yi (Tailscale Serve) tercih edin veya UI’ı 127.0.0.1 üzerinde açın. Yalnızca acil durum senaryoları için gateway.controlUi.dangerouslyDisableDeviceAuth, cihaz kimliği kontrollerini tamamen devre dışı bırakır. Bu ciddi bir güvenlik düşüşüdür; yalnızca etkin olarak hata ayıklama yapıyorsanız ve hızlıca geri alabiliyorsanız açık tutun. Bu tehlikeli bayraklardan ayrı olarak, başarılı gateway.auth.mode: "trusted-proxy" yapılandırması, cihaz kimliği olmadan operatör Control UI oturumlarına izin verebilir. Bu kasıtlı bir auth modu davranışıdır, allowInsecureAuth kısayolu değildir ve yine de Node rolündeki Control UI oturumlarına genişlemez. openclaw security audit, bu ayar etkin olduğunda uyarı verir.

Güvensiz veya tehlikeli bayraklar özeti

openclaw security audit, bilinen güvensiz/tehlikeli hata ayıklama anahtarları etkin olduğunda config.insecure_or_dangerous_flags bulgusunu içerir. Bu kontrol şu anda şunları toplu olarak değerlendirir:
  • gateway.controlUi.allowInsecureAuth=true
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true
  • gateway.controlUi.dangerouslyDisableDeviceAuth=true
  • hooks.gmail.allowUnsafeExternalContent=true
  • hooks.mappings[<index>].allowUnsafeExternalContent=true
  • tools.exec.applyPatch.workspaceOnly=false
  • plugins.entries.acpx.config.permissionMode=approve-all
OpenClaw yapılandırma şemasında tanımlanan tam dangerous* / dangerously* yapılandırma anahtarları:
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback
  • gateway.controlUi.dangerouslyDisableDeviceAuth
  • browser.ssrfPolicy.dangerouslyAllowPrivateNetwork
  • channels.discord.dangerouslyAllowNameMatching
  • channels.discord.accounts.<accountId>.dangerouslyAllowNameMatching
  • channels.slack.dangerouslyAllowNameMatching
  • channels.slack.accounts.<accountId>.dangerouslyAllowNameMatching
  • channels.googlechat.dangerouslyAllowNameMatching
  • channels.googlechat.accounts.<accountId>.dangerouslyAllowNameMatching
  • channels.msteams.dangerouslyAllowNameMatching
  • channels.synology-chat.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.synology-chat.accounts.<accountId>.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.synology-chat.dangerouslyAllowInheritedWebhookPath (uzantı kanalı)
  • channels.zalouser.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.zalouser.accounts.<accountId>.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.irc.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.irc.accounts.<accountId>.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.mattermost.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.mattermost.accounts.<accountId>.dangerouslyAllowNameMatching (uzantı kanalı)
  • channels.telegram.network.dangerouslyAllowPrivateNetwork
  • channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork
  • agents.defaults.sandbox.docker.dangerouslyAllowReservedContainerTargets
  • agents.defaults.sandbox.docker.dangerouslyAllowExternalBindSources
  • agents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin
  • agents.list[<index>].sandbox.docker.dangerouslyAllowReservedContainerTargets
  • agents.list[<index>].sandbox.docker.dangerouslyAllowExternalBindSources
  • agents.list[<index>].sandbox.docker.dangerouslyAllowContainerNamespaceJoin

Reverse Proxy Yapılandırması

Gateway’yi bir reverse proxy’nin (nginx, Caddy, Traefik vb.) arkasında çalıştırıyorsanız, iletilen istemci IP’sinin doğru işlenmesi için gateway.trustedProxies ayarını yapılandırın. Gateway, trustedProxies içinde olmayan bir adresten proxy header’ları algıladığında, bağlantıları yerel istemci olarak değerlendirmez. Gateway auth devre dışıysa bu bağlantılar reddedilir. Bu, proxy arkasındaki bağlantıların aksi hâlde localhost’tan geliyormuş gibi görünerek otomatik güven kazanacağı kimlik doğrulama atlatmalarını önler. gateway.trustedProxies, ayrıca gateway.auth.mode: "trusted-proxy" için de kullanılır, ancak bu auth modu daha katıdır:
  • trusted-proxy auth, loopback kaynaklı proxy’lerde fail-closed çalışır
  • aynı host üzerindeki loopback reverse proxy’ler yine de yerel istemci tespiti ve iletilen IP işleme için gateway.trustedProxies kullanabilir
  • aynı host üzerindeki loopback reverse proxy’ler için gateway.auth.mode: "trusted-proxy" yerine token/parola auth kullanın
gateway:
  trustedProxies:
    - "10.0.0.1" # reverse proxy IP'si
  # İsteğe bağlı. Varsayılan false.
  # Yalnızca proxy'niz X-Forwarded-For sağlayamıyorsa etkinleştirin.
  allowRealIpFallback: false
  auth:
    mode: password
    password: ${OPENCLAW_GATEWAY_PASSWORD}
trustedProxies yapılandırıldığında Gateway, istemci IP’sini belirlemek için X-Forwarded-For kullanır. X-Real-IP, yalnızca gateway.allowRealIpFallback: true açıkça ayarlandıysa varsayılan olarak dikkate alınır. İyi reverse proxy davranışı (gelen yönlendirme header’larını üzerine yaz):
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
Kötü reverse proxy davranışı (güvenilmeyen yönlendirme header’larını ekle/koru):
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

HSTS ve origin notları

  • OpenClaw Gateway öncelikle yerel/loopback içindir. TLS sonlandırmasını bir reverse proxy üzerinde yapıyorsanız, HSTS’yi proxy’nin baktığı HTTPS alanında orada ayarlayın.
  • Gateway HTTPS’yi kendisi sonlandırıyorsa, HSTS header’ını OpenClaw yanıtlarından göndermek için gateway.http.securityHeaders.strictTransportSecurity ayarını yapabilirsiniz.
  • Ayrıntılı dağıtım kılavuzu Trusted Proxy Auth bölümündedir.
  • Loopback dışı Control UI dağıtımları için varsayılan olarak gateway.controlUi.allowedOrigins gereklidir.
  • gateway.controlUi.allowedOrigins: ["*"], sıkılaştırılmış bir varsayılan değil, açıkça herkese izin veren bir browser-origin politikasıdır. Sıkı biçimde denetlenen yerel testler dışında bundan kaçının.
  • Loopback üzerinde browser-origin auth hataları, genel loopback muafiyeti etkin olsa bile yine hız sınırlamasına tabidir; ancak kilitleme anahtarı, tek bir paylaşılan localhost kovası yerine normalize edilmiş Origin değeri başına kapsamlanır.
  • gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true, Host-header origin fallback modunu etkinleştirir; bunu operatör tarafından seçilmiş tehlikeli bir politika olarak değerlendirin.
  • DNS rebinding ve proxy host header davranışını dağıtım sıkılaştırma konuları olarak değerlendirin; trustedProxies listesini dar tutun ve Gateway’yi doğrudan genel internete açmaktan kaçının.

Yerel oturum log’ları diskte tutulur

OpenClaw, oturum transkriptlerini ~/.openclaw/agents/<agentId>/sessions/*.jsonl altında diskte saklar. Bu, oturum sürekliliği ve (isteğe bağlı olarak) oturum belleği indekslemesi için gereklidir, ancak aynı zamanda dosya sistemi erişimi olan herhangi bir süreç/kullanıcının bu log’ları okuyabileceği anlamına gelir. Disk erişimini güven sınırı olarak değerlendirin ve ~/.openclaw üzerindeki izinleri sıkılaştırın (aşağıdaki denetim bölümüne bakın). Agent’lar arasında daha güçlü izolasyona ihtiyacınız varsa, onları ayrı OS kullanıcıları veya ayrı host’lar altında çalıştırın.

Node yürütme (system.run)

Bir macOS Node eşleştirilmişse, Gateway o Node üzerinde system.run çağırabilir. Bu, Mac üzerinde uzak kod yürütme anlamına gelir:
  • Node eşleştirmesi gerektirir (onay + token).
  • Gateway Node eşleştirmesi, komut başına bir onay yüzeyi değildir. Node kimliğini/güvenini ve token verilmesini oluşturur.
  • Gateway, gateway.nodes.allowCommands / denyCommands aracılığıyla kaba bir genel Node komut politikası uygular.
  • Mac üzerinde Ayarlar → Exec approvals üzerinden denetlenir (security + ask + allowlist).
  • Node başına system.run politikası, Gateway’nin genel komut kimliği politikasından daha sıkı veya daha gevşek olabilen Node’un kendi exec approvals dosyasıdır (exec.approvals.node.*).
  • security="full" ve ask="off" ile çalışan bir Node, varsayılan güvenilir operatör modelini izliyordur. Dağıtımınız açıkça daha sıkı bir onay veya allowlist duruşu gerektirmiyorsa bunu beklenen davranış olarak değerlendirin.
  • Onay modu, tam istek bağlamına ve mümkün olduğunda tek bir somut yerel script/dosya operand’ına bağlanır. OpenClaw, bir interpreter/runtime komutu için tam olarak bir doğrudan yerel dosyayı belirleyemezse, tam anlamsal kapsama sözü vermek yerine onay destekli yürütme reddedilir.
  • host=node için, onay destekli çalıştırmalar ayrıca kanonik bir hazırlanmış systemRunPlan saklar; daha sonra onaylanan yönlendirmeler bu saklanan planı yeniden kullanır ve Gateway doğrulaması, onay isteği oluşturulduktan sonra çağıranın komut/cwd/oturum bağlamını düzenlemesini reddeder.
  • Uzak yürütme istemiyorsanız, güvenliği deny olarak ayarlayın ve o Mac için Node eşleştirmesini kaldırın.
Bu ayrım değerlendirme açısından önemlidir:
  • Yeniden bağlanan eşleştirilmiş bir Node’un farklı bir komut listesi duyurması, Gateway genel politikası ve Node’un yerel exec approvals ayarları gerçek yürütme sınırını hâlâ uyguluyorsa tek başına bir güvenlik açığı değildir.
  • Node eşleştirme meta verilerini ikinci, gizli bir komut başına onay katmanı olarak ele alan raporlar genellikle güvenlik sınırı atlatması değil, politika/UX karışıklığıdır.

Dinamik Skills (watcher / uzak Node’lar)

OpenClaw, oturum ortasında Skills listesini yenileyebilir:
  • Skills watcher: SKILL.md dosyasındaki değişiklikler bir sonraki agent turunda Skills anlık görüntüsünü güncelleyebilir.
  • Uzak Node’lar: bir macOS Node bağlamak, macOS’a özgü Skills’lerin uygun hâle gelmesine neden olabilir (bin probing temelinde).
Skill klasörlerini güvenilir kod olarak değerlendirin ve bunları kimlerin değiştirebileceğini kısıtlayın.

Tehdit Modeli

Yapay zeka asistanınız şunları yapabilir:
  • Rastgele shell komutları çalıştırabilir
  • Dosya okuyabilir/yazabilir
  • Ağ servislerine erişebilir
  • Ona WhatsApp erişimi verirseniz herkese mesaj gönderebilir
Size mesaj atan kişiler şunları yapabilir:
  • Yapay zekanızı kötü şeyler yapmaya kandırmaya çalışabilir
  • Verilerinize erişim için sosyal mühendislik uygulayabilir
  • Altyapı ayrıntılarını yoklayabilir

Temel kavram: zekâdan önce erişim denetimi

Buradaki başarısızlıkların çoğu karmaşık açıklar değildir — “birisi bot’a mesaj attı ve bot da isteneni yaptı” türündendir. OpenClaw’ın yaklaşımı:
  • Önce kimlik: bot’la kimlerin konuşabileceğine karar verin (DM eşleştirme / allowlist’ler / açıkça “open”).
  • Sonra kapsam: bot’un nerede işlem yapmasına izin verileceğine karar verin (grup allowlist’leri + mention kapıları, araçlar, sandboxing, cihaz izinleri).
  • En son model: modelin manipüle edilebileceğini varsayın; tasarımı, manipülasyonun etki alanı sınırlı olacak şekilde yapın.

Komut yetkilendirme modeli

Slash komutlar ve yönergeler yalnızca yetkili göndericiler için dikkate alınır. Yetkilendirme, kanal allowlist’leri/eşleştirme artı commands.useAccessGroups üzerinden türetilir (Yapılandırma ve Slash komutlar bölümlerine bakın). Bir kanal allowlist’i boşsa veya "*" içeriyorsa, komutlar o kanal için fiilen açıktır. /exec, yetkili operatörler için yalnızca oturuma özel bir kolaylıktır. Yapılandırma yazmaz ve diğer oturumları değiştirmez.

Kontrol düzlemi araç riski

İki yerleşik araç kalıcı kontrol düzlemi değişiklikleri yapabilir:
  • gateway, config.schema.lookup / config.get ile yapılandırmayı inceleyebilir ve config.apply, config.patch ve update.run ile kalıcı değişiklikler yapabilir.
  • cron, özgün sohbet/görev bittikten sonra da çalışmaya devam eden zamanlanmış işler oluşturabilir.
Yalnızca sahip tarafından kullanılabilen gateway çalışma zamanı aracı, hâlâ tools.exec.ask veya tools.exec.security değerlerini yeniden yazmayı reddeder; eski tools.bash.* alias’ları da yazma işlemi öncesinde aynı korunan exec yollarına normalize edilir. Güvenilmeyen içerik işleyen herhangi bir agent/yüzey için bunları varsayılan olarak reddedin:
{
  tools: {
    deny: ["gateway", "cron", "sessions_spawn", "sessions_send"],
  },
}
commands.restart=false yalnızca yeniden başlatma eylemlerini engeller. gateway yapılandırma/güncelleme eylemlerini devre dışı bırakmaz.

Plugin’ler/uzantılar

Plugin’ler Gateway ile aynı süreç içinde çalışır. Onları güvenilir kod olarak değerlendirin:
  • Yalnızca güvendiğiniz kaynaklardan Plugin kurun.
  • Açık plugins.allow allowlist’lerini tercih edin.
  • Etkinleştirmeden önce Plugin yapılandırmasını inceleyin.
  • Plugin değişikliklerinden sonra Gateway’yi yeniden başlatın.
  • Plugin kurar veya güncellerseniz (openclaw plugins install <package>, openclaw plugins update <id>), bunu güvenilmeyen kod çalıştırmak gibi değerlendirin:
    • Kurulum yolu, etkin Plugin kurulum kökü altındaki Plugin başına dizindir.
    • OpenClaw, kurulum/güncelleme öncesinde yerleşik bir tehlikeli kod taraması çalıştırır. critical bulgular varsayılan olarak engellenir.
    • OpenClaw npm pack kullanır ve ardından o dizinde npm install --omit=dev çalıştırır (npm lifecycle script’leri kurulum sırasında kod çalıştırabilir).
    • Sabitlenmiş, tam sürümleri tercih edin (@scope/pkg@1.2.3) ve etkinleştirmeden önce disk üzerindeki açılmış kodu inceleyin.
    • --dangerously-force-unsafe-install, yalnızca Plugin kurulum/güncelleme akışlarında yerleşik taramanın false positive üretmesi durumları için acil durum seçeneğidir. Plugin before_install hook politika engellerini atlatmaz ve tarama başarısızlıklarını da atlatmaz.
    • Gateway destekli skill bağımlılığı kurulumları da aynı tehlikeli/şüpheli ayrımını izler: yerleşik critical bulgular, çağıran açıkça dangerouslyForceUnsafeInstall ayarlamadıkça engellenir; şüpheli bulgular ise yalnızca uyarı verir. openclaw skills install, ayrı ClawHub skill indirme/kurulum akışı olmaya devam eder.
Ayrıntılar: Plugin’ler

DM erişim modeli (eşleştirme / allowlist / open / disabled)

Mevcut tüm DM destekli kanallar, mesaj işlenmeden önce gelen DM’leri sınırlayan bir DM politikasını (dmPolicy veya *.dm.policy) destekler:
  • pairing (varsayılan): bilinmeyen göndericiler kısa bir eşleştirme kodu alır ve bot, onaylanana kadar mesajlarını yok sayar. Kodların süresi 1 saat sonra dolar; yinelenen DM’ler, yeni bir istek oluşturulana kadar yeniden kod göndermez. Bekleyen istekler varsayılan olarak kanal başına 3 ile sınırlıdır.
  • allowlist: bilinmeyen göndericiler engellenir (eşleştirme el sıkışması yoktur).
  • open: herkesin DM göndermesine izin verilir (genel). Kanal allowlist’inin "*" içermesini gerektirir (açık rıza gerekir).
  • disabled: gelen DM’leri tamamen yok sayar.
CLI üzerinden onaylayın:
openclaw pairing list <channel>
openclaw pairing approve <channel> <code>
Ayrıntılar + disk üzerindeki dosyalar: Eşleştirme

DM oturum izolasyonu (çok kullanıcılı mod)

Varsayılan olarak OpenClaw, asistanınızın cihazlar ve kanallar arasında sürekliliğe sahip olması için tüm DM’leri ana oturuma yönlendirir. Bot’a birden fazla kişi DM gönderebiliyorsa (açık DM’ler veya çok kişili bir allowlist), DM oturumlarını izole etmeyi düşünün:
{
  session: { dmScope: "per-channel-peer" },
}
Bu, grup sohbetlerini izole tutarken kullanıcılar arası bağlam sızıntısını önler. Bu, bir mesajlaşma bağlamı sınırıdır; host yöneticisi sınırı değildir. Kullanıcılar karşılıklı olarak saldırgansa ve aynı Gateway host’unu/yapılandırmasını paylaşıyorsa, güven sınırı başına ayrı Gateway’ler çalıştırın.

Güvenli DM modu (önerilir)

Yukarıdaki parçayı güvenli DM modu olarak değerlendirin:
  • Varsayılan: session.dmScope: "main" (süreklilik için tüm DM’ler tek oturumu paylaşır).
  • Yerel CLI onboarding varsayılanı: ayarlanmamışsa session.dmScope: "per-channel-peer" yazar (mevcut açık değerleri korur).
  • Güvenli DM modu: session.dmScope: "per-channel-peer" (her kanal+gönderici çifti izole bir DM bağlamı alır).
  • Kanallar arası eş izolasyonu: session.dmScope: "per-peer" (her gönderici aynı türdeki tüm kanallarda tek bir oturum alır).
Aynı kanalda birden fazla hesap çalıştırıyorsanız, bunun yerine per-account-channel-peer kullanın. Aynı kişi sizinle birden fazla kanaldan iletişime geçiyorsa, bu DM oturumlarını tek bir kanonik kimlikte toplamak için session.identityLinks kullanın. Bkz. Oturum Yönetimi ve Yapılandırma.

Allowlist’ler (DM + gruplar) - terminoloji

OpenClaw’da “beni kim tetikleyebilir?” için iki ayrı katman vardır:
  • DM allowlist’i (allowFrom / channels.discord.allowFrom / channels.slack.allowFrom; eski: channels.discord.dm.allowFrom, channels.slack.dm.allowFrom): doğrudan mesajlarda bot ile kimin konuşmasına izin verildiği.
    • dmPolicy="pairing" olduğunda, onaylar hesap kapsamlı eşleştirme allowlist deposuna ~/.openclaw/credentials/ altına yazılır (varsayılan hesap için <channel>-allowFrom.json, varsayılan olmayan hesaplar için <channel>-<accountId>-allowFrom.json) ve yapılandırma allowlist’leriyle birleştirilir.
  • Grup allowlist’i (kanala özgü): botun hangi grup/kanal/guild’lerden gelen mesajları kabul edeceği.
    • Yaygın desenler:
      • channels.whatsapp.groups, channels.telegram.groups, channels.imessage.groups: requireMention gibi grup başına varsayılanlar; ayarlandığında grup allowlist’i olarak da işlev görür (allow-all davranışını korumak için "*" ekleyin).
      • groupPolicy="allowlist" + groupAllowFrom: bir grup oturumu içinde botu kimin tetikleyebileceğini sınırlar (WhatsApp/Telegram/Signal/iMessage/Microsoft Teams).
      • channels.discord.guilds / channels.slack.channels: yüzey başına allowlist’ler + mention varsayılanları.
    • Grup kontrolleri şu sırayla çalışır: önce groupPolicy/grup allowlist’leri, sonra mention/yanıt etkinleştirmesi.
    • Bir bot mesajına yanıt vermek (örtük mention), groupAllowFrom gibi gönderici allowlist’lerini atlatmaz.
    • Güvenlik notu: dmPolicy="open" ve groupPolicy="open" ayarlarını son çare olarak değerlendirin. Bunlar neredeyse hiç kullanılmamalıdır; odadaki her üyeye tamamen güvenmiyorsanız eşleştirme + allowlist’leri tercih edin.
Ayrıntılar: Yapılandırma ve Gruplar

Prompt injection (nedir, neden önemlidir)

Prompt injection, bir saldırganın modeli güvensiz bir şey yapacak şekilde manipüle eden bir mesaj hazırlamasıdır (“talimatlarını yok say”, “dosya sistemini dök”, “bu bağlantıyı izle ve komut çalıştır” vb.). Güçlü system prompt’larla bile prompt injection çözülmüş değildir. System prompt korumaları yalnızca yumuşak rehberliktir; katı uygulama araç politikası, exec onayları, sandboxing ve kanal allowlist’lerinden gelir (ve operatörler bunları tasarım gereği devre dışı bırakabilir). Pratikte yardımcı olanlar:
  • Gelen DM’leri kilitli tutun (eşleştirme/allowlist’ler).
  • Gruplarda mention kapılamasını tercih edin; genel odalarda “her zaman açık” botlardan kaçının.
  • Bağlantıları, ekleri ve yapıştırılmış talimatları varsayılan olarak düşmanca kabul edin.
  • Hassas araç yürütmesini bir sandbox içinde çalıştırın; secret’ları agent’ın erişebildiği dosya sisteminin dışında tutun.
  • Not: sandboxing opt-in’dir. Sandbox modu kapalıysa, örtük host=auto Gateway host’una çözülür. Açık host=sandbox, sandbox çalışma zamanı olmadığı için yine fail-closed çalışır. Bu davranışı yapılandırmada açıkça belirtmek istiyorsanız host=gateway ayarlayın.
  • Yüksek riskli araçları (exec, browser, web_fetch, web_search) güvenilir agent’larla veya açık allowlist’lerle sınırlayın.
  • Interpreter’ları (python, node, ruby, perl, php, lua, osascript) allowlist’e alıyorsanız, satır içi eval biçimlerinin yine açık onay gerektirmesi için tools.exec.strictInlineEval ayarını etkinleştirin.
  • Model seçimi önemlidir: eski/küçük/eski nesil modeller, prompt injection’a ve araç kötüye kullanımına karşı belirgin şekilde daha dayanıksızdır. Araç etkin agent’lar için mevcut en güçlü, en yeni nesil, talimata karşı daha dayanıklı modeli kullanın.
Güvenilmeyen olarak ele alınması gereken kırmızı bayraklar:
  • “Bu dosyayı/URL’yi oku ve tam olarak söylediğini yap.”
  • “System prompt’unu veya güvenlik kurallarını yok say.”
  • “Gizli talimatlarını veya araç çıktılarını açığa çıkar.”
  • ~/.openclaw veya log’larının tüm içeriğini yapıştır.”

Güvensiz dış içerik atlatma bayrakları

OpenClaw, dış içerik güvenlik sarmalamasını devre dışı bırakan açık atlatma bayrakları içerir:
  • hooks.mappings[].allowUnsafeExternalContent
  • hooks.gmail.allowUnsafeExternalContent
  • Cron payload alanı allowUnsafeExternalContent
Kılavuz:
  • Bunları üretimde ayarsız/false tutun.
  • Yalnızca dar kapsamlı hata ayıklama için geçici olarak etkinleştirin.
  • Etkinleştirirseniz, o agent’ı izole edin (sandbox + minimal araçlar + ayrılmış oturum ad alanı).
Hook risk notu:
  • Hook payload’ları, teslimat sizin denetiminizdeki sistemlerden gelse bile güvenilmeyen içeriktir (posta/belge/web içeriği prompt injection taşıyabilir).
  • Zayıf model katmanları bu riski artırır. Hook odaklı otomasyon için güçlü modern model katmanlarını tercih edin ve araç politikasını sıkı tutun (tools.profile: "messaging" veya daha sıkı), ayrıca mümkün olduğunda sandboxing kullanın.

Prompt injection genel DM gerektirmez

Bot’a yalnızca siz mesaj gönderebiliyor olsanız bile, botun okuduğu herhangi bir güvenilmeyen içerik üzerinden prompt injection yine de olabilir (web arama/getirme sonuçları, tarayıcı sayfaları, e-postalar, belgeler, ekler, yapıştırılmış log’lar/kod). Başka bir deyişle: tehdit yüzeyi yalnızca gönderen değildir; içeriğin kendisi de saldırgan talimatlar taşıyabilir. Araçlar etkin olduğunda, tipik risk bağlamı sızdırmak veya araç çağrılarını tetiklemektir. Etki alanını şu yollarla azaltın:
  • Güvenilmeyen içeriği özetlemek için salt okunur veya araçları devre dışı bırakılmış bir okuyucu agent kullanın, sonra özeti ana agent’ınıza aktarın.
  • Gerekmedikçe araç etkin agent’lar için web_search / web_fetch / browser kapalı tutun.
  • OpenResponses URL girdileri için (input_file / input_image), sıkı gateway.http.endpoints.responses.files.urlAllowlist ve gateway.http.endpoints.responses.images.urlAllowlist ayarlayın ve maxUrlParts değerini düşük tutun. Boş allowlist’ler ayarlanmamış kabul edilir; URL getirmeyi tamamen devre dışı bırakmak istiyorsanız files.allowUrl: false / images.allowUrl: false kullanın.
  • OpenResponses dosya girdileri için, çözümlenmiş input_file metni yine de güvenilmeyen dış içerik olarak enjekte edilir. Yalnızca Gateway bunu yerel olarak çözdü diye dosya metninin güvenilir olduğuna güvenmeyin. Enjekte edilen blok yine açık <<<EXTERNAL_UNTRUSTED_CONTENT ...>>> sınır işaretçileri ile Source: External meta verilerini taşır; ancak bu yol daha uzun SECURITY NOTICE: başlığını içermez.
  • Aynı işaretçi tabanlı sarmalama, media-understanding eklenmiş belgelerden metin çıkardığında ve bu metni medya prompt’una eklemeden önce de uygulanır.
  • Güvenilmeyen girdiye dokunan herhangi bir agent için sandboxing ve katı araç allowlist’leri etkinleştirin.
  • Secret’ları prompt’ların dışında tutun; bunları Gateway host’u üzerinde env/yapılandırma üzerinden geçin.

Model gücü (güvenlik notu)

Prompt injection direnci, model katmanları arasında aynı değildir. Daha küçük/daha ucuz modeller genellikle özellikle saldırgan prompt’lar altında araç kötüye kullanımına ve talimat kaçırılmasına daha açıktır.
Araç etkin agent’lar veya güvenilmeyen içerik okuyan agent’lar için, eski/küçük modellerle prompt injection riski çoğu zaman çok yüksektir. Bu iş yüklerini zayıf model katmanlarında çalıştırmayın.
Öneriler:
  • Araç çalıştırabilen veya dosyalara/ağlara dokunabilen herhangi bir bot için en yeni nesil, en iyi katmandaki modeli kullanın.
  • Araç etkin agent’lar veya güvenilmeyen gelen kutuları için eski/zayıf/küçük katmanları kullanmayın; prompt injection riski çok yüksektir.
  • Daha küçük bir model kullanmanız gerekiyorsa, etki alanını azaltın (salt okunur araçlar, güçlü sandboxing, minimal dosya sistemi erişimi, katı allowlist’ler).
  • Küçük modeller çalıştırırken, tüm oturumlar için sandboxing’i etkinleştirin ve girdiler sıkı şekilde denetlenmedikçe web_search/web_fetch/browser’ı devre dışı bırakın.
  • Yalnızca sohbet odaklı, güvenilir girdili ve araçsız kişisel asistanlar için daha küçük modeller genellikle uygundur.

Gruplarda reasoning ve ayrıntılı çıktı

/reasoning, /verbose ve /trace; dahili reasoning’i, araç çıktısını veya Plugin tanılamalarını, genel bir kanal için amaçlanmamış olabilecek biçimde açığa çıkarabilir. Grup ortamlarında bunları yalnızca hata ayıklama amaçlı değerlendirin ve açıkça ihtiyacınız olmadıkça kapalı tutun. Kılavuz:
  • Genel odalarda /reasoning, /verbose ve /trace kapalı tutun.
  • Bunları etkinleştirirseniz, yalnızca güvenilir DM’lerde veya sıkı şekilde denetlenen odalarda yapın.
  • Unutmayın: verbose ve trace çıktısı araç argümanlarını, URL’leri, Plugin tanılamalarını ve modelin gördüğü verileri içerebilir.

Yapılandırma sıkılaştırma (örnekler)

0) Dosya izinleri

Gateway host’unda yapılandırma + durumu özel tutun:
  • ~/.openclaw/openclaw.json: 600 (yalnızca kullanıcı okuma/yazma)
  • ~/.openclaw: 700 (yalnızca kullanıcı)
openclaw doctor, bu izinleri uyarabilir ve sıkılaştırmayı önerebilir.

0.4) Ağ maruziyeti (bind + port + güvenlik duvarı)

Gateway, WebSocket + HTTP trafiğini tek bir port üzerinde çoklar:
  • Varsayılan: 18789
  • Yapılandırma/bayraklar/env: gateway.port, --port, OPENCLAW_GATEWAY_PORT
Bu HTTP yüzeyi, Control UI ve canvas host’u içerir:
  • Control UI (SPA varlıkları) (varsayılan taban yolu /)
  • Canvas host: /__openclaw__/canvas/ ve /__openclaw__/a2ui/ (rastgele HTML/JS; güvenilmeyen içerik olarak değerlendirin)
Canvas içeriğini normal bir tarayıcıda yüklüyorsanız, bunu diğer güvenilmeyen web sayfaları gibi değerlendirin:
  • Canvas host’unu güvenilmeyen ağlara/kullanıcılara açmayın.
  • Sonuçlarını tam olarak anlamıyorsanız, canvas içeriğini ayrıcalıklı web yüzeyleriyle aynı origin’i paylaşacak şekilde sunmayın.
Bind modu, Gateway’nin nerede dinleme yaptığını belirler:
  • gateway.bind: "loopback" (varsayılan): yalnızca yerel istemciler bağlanabilir.
  • Loopback dışı bind’ler ("lan", "tailnet", "custom") saldırı yüzeyini genişletir. Bunları yalnızca Gateway auth (paylaşılan token/parola veya doğru yapılandırılmış loopback dışı bir trusted proxy) ve gerçek bir güvenlik duvarı ile kullanın.
Temel kurallar:
  • LAN bind’leri yerine Tailscale Serve’ü tercih edin (Serve, Gateway’yi loopback üzerinde tutar ve erişimi Tailscale yönetir).
  • LAN’a bind etmeniz gerekiyorsa, portu dar bir kaynak IP allowlist’i ile güvenlik duvarında sınırlandırın; geniş biçimde port yönlendirmesi yapmayın.
  • Gateway’yi 0.0.0.0 üzerinde asla kimlik doğrulamasız şekilde açmayın.

0.4.1) Docker port yayınlama + UFW (DOCKER-USER)

OpenClaw’ı bir VPS üzerinde Docker ile çalıştırıyorsanız, yayımlanmış container port’larının (-p HOST:CONTAINER veya Compose ports:) yalnızca host INPUT kuralları üzerinden değil, Docker’ın yönlendirme zincirleri üzerinden geçtiğini unutmayın. Docker trafiğini güvenlik duvarı politikanızla uyumlu tutmak için, kuralları DOCKER-USER içinde uygulayın (bu zincir Docker’ın kendi accept kurallarından önce değerlendirilir). Birçok modern dağıtımda iptables/ip6tables, iptables-nft frontend’ini kullanır ve bu kuralları yine nftables backend’ine uygular. Minimal allowlist örneği (IPv4):
# /etc/ufw/after.rules (kendi *filter bölümü olarak ekleyin)
*filter
:DOCKER-USER - [0:0]
-A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j RETURN
-A DOCKER-USER -s 127.0.0.0/8 -j RETURN
-A DOCKER-USER -s 10.0.0.0/8 -j RETURN
-A DOCKER-USER -s 172.16.0.0/12 -j RETURN
-A DOCKER-USER -s 192.168.0.0/16 -j RETURN
-A DOCKER-USER -s 100.64.0.0/10 -j RETURN
-A DOCKER-USER -p tcp --dport 80 -j RETURN
-A DOCKER-USER -p tcp --dport 443 -j RETURN
-A DOCKER-USER -m conntrack --ctstate NEW -j DROP
-A DOCKER-USER -j RETURN
COMMIT
IPv6 için ayrı tablolar vardır. Docker IPv6 etkinse /etc/ufw/after6.rules içine eşleşen bir politika ekleyin. Belge örneklerinde eth0 gibi arayüz adlarını sabit kodlamaktan kaçının. Arayüz adları VPS imajları arasında değişir (ens3, enp* vb.) ve uyuşmazlıklar yanlışlıkla deny kuralınızın atlanmasına neden olabilir. Yeniden yükleme sonrası hızlı doğrulama:
ufw reload
iptables -S DOCKER-USER
ip6tables -S DOCKER-USER
nmap -sT -p 1-65535 <public-ip> --open
Beklenen dış port’lar, yalnızca kasıtlı olarak açtıklarınız olmalıdır (çoğu kurulum için: SSH + reverse proxy port’larınız).

0.4.2) mDNS/Bonjour keşfi (bilgi ifşası)

Gateway, yerel cihaz keşfi için varlığını mDNS üzerinden (_openclaw-gw._tcp, port 5353) yayınlar. Tam modda bu, operasyonel ayrıntıları açığa çıkarabilecek TXT kayıtlarını içerir:
  • cliPath: CLI binary’sine giden tam dosya sistemi yolu (kullanıcı adını ve kurulum konumunu açığa çıkarır)
  • sshPort: host üzerindeki SSH kullanılabilirliğini duyurur
  • displayName, lanHost: hostname bilgisi
Operasyonel güvenlik değerlendirmesi: altyapı ayrıntılarını yayınlamak, yerel ağdaki herkes için keşif yapmayı kolaylaştırır. Dosya sistemi yolları ve SSH kullanılabilirliği gibi “zararsız” görünen bilgiler bile saldırganların ortamınızı haritalandırmasına yardımcı olur. Öneriler:
  1. Minimal mod (varsayılan, açık Gateway’ler için önerilir): hassas alanları mDNS yayınlarından çıkarın:
    {
      discovery: {
        mdns: { mode: "minimal" },
      },
    }
    
  2. Yerel cihaz keşfine ihtiyacınız yoksa tamamen devre dışı bırakın:
    {
      discovery: {
        mdns: { mode: "off" },
      },
    }
    
  3. Tam mod (opt-in): TXT kayıtlarına cliPath + sshPort ekleyin:
    {
      discovery: {
        mdns: { mode: "full" },
      },
    }
    
  4. Ortam değişkeni (alternatif): yapılandırmayı değiştirmeden mDNS’yi devre dışı bırakmak için OPENCLAW_DISABLE_BONJOUR=1 ayarlayın.
Minimal modda Gateway, cihaz keşfi için yeterli bilgiyi (role, gatewayPort, transport) yine yayınlar ancak cliPath ve sshPort alanlarını çıkarır. CLI yolu bilgisine ihtiyaç duyan uygulamalar bunu kimliği doğrulanmış WebSocket bağlantısı üzerinden alabilir.

0.5) Gateway WebSocket’i kilitleyin (yerel auth)

Gateway auth varsayılan olarak gereklidir. Geçerli bir Gateway auth yolu yapılandırılmamışsa, Gateway WebSocket bağlantılarını reddeder (fail‑closed). Onboarding, varsayılan olarak bir token oluşturur (loopback için bile), bu nedenle yerel istemcilerin kimlik doğrulaması yapması gerekir. Tüm WS istemcilerinin kimlik doğrulaması yapmasını istemek için bir token ayarlayın:
{
  gateway: {
    auth: { mode: "token", token: "your-token" },
  },
}
Doctor sizin için bir tane oluşturabilir: openclaw doctor --generate-gateway-token. Not: gateway.remote.token / .password, istemci kimlik bilgisi kaynaklarıdır. Bunlar yerel WS erişimini tek başlarına korumaz. Yerel çağrı yolları, yalnızca gateway.auth.* ayarlı değilse gateway.remote.* alanlarını fallback olarak kullanabilir. gateway.auth.token / gateway.auth.password, SecretRef üzerinden açıkça yapılandırılmış ancak çözümlenememişse çözümleme fail-closed olur (fallback masking olmaz). İsteğe bağlı olarak, wss:// kullanırken uzak TLS’yi gateway.remote.tlsFingerprint ile sabitleyin. Düz metin ws:// varsayılan olarak yalnızca loopback içindir. Güvenilir özel ağ yolları için, istemci sürecinde acil durum seçeneği olarak OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 ayarlayın. Yerel cihaz eşleştirmesi:
  • Aynı host üzerindeki istemcilerin sorunsuz çalışması için, doğrudan yerel loopback bağlantıları otomatik olarak onaylanır.
  • OpenClaw ayrıca güvenilir paylaşılan secret yardımcı akışları için dar kapsamlı bir backend/container içi self-connect yoluna sahiptir.
  • Tailnet ve LAN bağlantıları, aynı host üzerindeki tailnet bind’leri dahil, eşleştirme açısından uzak kabul edilir ve yine onay gerektirir.
Auth modları:
  • gateway.auth.mode: "token": paylaşılan bearer token (çoğu kurulum için önerilir).
  • gateway.auth.mode: "password": parola auth (tercihen env üzerinden ayarlayın: OPENCLAW_GATEWAY_PASSWORD).
  • gateway.auth.mode: "trusted-proxy": kullanıcıları kimlik doğrulayacak ve kimliği header’lar üzerinden iletecek kimlik farkındalıklı bir reverse proxy’ye güvenin (bkz. Trusted Proxy Auth).
Döndürme kontrol listesi (token/parola):
  1. Yeni bir secret oluşturun/ayarlayın (gateway.auth.token veya OPENCLAW_GATEWAY_PASSWORD).
  2. Gateway’yi yeniden başlatın (veya Gateway’yi denetliyorsa macOS uygulamasını yeniden başlatın).
  3. Uzak istemcileri güncelleyin (Gateway’ye çağrı yapan makinelerde gateway.remote.token / .password).
  4. Eski kimlik bilgileriyle artık bağlanamadığınızı doğrulayın.

0.6) Tailscale Serve kimlik header’ları

gateway.auth.allowTailscale true olduğunda (Serve için varsayılan), OpenClaw Control UI/WebSocket kimlik doğrulaması için Tailscale Serve kimlik header’larını (tailscale-user-login) kabul eder. OpenClaw, kimliği yerel Tailscale daemon’u (tailscale whois) üzerinden x-forwarded-for adresini çözüp bunu header ile eşleştirerek doğrular. Bu yalnızca loopback’e ulaşan ve Tailscale tarafından enjekte edildiği şekliyle x-forwarded-for, x-forwarded-proto ve x-forwarded-host içeren istekler için tetiklenir. Bu async kimlik kontrolü yolunda, aynı {scope, ip} için başarısız denemeler, limiter hatayı kaydetmeden önce serileştirilir. Bu nedenle tek bir Serve istemcisinden gelen eşzamanlı kötü yeniden denemeler, iki düz uyumsuzluk gibi yarışmak yerine ikinci denemeyi hemen kilitleyebilir. HTTP API uç noktaları (örneğin /v1/*, /tools/invoke ve /api/channels/*) Tailscale kimlik-header auth kullanmaz. Bunlar yine Gateway’nin yapılandırılmış HTTP auth modunu izler. Önemli sınır notu:
  • Gateway HTTP bearer auth fiilen hep-ya-da-hiç operatör erişimidir.
  • /v1/chat/completions, /v1/responses veya /api/channels/* çağırabilen kimlik bilgilerini, o Gateway için tam erişimli operatör secret’ları olarak değerlendirin.
  • OpenAI uyumlu HTTP yüzeyinde, paylaşılan secret bearer auth tam varsayılan operatör kapsamlarını (operator.admin, operator.approvals, operator.pairing, operator.read, operator.talk.secrets, operator.write) ve agent turları için owner semantiğini geri yükler; daha dar x-openclaw-scopes değerleri bu paylaşılan secret yolunu daraltmaz.
  • HTTP üzerinde istek başına kapsam semantiği yalnızca istek trusted proxy auth veya özel bir girişte gateway.auth.mode="none" gibi kimlik taşıyan bir moddan geldiğinde uygulanır.
  • Bu kimlik taşıyan modlarda, x-openclaw-scopes gönderilmezse normal varsayılan operatör kapsam kümesine fallback yapılır; daha dar bir kapsam kümesi istiyorsanız header’ı açıkça gönderin.
  • /tools/invoke de aynı paylaşılan secret kuralını izler: token/parola bearer auth burada da tam operatör erişimi olarak değerlendirilir; kimlik taşıyan modlar ise bildirilen kapsamları hâlâ dikkate alır.
  • Bu kimlik bilgilerini güvenilmeyen çağıranlarla paylaşmayın; güven sınırı başına ayrı Gateway’leri tercih edin.
Güven varsayımı: tokensız Serve auth, Gateway host’unun güvenilir olduğunu varsayar. Bunu düşmanca aynı-host süreçlerine karşı koruma olarak değerlendirmeyin. Gateway host’unda güvenilmeyen yerel kod çalışabiliyorsa, gateway.auth.allowTailscale ayarını devre dışı bırakın ve gateway.auth.mode: "token" veya "password" ile açık paylaşılan secret auth zorunlu kılın. Güvenlik kuralı: bu header’ları kendi reverse proxy’nizden iletmeyin. Gateway’nin önünde TLS sonlandırıyor veya proxy kullanıyorsanız, gateway.auth.allowTailscale ayarını devre dışı bırakın ve bunun yerine paylaşılan secret auth (gateway.auth.mode: "token" veya "password") ya da Trusted Proxy Auth kullanın. Trusted proxy’ler:
  • TLS’yi Gateway’nin önünde sonlandırıyorsanız, proxy IP’lerinizi gateway.trustedProxies içinde ayarlayın.
  • OpenClaw, yerel eşleştirme kontrolleri ve HTTP auth/yerel kontroller için istemci IP’sini belirlemek amacıyla bu IP’lerden gelen x-forwarded-for (veya x-real-ip) değerlerine güvenir.
  • Proxy’nizin x-forwarded-for değerini üzerine yazdığından ve Gateway port’una doğrudan erişimi engellediğinden emin olun.
Bkz. Tailscale ve Web genel bakış.

0.6.1) Node host üzerinden tarayıcı kontrolü (önerilir)

Gateway’niz uzaksa ancak tarayıcı başka bir makinede çalışıyorsa, tarayıcı makinesinde bir Node host çalıştırın ve tarayıcı eylemlerini Gateway’nin proxy’lemesine izin verin (bkz. Browser tool). Node eşleştirmesini yönetici erişimi gibi değerlendirin. Önerilen desen:
  • Gateway ve Node host’u aynı tailnet üzerinde tutun (Tailscale).
  • Node’u bilinçli olarak eşleştirin; ihtiyacınız yoksa tarayıcı proxy yönlendirmesini devre dışı bırakın.
Kaçınılması gerekenler:
  • Relay/kontrol port’larını LAN veya genel İnternet üzerinden açmak.
  • Tarayıcı kontrol uç noktaları için Tailscale Funnel kullanmak (genel maruziyet).

0.7) Disk üzerindeki secret’lar (hassas veriler)

~/.openclaw/ (veya $OPENCLAW_STATE_DIR/) altındaki her şeyin secret veya özel veri içerebileceğini varsayın:
  • openclaw.json: yapılandırma token’lar (Gateway, uzak Gateway), sağlayıcı ayarları ve allowlist’ler içerebilir.
  • credentials/**: kanal kimlik bilgileri (örnek: WhatsApp kimlik bilgileri), eşleştirme allowlist’leri, eski OAuth içe aktarmaları.
  • agents/<agentId>/agent/auth-profiles.json: API anahtarları, token profilleri, OAuth token’ları ve isteğe bağlı keyRef/tokenRef.
  • secrets.json (isteğe bağlı): file SecretRef sağlayıcıları tarafından kullanılan dosya tabanlı secret payload’u (secrets.providers).
  • agents/<agentId>/agent/auth.json: eski uyumluluk dosyası. Statik api_key girdileri bulunduğunda temizlenir.
  • agents/<agentId>/sessions/**: özel mesajlar ve araç çıktısı içerebilen oturum transkriptleri (*.jsonl) + yönlendirme meta verileri (sessions.json).
  • paketlenmiş Plugin paketleri: kurulu Plugin’ler (ve bunların node_modules/ dizinleri).
  • sandboxes/**: araç sandbox çalışma alanları; sandbox içinde okuduğunuz/yazdığınız dosyaların kopyalarını biriktirebilir.
Sıkılaştırma ipuçları:
  • İzinleri dar tutun (dizinlerde 700, dosyalarda 600).
  • Gateway host’unda tam disk şifrelemesi kullanın.
  • Host paylaşılıyorsa Gateway için ayrılmış bir OS kullanıcı hesabını tercih edin.

0.8) Log’lar + transkriptler (redaction + retention)

Erişim denetimleri doğru olsa bile log’lar ve transkriptler hassas bilgileri sızdırabilir:
  • Gateway log’ları araç özetlerini, hataları ve URL’leri içerebilir.
  • Oturum transkriptleri yapıştırılmış secret’ları, dosya içeriklerini, komut çıktısını ve bağlantıları içerebilir.
Öneriler:
  • Araç özeti redaction’ını açık tutun (logging.redactSensitive: "tools"; varsayılan).
  • Ortamınıza özgü desenleri logging.redactPatterns aracılığıyla ekleyin (token’lar, host adları, dahili URL’ler).
  • Tanılama paylaşırken ham log’lar yerine openclaw status --all tercih edin (yapıştırılabilir, secret’lar redakte edilir).
  • Uzun süre saklamaya ihtiyacınız yoksa eski oturum transkriptlerini ve log dosyalarını budayın.
Ayrıntılar: Logging

1) DM’ler: varsayılan olarak eşleştirme

{
  channels: { whatsapp: { dmPolicy: "pairing" } },
}

2) Gruplar: her yerde mention zorunlu olsun

{
  "channels": {
    "whatsapp": {
      "groups": {
        "*": { "requireMention": true }
      }
    }
  },
  "agents": {
    "list": [
      {
        "id": "main",
        "groupChat": { "mentionPatterns": ["@openclaw", "@mybot"] }
      }
    ]
  }
}
Grup sohbetlerinde yalnızca açıkça mention verildiğinde yanıt verin.

3) Ayrı numaralar (WhatsApp, Signal, Telegram)

Telefon numarası tabanlı kanallarda, yapay zekanızı kişisel numaranızdan ayrı bir telefon numarasında çalıştırmayı değerlendirin:
  • Kişisel numara: konuşmalarınız özel kalır
  • Bot numarası: yapay zeka bunları uygun sınırlarla yönetir

4) Salt okunur mod (sandbox + araçlar üzerinden)

Şunları birleştirerek salt okunur bir profil oluşturabilirsiniz:
  • agents.defaults.sandbox.workspaceAccess: "ro" (veya çalışma alanına hiç erişim olmaması için "none")
  • write, edit, apply_patch, exec, process vb. işlemleri engelleyen araç allow/deny listeleri
Ek sıkılaştırma seçenekleri:
  • tools.exec.applyPatch.workspaceOnly: true (varsayılan): sandboxing kapalı olsa bile apply_patch işleminin çalışma alanı dizini dışına yazamamasını/silememesini sağlar. apply_patch işleminin çalışma alanı dışındaki dosyalara dokunmasını yalnızca bilinçli olarak istiyorsanız false yapın.
  • tools.fs.workspaceOnly: true (isteğe bağlı): read/write/edit/apply_patch yollarını ve native prompt görsel otomatik yükleme yollarını çalışma alanı diziniyle sınırlar (bugün mutlak yolları kullanmanıza izin veriliyorsa ve tek bir koruma istiyorsanız yararlıdır).
  • Dosya sistemi köklerini dar tutun: agent çalışma alanları/sandbox çalışma alanları için home dizininiz gibi geniş köklerden kaçının. Geniş kökler hassas yerel dosyaları (örneğin ~/.openclaw altındaki durum/yapılandırma) dosya sistemi araçlarına açabilir.

5) Güvenli temel yapılandırma (kopyala/yapıştır)

Gateway’yi özel tutan, DM eşleştirmesi gerektiren ve her zaman açık grup botlarından kaçınan “güvenli varsayılan” bir yapılandırma:
{
  gateway: {
    mode: "local",
    bind: "loopback",
    port: 18789,
    auth: { mode: "token", token: "your-long-random-token" },
  },
  channels: {
    whatsapp: {
      dmPolicy: "pairing",
      groups: { "*": { requireMention: true } },
    },
  },
}
Varsayılan olarak daha güvenli araç yürütmesi de istiyorsanız, owner olmayan agent’lar için bir sandbox ekleyin + tehlikeli araçları reddedin (aşağıdaki “Agent başına erişim profilleri” örneğine bakın). Sohbet odaklı agent turları için yerleşik temel kural: owner olmayan göndericiler cron veya gateway araçlarını kullanamaz.

Sandboxing (önerilir)

Ayrı belge: Sandboxing Birbirini tamamlayan iki yaklaşım:
  • Tüm Gateway’yi Docker içinde çalıştırın (container sınırı): Docker
  • Araç sandbox’ı (agents.defaults.sandbox, host Gateway + Docker ile izole edilmiş araçlar): Sandboxing
Not: agent’lar arası erişimi önlemek için agents.defaults.sandbox.scope değerini "agent" (varsayılan) olarak tutun veya daha sıkı oturum başına izolasyon için "session" kullanın. scope: "shared", tek bir container/çalışma alanı kullanır. Sandbox içindeki agent çalışma alanı erişimini de değerlendirin:
  • agents.defaults.sandbox.workspaceAccess: "none" (varsayılan), agent çalışma alanını erişime kapatır; araçlar ~/.openclaw/sandboxes altındaki bir sandbox çalışma alanına karşı çalışır
  • agents.defaults.sandbox.workspaceAccess: "ro", agent çalışma alanını /agent altında salt okunur bağlar (write/edit/apply_patch devre dışı kalır)
  • agents.defaults.sandbox.workspaceAccess: "rw", agent çalışma alanını /workspace altında okuma/yazma olarak bağlar
  • Ek sandbox.docker.binds, normalize edilmiş ve kanonikleştirilmiş kaynak yollarına göre doğrulanır. Parent-symlink hileleri ve kanonik home alias’ları, /etc, /var/run veya OS home altındaki kimlik bilgisi dizinleri gibi engellenmiş köklere çözülürse yine fail-closed çalışır.
Önemli: tools.elevated, exec’i sandbox dışında çalıştıran genel temel kaçış kapağıdır. Etkin host varsayılan olarak gateway, exec hedefi node olarak yapılandırılmışsa node olur. tools.elevated.allowFrom listesini dar tutun ve bunu yabancılar için etkinleştirmeyin. Ayrıca agent başına agents.list[].tools.elevated ile elevated erişimini daha da kısıtlayabilirsiniz. Bkz. Elevated Mode.

Alt-agent delegasyonu koruması

Oturum araçlarına izin veriyorsanız, devredilmiş alt-agent çalıştırmalarını da ayrı bir sınır kararı olarak değerlendirin:
  • Agent gerçekten delegasyona ihtiyaç duymuyorsa sessions_spawn işlemini reddedin.
  • agents.defaults.subagents.allowAgents ile agent başına agents.list[].subagents.allowAgents geçersiz kılmalarını bilinen güvenli hedef agent’larla sınırlı tutun.
  • Sandbox içinde kalması gereken her iş akışı için sessions_spawn çağrısını sandbox: "require" ile yapın (varsayılan inherittir).
  • sandbox: "require", hedef alt çalışma zamanı sandbox içinde değilse hızlıca başarısız olur.

Tarayıcı kontrolü riskleri

Tarayıcı kontrolünü etkinleştirmek, modele gerçek bir tarayıcıyı sürme yeteneği verir. Bu tarayıcı profili zaten oturum açılmış oturumlar içeriyorsa, model bu hesaplara ve verilere erişebilir. Tarayıcı profillerini hassas durum olarak değerlendirin:
  • Agent için ayrılmış bir profil tercih edin (varsayılan openclaw profili).
  • Agent’ı kişisel günlük kullandığınız profile yönlendirmekten kaçının.
  • Sandbox içinde çalışan agent’lar için, onlara güvenmiyorsanız host tarayıcı kontrolünü devre dışı tutun.
  • Bağımsız loopback tarayıcı kontrol API’si yalnızca paylaşılan secret auth’u (Gateway token bearer auth veya Gateway parolası) kabul eder. Trusted proxy veya Tailscale Serve kimlik header’larını kullanmaz.
  • Tarayıcı indirmelerini güvenilmeyen girdi olarak değerlendirin; izole bir indirmeler dizini tercih edin.
  • Mümkünse agent profilinde tarayıcı senkronizasyonunu/parola yöneticilerini devre dışı bırakın (etki alanını azaltır).
  • Uzak Gateway’ler için, “tarayıcı kontrolü”nü o profilin erişebildiği her şeye “operatör erişimi” ile eşdeğer kabul edin.
  • Gateway ve Node host’ları yalnızca tailnet üzerinde tutun; tarayıcı kontrol port’larını LAN veya genel İnternet’e açmaktan kaçının.
  • İhtiyacınız olmadığında tarayıcı proxy yönlendirmesini devre dışı bırakın (gateway.nodes.browser.mode="off").
  • Chrome MCP mevcut oturum modu daha güvenli değildir; o host’taki Chrome profilinin erişebildiği her şeyde sizin adınıza işlem yapabilir.

Tarayıcı SSRF politikası (varsayılan olarak sıkı)

OpenClaw’ın tarayıcı gezinme politikası varsayılan olarak sıkıdır: açıkça opt-in yapmadıkça özel/dahili hedefler engelli kalır.
  • Varsayılan: browser.ssrfPolicy.dangerouslyAllowPrivateNetwork ayarlı değildir; bu nedenle tarayıcı gezinmesi özel/dahili/özel amaçlı hedefleri engelli tutar.
  • Eski alias: browser.ssrfPolicy.allowPrivateNetwork uyumluluk için hâlâ kabul edilir.
  • Opt-in modu: özel/dahili/özel amaçlı hedeflere izin vermek için browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true ayarlayın.
  • Sıkı modda, açık istisnalar için hostnameAllowlist (*.example.com gibi desenler) ve allowedHostnames (localhost gibi engellenmiş adlar dahil tam host istisnaları) kullanın.
  • Gezinme, yönlendirme tabanlı pivot’ları azaltmak için istekten önce ve gezinme sonrasındaki son http(s) URL üzerinde en iyi çabayla yeniden kontrol edilir.
Örnek sıkı politika:
{
  browser: {
    ssrfPolicy: {
      dangerouslyAllowPrivateNetwork: false,
      hostnameAllowlist: ["*.example.com", "example.com"],
      allowedHostnames: ["localhost"],
    },
  },
}

Agent başına erişim profilleri (çoklu agent)

Çoklu agent yönlendirmesiyle, her agent kendi sandbox + araç politikasına sahip olabilir: bunu agent başına tam erişim, salt okunur veya erişim yok vermek için kullanın. Tam ayrıntılar ve öncelik kuralları için Çoklu Agent Sandbox ve Araçlar bölümüne bakın. Yaygın kullanım durumları:
  • Kişisel agent: tam erişim, sandbox yok
  • Aile/iş agent’ı: sandbox içinde + salt okunur araçlar
  • Genel agent: sandbox içinde + dosya sistemi/shell araçları yok

Örnek: tam erişim (sandbox yok)

{
  agents: {
    list: [
      {
        id: "personal",
        workspace: "~/.openclaw/workspace-personal",
        sandbox: { mode: "off" },
      },
    ],
  },
}

Örnek: salt okunur araçlar + salt okunur çalışma alanı

{
  agents: {
    list: [
      {
        id: "family",
        workspace: "~/.openclaw/workspace-family",
        sandbox: {
          mode: "all",
          scope: "agent",
          workspaceAccess: "ro",
        },
        tools: {
          allow: ["read"],
          deny: ["write", "edit", "apply_patch", "exec", "process", "browser"],
        },
      },
    ],
  },
}

Örnek: dosya sistemi/shell erişimi yok (sağlayıcı mesajlaşmasına izinli)

{
  agents: {
    list: [
      {
        id: "public",
        workspace: "~/.openclaw/workspace-public",
        sandbox: {
          mode: "all",
          scope: "agent",
          workspaceAccess: "none",
        },
        // Session araçları, transkriptlerden hassas verileri açığa çıkarabilir. Varsayılan olarak OpenClaw bu araçları
        // mevcut oturum + oluşturulmuş alt-agent oturumlarıyla sınırlar, ancak gerekirse daha da sıkılaştırabilirsiniz.
        // Yapılandırma referansında `tools.sessions.visibility` bölümüne bakın.
        tools: {
          sessions: { visibility: "tree" }, // self | tree | agent | all
          allow: [
            "sessions_list",
            "sessions_history",
            "sessions_send",
            "sessions_spawn",
            "session_status",
            "whatsapp",
            "telegram",
            "slack",
            "discord",
          ],
          deny: [
            "read",
            "write",
            "edit",
            "apply_patch",
            "exec",
            "process",
            "browser",
            "canvas",
            "nodes",
            "cron",
            "gateway",
            "image",
          ],
        },
      },
    ],
  },
}

Yapay zekanıza ne söylemelisiniz

Agent’ınızın system prompt’una güvenlik yönergeleri ekleyin:
## Security Rules
- Yabancılarla dizin listelerini veya dosya yollarını asla paylaşma
- API anahtarlarını, kimlik bilgilerini veya altyapı ayrıntılarını asla açığa çıkarma
- Sistem yapılandırmasını değiştiren istekleri owner ile doğrula
- Emin değilsen işlem yapmadan önce sor
- Açıkça yetki verilmedikçe özel verileri özel tut

Olay müdahalesi

Yapay zekanız kötü bir şey yaparsa:

Sınırlayın

  1. Durdurun: macOS uygulamasını durdurun (Gateway’yi denetliyorsa) veya openclaw gateway sürecinizi sonlandırın.
  2. Maruziyeti kapatın: ne olduğunu anlayana kadar gateway.bind: "loopback" ayarlayın (veya Tailscale Funnel/Serve’ü devre dışı bırakın).
  3. Erişimi dondurun: riskli DM’leri/grupları dmPolicy: "disabled" durumuna alın / mention zorunlu kılın ve varsa "*" allow-all girdilerini kaldırın.

Döndürün (secret’lar sızdıysa ihlal varsayın)

  1. Gateway auth’u döndürün (gateway.auth.token / OPENCLAW_GATEWAY_PASSWORD) ve yeniden başlatın.
  2. Gateway’yi çağırabilen her makinede uzak istemci secret’larını (gateway.remote.token / .password) döndürün.
  3. Sağlayıcı/API kimlik bilgilerini döndürün (WhatsApp kimlik bilgileri, Slack/Discord token’ları, auth-profiles.json içindeki model/API anahtarları ve kullanılıyorsa şifrelenmiş secret payload değerleri).

Denetleyin

  1. Gateway log’larını kontrol edin: /tmp/openclaw/openclaw-YYYY-MM-DD.log (veya logging.file).
  2. İlgili transkript(ler)i inceleyin: ~/.openclaw/agents/<agentId>/sessions/*.jsonl.
  3. Son yapılandırma değişikliklerini inceleyin (erişimi genişletmiş olabilecek her şey: gateway.bind, gateway.auth, DM/grup politikaları, tools.elevated, Plugin değişiklikleri).
  4. openclaw security audit --deep komutunu yeniden çalıştırın ve kritik bulguların çözüldüğünü doğrulayın.

Bir rapor için toplayın

  • Zaman damgası, Gateway host OS’si + OpenClaw sürümü
  • Oturum transkript(ler)i + kısa bir log sonu kesiti (redaksiyondan sonra)
  • Saldırganın ne gönderdiği + agent’ın ne yaptığı
  • Gateway’nin loopback ötesine açılıp açılmadığı (LAN/Tailscale Funnel/Serve)

Secret Scanning (detect-secrets)

CI, secrets job’ında detect-secrets pre-commit hook’unu çalıştırır. main dalına yapılan push’lar her zaman tüm dosyaları tarar. Pull request’ler, bir taban commit mevcutsa değişen dosya hızlı yolunu kullanır; aksi hâlde tüm dosya taramasına geri döner. Başarısız olursa, baseline’da henüz bulunmayan yeni adaylar vardır.

CI başarısız olursa

  1. Yerelde yeniden üretin:
    pre-commit run --all-files detect-secrets
    
  2. Araçları anlayın:
    • Pre-commit içindeki detect-secrets, deponun baseline ve exclude ayarlarıyla detect-secrets-hook çalıştırır.
    • detect-secrets audit, her baseline öğesini gerçek veya false positive olarak işaretlemek için etkileşimli bir inceleme açar.
  3. Gerçek secret’lar için: bunları döndürün/kaldırın, ardından baseline’ı güncellemek için taramayı yeniden çalıştırın.
  4. False positive’ler için: etkileşimli denetimi çalıştırın ve bunları false olarak işaretleyin:
    detect-secrets audit .secrets.baseline
    
  5. Yeni exclude’lara ihtiyacınız varsa, bunları .detect-secrets.cfg dosyasına ekleyin ve eşleşen --exclude-files / --exclude-lines bayraklarıyla baseline’ı yeniden oluşturun (config dosyası yalnızca referans içindir; detect-secrets onu otomatik olarak okumaz).
Güncellenmiş .secrets.baseline dosyasını, amaçlanan durumu yansıttığında commit edin.

Güvenlik sorunlarını bildirme

OpenClaw’da bir güvenlik açığı mı buldunuz? Lütfen sorumlu şekilde bildirin:
  1. E-posta: security@openclaw.ai
  2. Düzeltilene kadar herkese açık paylaşmayın
  3. Size atıf yaparız (anonim kalmayı tercih etmediğiniz sürece)