Gateway
Güvenlik
Kapsam: kişisel asistan güvenlik modeli
- Desteklenen: gateway başına bir kullanıcı/güven sınırı (sınır başına tercihen bir işletim sistemi kullanıcısı/ana makine/VPS).
- Desteklenmeyen: karşılıklı olarak güvenilmeyen veya kötü niyetli kullanıcıların kullandığı tek bir paylaşılan gateway/agent.
- Kötü niyetli kullanıcı yalıtımı, ayrı gateway'ler (ve ideal olarak ayrı işletim sistemi kullanıcıları/ana makineler) gerektirir.
- Güvenilmeyen birkaç kullanıcı, araçların etkin olduğu tek bir agent'a mesaj gönderebiliyorsa bu agent'ın devredilmiş araç yetkisini paylaşırlar.
- Birisi Gateway ana makinesinin durumunu/yapılandırmasını (
~/.openclaw,openclaw.jsondâhil) değiştirebiliyorsa onu güvenilir bir operatör olarak değerlendirin. - Tek bir Gateway 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.
sessionKey(oturum kimlikleri, etiketler) bir yönlendirme seçicisidir, yetkilendirme belirteci değildir.
Birden fazla kullanıcı veya kuruluş mu barındırıyorsunuz? Bir Gateway'i paylaşmak yerine her kiracı için yalıtılmış bir Gateway hücresi çalıştırın. Bkz. Çok kiracılı barındırma.
Uzaktan erişimi, DM politikasını, ters proxy'yi veya herkese açık erişimi değiştirmeden önce, ön kontrol/geri alma denetim listesi olarak Gateway erişime açma çalışma kılavuzunu izleyin.
openclaw security audit
Bunu her yapılandırma değişikliğinden sonra veya ağ yüzeylerini erişime açmadan önce çalıştırın:
openclaw security auditopenclaw security audit --deep # canlı bir Gateway yoklaması yapmayı deneropenclaw security audit --fix # güvenli düzeltmeleri uygulaopenclaw security audit --json--fix kasıtlı olarak dar kapsamlıdır: açık grup politikalarını izin verilenler listelerine dönüştürür, logging.redactSensitive: "tools" ayarını geri yükler, durum/yapılandırma/içerme dosyası izinlerini sıkılaştırır (600 dosyaları, 700 dizinleri) ve Windows'ta POSIX chmod yerine ACL sıfırlamalarını kullanır.
Denetimin kontrol ettikleri (üst düzey)
- Gelen erişim - DM/grup politikaları, izin verilenler listeleri: yabancılar botu tetikleyebilir mi?
- Araç etki alanı - yükseltilmiş araçlar + açık odalar: istem enjeksiyonu kabuk/dosya/ağ eylemlerine dönüşebilir mi?
- Exec dosya sistemi sapması -
exec/processsandbox kısıtlamaları olmadan kullanılabilir durumdayken dosya sistemini değiştiren araçların reddedilmesi. - Exec onay sapması -
security="full",autoAllowSkills,strictInlineEvalolmadan yorumlayıcı izin listeleri.security="full"tek başına bir hata kanıtı değil, genel bir güvenlik duruşu uyarısıdır; güvenilir kişisel asistan kurulumları için seçilmiş varsayılandır. Yalnızca tehdit modeliniz onay veya izin listesi korumaları gerektiriyorsa sıkılaştırın. - Ağ erişimi - Gateway bağlama/kimlik doğrulaması, Tailscale Serve/Funnel, zayıf/kısa kimlik doğrulama belirteçleri.
- Tarayıcı denetimi erişimi - uzak Node'lar, aktarma bağlantı noktaları, uzak CDP uç noktaları.
- Yerel disk düzeni - izinler, sembolik bağlantılar, yapılandırma içerme işlemleri, eşitlenmiş klasör yolları.
- Plugin'ler - açık bir izin verilenler listesi olmadan yükleme.
- Politika sapması - sandbox Docker ayarları yapılandırılmışken sandbox modunun kapalı olması; etkili görünen ancak yük içindeki kabuk metniyle değil, yalnızca tam komut kimlikleriyle (örneğin
system.run) eşleşengateway.nodes.commands.denygirdileri; tehlikeligateway.nodes.commands.allowgirdileri; agent başına geçersiz kılınan geneltools.profile="minimal"; izinleri geniş bir politika kapsamında erişilebilen Plugin'e ait araçlar. - Çalışma zamanı beklentisi sapması -
tools.exec.hostartık varsayılan olarakautodeğerini kullanırken örtük exec'in hâlâsandboxanlamına geldiğini varsaymak veya sandbox modu kapalıykentools.exec.host="sandbox"ayarlamak. - Model düzeni - eski yapılandırılmış modeller hakkında uyarır (kesin engel değil, hafif uyarı).
Her bulgunun yapılandırılmış bir checkId değeri vardır (örneğin gateway.bind_no_auth, tools.exec.security_full_configured). Ön ekler: fs.* (izinler), gateway.* (bağlama/kimlik doğrulaması/Tailscale/Control UI/güvenilir proxy), hooks.*/browser.*/sandbox.*/tools.exec.* (yüzey başına sağlamlaştırma), plugins.*/skills.* (tedarik zinciri), security.exposure.* (erişim politikası × araç etki alanı). Önem derecesi ve otomatik düzeltme desteğini içeren tam katalog: Güvenlik denetimi kontrolleri. Ayrıca bkz. Biçimsel Doğrulama.
Bulguları önceliklendirirken izlenecek sıra
- "Açık" olan ve araçların etkin olduğu her şey: önce DM'leri/grupları kısıtlayın (eşleştirme/izin verilenler listeleri), ardından araç politikasını/sandbox kullanımını sıkılaştırın.
- Herkese açık ağ erişimi (LAN bağlaması, Funnel, eksik kimlik doğrulaması): hemen düzeltin.
- Tarayıcı denetiminin uzaktan erişime açık olması: operatör erişimi gibi değerlendirin (yalnızca tailnet, Node'ları bilinçli olarak eşleştirme, herkese açık erişim yok).
- İzinler: durum/yapılandırma/kimlik bilgileri/kimlik doğrulama verileri grup veya herkes tarafından okunabilir olmamalıdır.
- Plugin'ler: yalnızca açıkça güvendiğiniz öğeleri yükleyin.
- Model seçimi: araçları olan her bot için güncel, talimatlara karşı sağlamlaştırılmış modelleri tercih edin.
60 saniyede sağlamlaştırılmış temel yapılandırma
{ 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 } } }, },}Gateway'i yalnızca yerel erişime açık tutar, DM'leri yalıtır ve kontrol düzlemi/çalışma zamanı araçlarını varsayılan olarak devre dışı bırakır. Buradan başlayarak güvenilir agent başına araçları seçerek yeniden etkinleştirin.
Sohbetle yürütülen agent dönüşleri için yerleşik temel yapılandırma: sahip olmayan gönderenler, yapılandırmadan bağımsız olarak cron veya gateway araçlarını kullanamaz.
İstekte bulunan kişiye özgü denetimler ve istem bağlamı
tools.toolsBySender, gönderen sahipliği ve yalnızca sahibe açık araç envanterleri, geçerli dönüşü başlatan istekte bulunan kişiye göre değerlendirilir. Alıntılanmış metin, önceki paylaşılan oda geçmişi, iletilen içerik, getirilen içerik, ekler, araç sonuçları veya diğer istem girdileri dâhil olmak üzere bu model istemindeki diğer içeriklerin kimliğini doğrulamaz veya bunları temizlemez. Bu nedenle başka bir kişiden gelen içerik, sahibin tetiklediği bir dönüşün bağlamına dâhil edildiğinde bu dönüşü etkileyebilir.
Bu denetimleri, istekte bulunan kişinin doğrudan yeteneklerini azaltan derinlemesine savunma olarak değerlendirin; kötü niyetli çok kullanıcılı yalıtım olarak değil. Desteklenen kanal tarafından sağlanan bağlamı filtrelemek için contextVisibility kullanın, araçları kısıtlayın ve agent'ı sandbox'a alın; katılımcılar karşılıklı olarak kötü niyetliyse ayrı gateway'ler ve ideal olarak ayrı işletim sistemi kullanıcıları veya ana makineler kullanın.
Güven sınırı matrisi
Risk raporlarını önceliklendirmek için hızlı model:
| Sınır veya denetim | Anlamı | Yaygın yanlış yorum |
|---|---|---|
gateway.auth (belirteç/parola/güvenilir proxy/cihaz kimlik doğrulaması) |
Gateway API'lerini çağıranların kimliğini doğrular | "Güvenli olması için her çerçevede mesaj başına imza gerekir" |
sessionKey |
Bağlam/oturum seçimi için yönlendirme anahtarı | "Oturum anahtarı bir kullanıcı kimlik doğrulama sınırıdır" |
| İstem/içerik korumaları | Modelin kötüye kullanılma riskini azaltır | "İstem enjeksiyonu tek başına kimlik doğrulama atlamasını kanıtlar" |
canvas.eval / tarayıcı değerlendirmesi |
Etkinleştirildiğinde kasıtlı operatör yeteneği | "Herhangi bir JS değerlendirme ilkeli bu güven modelinde otomatik olarak bir güvenlik açığıdır" |
Yerel TUI ! kabuğu |
Operatörün açıkça tetiklediği yerel yürütme | "Yerel kabuk kolaylık komutu uzaktan enjeksiyondur" |
| Node eşleştirme ve Node komutları | Eşleştirilmiş cihazlarda operatör düzeyinde uzaktan yürütme | "Uzak cihaz denetimi varsayılan olarak güvenilmeyen kullanıcı erişimi şeklinde değerlendirilmelidir" |
gateway.nodes.pairing.autoApproveCidrs |
İsteğe bağlı güvenilir ağ Node kayıt politikası | "Varsayılan olarak devre dışı bir izin verilenler listesi otomatik bir eşleştirme güvenlik açığıdır" |
gateway.nodes.pairing.sshVerify |
Operatör SSH bağlantısı üzerinden anahtarla doğrulanmış Node kaydı | "Varsayılan olarak açık otomatik onay, otomatik bir eşleştirme güvenlik açığıdır" |
Tasarım gereği güvenlik açığı olmayan durumlar
İşlem yapılmadan kapatılan yaygın bulgular
- Politika, kimlik doğrulama veya sandbox atlaması içermeyen, yalnızca istem enjeksiyonuna dayalı zincirler.
- Tek bir paylaşılan ana makine veya yapılandırmada kötü niyetli çok kiracılı kullanım varsayan iddialar.
- Paylaşılan gateway kurulumunda IDOR olarak sınıflandırılan normal operatör okuma yolu erişimi (örneğin
sessions.list/sessions.preview/chat.history). - Yalnızca localhost'a açık dağıtım bulguları (örneğin yalnızca geri döngüye açık bir gateway'de HSTS eksikliği).
- Bu depoda bulunmayan gelen yollar için Discord gelen Webhook imzası bulguları.
- Node eşleştirme meta verilerinin
system.runiçin gizli, komut başına ikinci bir onay katmanı olarak değerlendirilmesi; gerçek yürütme sınırı, gateway'in genel Node komutu politikası ile Node'un kendi exec onaylarıdır. gateway.nodes.pairing.sshVerifyvarsayılan olarak etkin olduğu için güvenlik açığı olarak değerlendirilir. Yalnızca ağ konumuna veya SSH erişilebilirliğine dayanarak hiçbir zaman onay vermez: gateway cihaz kimliğini SSH üzerinden geri okur (BatchMode, katı ana makine anahtarları) ve yalnızca bekleyen istekle cihaz anahtarı tam olarak eşleştiğinde onaylar; bunun için bağlanan anahtar çiftinin, operatörün denetlediği bir ana makinedeki operatör hesabında zaten bulunması gerekir. Yoklamalar özel/CGNAT kaynak adresleriyle sınırlıdır, güvenilir CIDR uygunluk alt sınırını paylaşır (yalnızca yeni ve kapsamsızrole: node) vesshVerify: falseözelliği kapatır.gateway.nodes.pairing.autoApproveCidrstek başına güvenlik açığı olarak değerlendirilir. Varsayılan olarak devre dışıdır, açık CIDR/IP girdileri gerektirir, yalnızca istenen kapsamı olmayan ilkrole: nodeeşleştirmesinde uygulanır ve operatör/tarayıcı/Control UI, WebChat, rol/kapsam yükseltmeleri, meta veri veya açık anahtar değişiklikleri ya da aynı ana makinenin geri döngü güvenilir proxy başlık yollarını (geri döngü güvenilir proxy kimlik doğrulaması etkin olsa bile) hiçbir zaman otomatik olarak onaylamaz.sessionKeydeğerini kimlik doğrulama belirteci olarak değerlendiren "kullanıcı başına yetkilendirme eksikliği" bulguları.
Gateway ve Node güveni
Gateway ile Node'u farklı rollere sahip tek bir operatör güven alanı olarak değerlendirin:
- Gateway: kontrol düzlemi ve politika yüzeyi (
gateway.auth, araç politikası, yönlendirme). - Node: söz konusu Gateway ile eşleştirilmiş uzaktan yürütme yüzeyi (komutlar, cihaz eylemleri, ana makineye yerel yetenekler).
- Gateway'de kimliği doğrulanmış bir çağırana Gateway kapsamında güvenilir; eşleştirmeden sonra Node eylemleri, söz konusu Node üzerindeki güvenilir operatör eylemleridir. Bkz. Operatör kapsamları.
- Paylaşılan Gateway belirteci/parolasıyla kimliği doğrulanan doğrudan geri döngü arka uç istemcileri, bir kullanıcı cihazı kimliği sunmadan dahili kontrol düzlemi RPC'leri gerçekleştirebilir. Bu, uzaktan veya tarayıcı üzerinden eşleştirmeyi atlama yolu değildir; ağ istemcileri, Node istemcileri, cihaz belirteci istemcileri ve açık cihaz kimlikleri yine eşleştirme ve kapsam yükseltme denetimlerinden geçer.
- Yürütme onayları (izin verilenler listesi + sorma), düşmanca çok kiracılı yalıtım için değil, operatör niyetine yönelik koruyucu önlemlerdir. Tam istek bağlamını ve en iyi çabayla doğrudan yerel dosya işlenenlerini bağlarlar; her çalışma zamanı/yorumlayıcı yükleyici yolunu anlamsal olarak modellemezler. Güçlü sınırlar için korumalı alan ve ana makine yalıtımı kullanın.
- Güvenilir tek operatör varsayılanı:
gateway/nodeüzerinde ana makine yürütmesine onay istemleri olmadan izin verilir (security="full",ask="off"). Bu, kasıtlı bir kullanıcı deneyimi tercihidir; tek başına bir güvenlik açığı değildir.
Düşmanca kullanıcı yalıtımı için güven sınırlarını işletim sistemi kullanıcısına/ana makineye göre ayırın ve ayrı Gateway'ler çalıştırın.
Tehdit modeli
Yapay zekâ asistanınız rastgele kabuk komutları yürütebilir, dosyaları okuyabilir/yazabilir, ağ hizmetlerine erişebilir ve (kanal erişimi verilmişse) herkese mesaj gönderebilir. Ona mesaj gönderen kişiler, onu kötü şeyler yapmaya kandırmaya, sosyal mühendislikle verilerinize erişmeye veya altyapı ayrıntılarını araştırmaya çalışabilir.
Buradaki hataların çoğu sıra dışı istismarlar değildir; "birisi bota mesaj gönderdi ve bot da isteneni yaptı" durumudur. OpenClaw'ın yaklaşımı sırasıyla şöyledir:
- Önce kimlik - botla kimin konuşabileceğine karar verin (DM eşleştirmesi / izin verilenler listeleri / açıkça "open").
- Ardından kapsam - botun nerede eylem gerçekleştirebileceğine karar verin (grup izin verilenler listeleri + bahsetme kapısı, araçlar, korumalı alan, cihaz izinleri).
- En son model - modelin manipüle edilebileceğini varsayın; sistemi, manipülasyonun etki alanı sınırlı olacak şekilde tasarlayın.
DM erişimi: eşleştirme, izin verilenler listesi, açık, devre dışı
DM özellikli her kanal, mesaj işlenmeden önce gelen DM'leri denetleyen dmPolicy (veya *.dm.policy) özelliğini destekler:
| Politika | Davranış |
|---|---|
pairing |
Varsayılan. Bilinmeyen göndericiler bir eşleştirme kodu alır; onaylanana kadar bot onları yok sayar. Kodların süresi 1 saat sonra dolar; yeni bir istek oluşturulana kadar tekrarlanan DM'lerde kod yeniden gönderilmez. Bekleyen istekler kanal başına en fazla 3 olabilir. |
allowlist |
Bilinmeyen göndericiler engellenir, eşleştirme el sıkışması yapılmaz. |
open |
Herkes DM gönderebilir (herkese açık). Kanalın izin verilenler listesine "*" eklenmesini gerektirir (açıkça katılım). |
disabled |
Gelen DM'ler tamamen yok sayılır. |
openclaw pairing list <channel>openclaw pairing approve <channel> <code>Ayrıntılar ve diskteki dosyalar: Eşleştirme
dmPolicy="open" ve groupPolicy="open" ayarlarını son çare olarak değerlendirin; odadaki her üyeye tamamen güvenmediğiniz sürece eşleştirme + izin verilenler listelerini tercih edin.
İzin verilenler listeleri (iki katman)
- DM izin verilenler listesi (
allowFrom/channels.discord.allowFrom/channels.slack.allowFrom; eski:channels.discord.dm.allowFrom,channels.slack.dm.allowFrom): bota kimlerin DM gönderebileceği.dmPolicy="pairing"olduğunda onaylar, yapılandırma izin verilenler listeleriyle birleştirilmek üzere~/.openclaw/credentials/<channel>-allowFrom.json(varsayılan hesap) veya<channel>-<accountId>-allowFrom.json(varsayılan olmayan hesaplar) konumuna yazılır. - Grup izin verilenler listesi (kanala özgü): botun hangi grupları/kanalları/sunucuları kabul ettiği.
channels.whatsapp.groups,channels.telegram.groups,channels.imessage.groups:requireMentiongibi grup başına varsayılanlar; ayarlandığında ayrıca bir grup izin verilenler listesi işlevi görür (tümüne izin verme davranışını korumak için"*"ekleyin).requireMentionöğesinin kendi bot adlarınızı temel alarak denetim yapması için bahsetme tetikleyicileriniagents.entries.*.groupChat.mentionPatterns(örneğin["@openclaw", "@mybot"]) ile özelleştirin.groupPolicy="allowlist"+groupAllowFrom: bir grup oturumunda botu kimlerin tetikleyebileceğini kısıtlar (WhatsApp/Telegram/Signal/iMessage/Microsoft Teams).channels.discord.guilds/channels.slack.channels: yüzey başına izin verilenler listeleri + bahsetme varsayılanları.- Denetim sırası: önce
groupPolicy/grup izin verilenler listeleri, ardından bahsetme/yanıtlama etkinleştirmesi. Bir bot mesajına yanıt vermek (örtük bahsetme),groupAllowFromdenetimini atlamaz.
Ayrıntılar: Yapılandırma ve Gruplar
DM oturumu yalıtımı (çok kullanıcılı mod)
OpenClaw varsayılan olarak cihazlar arası süreklilik için tüm DM'leri ana oturuma yönlendirir. Birden fazla kişi bota DM gönderebiliyorsa (açık DM'ler veya birden fazla kişiden oluşan izin verilenler listesi), DM oturumlarını yalıtın:
{ session: { dmScope: "per-channel-peer" } }session.dmScope değerleri:
| Değer | Kapsam |
|---|---|
main (yapılandırma varsayılanı) |
Tüm DM'ler tek bir oturumu paylaşır. |
per-channel-peer |
Her kanal+gönderici çifti yalıtılmış bir DM bağlamı edinir (güvenli DM modu). |
per-account-channel-peer |
Yukarıdaki gibi, ayrıca hesaba göre ayrılır (çok hesaplı kanallar). |
per-peer |
Her gönderici, aynı türdeki tüm kanallarda tek bir oturum edinir. |
Yerel CLI ilk katılımı, açıkça belirtilmiş bir session.dmScope değerini korur; aksi hâlde bu değeri ayarlanmamış bırakır ve böylece "main" varsayılanı uygulanır: kanallar arasındaki tüm doğrudan mesajlar, aracının sürekli ilerleyen ana oturumunu paylaşır (kişisel aracı varsayılanı). Paylaşılan veya çok kullanıcılı gelen kutuları için session.dmScope: "per-channel-peer" ayarlayın; openclaw security audit, çok kullanıcılı DM trafiği algıladığında yalıtımı önerir.
Bu, bir mesajlaşma bağlamı sınırıdır; ana makine yöneticisi sınırı değildir. Kullanıcılar birbirine karşı düşmancaysa ve aynı Gateway ana makinesini/yapılandırmasını paylaşıyorsa bunun yerine her güven sınırı için ayrı Gateway'ler çalıştırın.
Aynı kişi sizinle birden fazla kanaldan iletişime geçiyorsa bu DM oturumlarını tek bir kurallı kimlikte birleştirmek için session.identityLinks kullanın. Bkz. Oturum Yönetimi ve Yapılandırma.
Bağlam görünürlüğü ve tetikleme yetkilendirmesi
İki ayrı kavram vardır:
- Tetikleme yetkilendirmesi: aracıyı kimlerin tetikleyebileceği (
dmPolicy,groupPolicy, izin verilenler listeleri, bahsetme kapıları). - Bağlam görünürlüğü: hangi tamamlayıcı bağlamın modele ulaştığı (yanıt gövdesi, alıntılanan metin, ileti dizisi geçmişi, iletilen meta veriler).
contextVisibility ikincisini denetler:
"all"(varsayılan): tamamlayıcı bağlam alındığı şekilde korunur."allowlist": tamamlayıcı bağlam, etkin izin verilenler listesi denetimlerinin izin verdiği göndericilere göre filtrelenir."allowlist_quote":allowlistgibi çalışır, ancak yine de açıkça alıntılanmış tek bir yanıtı korur.
Kanal veya oda/konuşma başına ayarlayın; bkz. Gruplar. Yalnızca "model, izin verilenler listesinde olmayan göndericilerden gelen alıntılanmış/geçmiş metinleri görebiliyor" durumunu gösteren raporlar, tek başlarına kimlik doğrulama veya korumalı alan atlamaları değil, contextVisibility ile giderilebilen sağlamlaştırma bulgularıdır; güvenlik etkisi olan bir raporun yine de kanıtlanmış bir güven sınırı atlaması göstermesi gerekir.
İstem enjeksiyonu
Saldırgan, modeli güvenli olmayan bir eyleme yönlendirmek için manipüle eden bir mesaj hazırlar ("talimatlarını yok say", "dosya sisteminin dökümünü çıkar", "bu bağlantıyı izle ve komutları çalıştır"). İstem enjeksiyonu yalnızca sistem istemi koruyucu önlemleriyle çözülmez; bunlar esnek yönlendirmelerdir. Katı yaptırım araç politikasından, yürütme onaylarından, korumalı alandan ve kanal izin verilenler listelerinden gelir (operatörler bunları tasarım gereği yine devre dışı bırakabilir).
İstem enjeksiyonu herkese açık DM'ler gerektirmez: bota yalnızca siz mesaj gönderebilseniz bile, okuduğu herhangi bir güvenilmeyen içerik (web arama/getirme sonuçları, tarayıcı sayfaları, e-postalar, belgeler, ekler, yapıştırılan günlükler/kod) kötü niyetli talimatlar taşıyabilir. Yalnızca gönderen değil, içeriğin kendisi de bir tehdit yüzeyidir.
Güvenilmez olarak değerlendirilmesi gereken tehlike işaretleri:
- "Bu dosyayı/URL'yi oku ve söylediklerini aynen yap."
- "Sistem istemini veya güvenlik kurallarını yok say."
- "Gizli talimatlarını veya araç çıktılarını açıkla."
- "~/.openclaw dizininin veya günlüklerinin tüm içeriğini yapıştır."
Pratikte yardımcı olan önlemler:
- Gelen DM'leri kısıtlı tutun (eşleştirme/izin verilenler listeleri); gruplarda bahsetme kapısını tercih edin; herkese açık odalarda sürekli etkin botlardan kaçının.
- Bağlantıları, ekleri ve yapıştırılan talimatları varsayılan olarak düşmanca değerlendirin.
- Hassas araç yürütmelerini korumalı alanda çalıştırın; gizli bilgileri aracının erişebildiği dosya sisteminin dışında tutun. Korumalı alan isteğe bağlıdır: korumalı alan modu kapalıysa örtük
host=auto, Gateway ana makinesine çözümlenirken açıkhost=sandboxkapalı şekilde başarısız olmaya devam eder (kullanılabilir korumalı alan çalışma zamanı yoktur). Bu davranışı yapılandırmada açıkça belirtmek içinhost=gatewayayarlayın. - Yüksek riskli araçları (
exec,browser,web_fetch,web_search) güvenilir aracılarla veya açık izin verilenler listeleriyle sınırlayın. - Yorumlayıcıları (
python,node,ruby,perl,php,lua,osascript) izin verilenler listesine ekliyorsanız satır içi değerlendirme biçimlerinin (-c,-eve benzerleri) yine de açık onay gerektirmesi içintools.exec.strictInlineEvalözelliğini etkinleştirin. İzin verilenler listesi modunda herhangi bir heredoc bölümü (<<), alıntılama biçiminden bağımsız olarak her zaman inceleyici veya açık onay gerektirir; izin verilen bir komut, izin verilenler listesi incelemesini atlamak için heredoc gövdesi kullanamaz. - Güvenilmeyen içeriği özetlemek için salt okunur veya araçları devre dışı bırakılmış bir okuyucu aracı kullanarak etki alanını azaltın, ardından özeti ana aracınıza iletin.
- Gmail kancaları için yerleşik mesaj başına oturum, konuşma bağlamını yalıtır ancak hedef aracının araç veya çalışma alanı izinlerini kaldırmaz. Güvenilmeyen postaları özel bir okuyucu aracıya yönlendirin, aracı başına korumalı alan ve araç kısıtlamalarını uygulayın ve ana aracıya yapılan aktarımları
tools.agentToAgentile kısıtlayın. Bkz. Gmail entegrasyonu. - Gerekmedikçe araç özellikli aracılar için
web_search/web_fetch/browserseçeneklerini kapalı tutun. - OpenResponses URL girdileri (
input_file/input_image) için sıkı birgateway.http.endpoints.responses.files.urlAllowlist/images.urlAllowlistayarlayın vemaxUrlPartsdeğerini düşük tutun (boş izin verilenler listeleri ayarlanmamış sayılır). URL getirmeyi tamamen devre dışı bırakmak içinfiles.allowUrl: false/images.allowUrl: falsekullanın. - Gizli bilgileri istemlerin dışında tutun; bunları bunun yerine Gateway ana makinesindeki ortam/yapılandırma üzerinden iletin.
Model seçimi önemlidir. İstem enjeksiyonuna karşı direnç model katmanları arasında aynı değildir; daha küçük/ucuz modeller, kötü niyetli istemler altında araçların kötüye kullanılmasına ve talimatların ele geçirilmesine daha açıktır.
- Araç çalıştırabilen veya dosyalara/ağlara erişebilen tüm botlar için en yeni nesil, en üst katman modeli kullanın.
- Araç özellikli aracılar veya güvenilmeyen gelen kutuları için eski/zayıf/küçük katmanları kullanmayın.
- Daha küçük bir model kullanmanız gerekiyorsa etki alanını daraltın: salt okunur araçlar, güçlü korumalı alan, en az düzeyde dosya sistemi erişimi ve katı izin listeleri. Tüm oturumlar için korumalı alanı etkinleştirin ve girdiler sıkı biçimde denetlenmediği sürece
web_search/web_fetch/browserözelliklerini devre dışı bırakın. - Güvenilir girdilere sahip ve araç kullanmayan, yalnızca sohbet amaçlı kişisel asistanlarda daha küçük modeller genellikle uygundur.
Harici içerik ve güvenilmeyen girdi sarmalama
Gateway bunu yerel olarak çözümlese de OpenResponses input_file metni güvenilmeyen harici içerik olarak enjekte edilmeye devam eder; blok, <<<EXTERNAL_UNTRUSTED_CONTENT ...>>> sınır işaretleyicilerinin yanı sıra Source: External meta verilerini taşır (bu yol, başka yerlerde kullanılan daha uzun SECURITY NOTICE: başlığını içermez). Aynı işaretleyici tabanlı sarmalama, medya anlama özelliği ekli belgelerden metin çıkarıp medya istemine eklediğinde de uygulanır.
OpenClaw ayrıca yaygın şekilde kendi kendine barındırılan LLM sohbet şablonlarının özel belirteç değişmezlerini (Qwen/ChatML, Llama, Gemma, Mistral, Phi, GPT-OSS rol/tur belirteçleri), modele ulaşmadan önce sarmalanmış harici içerikten ve meta verilerden kaldırır. Kendi kendine barındırılan OpenAI uyumlu arka uçlar (vLLM, SGLang, TGI, LM Studio, özel Hugging Face belirteçleştirici yığınları) bazen <|im_start|> veya <|start_header_id|> gibi değişmez dizeleri kullanıcı içeriği içindeki yapısal sohbet şablonu belirteçleri olarak belirteçleştirir; bu temizleme yapılmazsa getirilen bir sayfadaki, e-posta gövdesindeki veya dosya içeriği aracı çıktısındaki güvenilmeyen metin, sentetik bir assistant/system rol sınırı oluşturabilir. Temizleme, harici içerik sarmalama katmanında gerçekleştiği için getirme/okuma araçları ve gelen kanal içeriği genelinde aynı şekilde uygulanır. Barındırılan sağlayıcılar (OpenAI, Anthropic) istek tarafında zaten kendi temizleme işlemlerini uygular; harici içerik sarmalamayı etkin tutun ve kullanılabildiğinde özel belirteçleri bölen/kaçışlayan arka uç ayarlarını tercih edin.
Giden model yanıtlarında, sızan <tool_call>, <function_calls>, <system-reminder>, <previous_response> ve benzeri dahili yapı iskelesini kullanıcıya görünür yanıtlardan son kanal teslim sınırında kaldıran ayrı bir temizleyici bulunur.
Bu, dmPolicy, izin listeleri, çalıştırma onayları, korumalı alan veya contextVisibility yerine geçmez; belirteçleştirici katmanındaki belirli bir atlatma yöntemini kapatır.
Atlatma bayrakları (üretimde kapalı tutun)
hooks.mappings[].allowUnsafeExternalContenthooks.gmail.allowUnsafeExternalContent- Cron yük alanı
allowUnsafeExternalContent
Yalnızca kapsamı sıkı biçimde sınırlandırılmış hata ayıklama işlemleri için geçici olarak etkinleştirin; etkinleştirilirse söz konusu aracıyı yalıtın (korumalı alan + en az araç + ayrılmış oturum ad alanı).
Teslimat denetiminizdeki sistemlerden gelse bile kanca yükleri güvenilmeyen içeriktir (posta/belgeler/web içeriği istem enjeksiyonu taşıyabilir). Zayıf model katmanları bu riski artırır; kancayla yürütülen otomasyonlarda güçlü ve modern model katmanlarını tercih edin, araç politikasını sıkı tutun (tools.profile: "messaging" veya daha katısı) ve mümkün olduğunda korumalı alan kullanın.
Gruplarda akıl yürütme ve ayrıntılı çıktı
/reasoning, /verbose ve /trace, herkese açık bir kanal için tasarlanmamış dahili akıl yürütmeyi, araç çıktısını veya plugin tanılamalarını açığa çıkarabilir; araç bağımsız değişkenlerini, URL'leri, plugin tanılamalarını ve modelin gördüğü verileri içerebilir. Bunları herkese açık odalarda devre dışı tutun; yalnızca güvenilir doğrudan mesajlarda veya sıkı biçimde denetlenen odalarda etkinleştirin.
Komut yetkilendirme
Eğik çizgi komutları ve yönergeler yalnızca kanal izin listelerinden/eşleştirmeden ve commands.useAccessGroups ayarından türetilen yetkili göndericiler için uygulanır (bkz. Yapılandırma ve Eğik çizgi komutları). Bir kanalın izin listesi boşsa veya "*" içeriyorsa komutlar söz konusu kanal için fiilen herkese açıktır.
/exec, yetkili operatörlere yönelik yalnızca oturum kapsamında bir kolaylıktır; yapılandırmaya yazmaz veya diğer oturumları değiştirmez.
Denetim düzlemi araçları
İki yerleşik araç denetim düzlemi açısından hassas olmaya devam eder:
gateway, yapılandırmayıconfig.schema.lookup/config.getile okur. Yapılandırmaya yazamaz, OpenClaw'ı güncelleyemez veya Gateway'i yeniden başlatamaz.cron, özgün sohbet/görev sona erdikten sonra da çalışmaya devam eden zamanlanmış işler oluşturur.
Yapılandırma okumaları sırları ve ana makine topolojisini açığa çıkarabileceğinden gateway aracı yalnızca sahip tarafından kullanılabilir. Aracılar, kalıcı yapılandırma veya yaşam döngüsü değişikliklerini openclaw yetkilendirme aracı üzerinden ister; OpenClaw bunları türü belirlenmiş işlemlere eşler ve uygulamadan önce insan onayı gerektirir. Bkz. OpenClaw kurulum aracısı.
Güvenilmeyen içerikleri işleyen tüm aracılarda/yüzeylerde bunları varsayılan olarak reddedin:
{ tools: { deny: ["gateway", "cron", "sessions_spawn", "sessions_send"], },}commands.restart=false, /restart ve harici SIGUSR1 yeniden başlatma isteklerini devre dışı bırakır. gateway aracı aracısında yeniden başlatma eylemi yoktur.
Node yürütme (system.run)
Bir macOS Node eşleştirilmişse Gateway, üzerinde system.run çağırabilir; bu, ilgili Mac'te uzaktan kod yürütmedir.
- Node eşleştirmesi (onay + belirteç) gerektirir. Eşleştirme, Node kimliğini/güvenini ve belirteç verilmesini tesis eder; komut başına bir onay yüzeyi değildir.
- Gateway,
gateway.nodes.commands.allow/gateway.nodes.commands.denyüzerinden kaba kapsamlı, genel bir Node komut politikası uygular. Reddetme listesi yalnızca tam Node komut adlarıyla (örneğinsystem.run) eşleşir; komut yükündeki kabuk metniyle eşleşmez. Farklı bir komut listesi bildiren, yeniden bağlanmış bir Node; Gateway'in genel politikası ve Node'un kendi çalıştırma onayları sınırı uygulamaya devam ediyorsa tek başına bir güvenlik açığı değildir. - Node başına
system.runpolitikası, Node'un kendi çalıştırma onayları dosyasıdır (exec.approvals.node.*); Mac'te Settings -> Exec approvals (security + ask + allowlist) üzerinden denetlenir ve Gateway'in genel komut kimliği politikasından daha katı veya daha gevşek olabilir. security="full"veask="off"çalıştıran bir Node, varsayılan güvenilir operatör modelini izler; dağıtımınız daha sıkı bir yaklaşım gerektirmediği sürece bu beklenen davranıştır, hata değildir.- Onay modu, tam istek bağlamını ve mümkün olduğunda tek bir somut yerel betik/dosya işlenenini bağlar. OpenClaw bir yorumlayıcı/çalışma zamanı komutu için doğrudan tek bir yerel dosyayı kesin olarak belirleyemezse tam anlamsal kapsam vadetmek yerine onay destekli yürütmeyi reddeder.
host=nodeiçin onay destekli çalıştırmalar ayrıca standartlaştırılmış, hazırlanmış birsystemRunPlandepolar; daha sonraki onaylı iletimler depolanan bu planı yeniden kullanır ve Gateway doğrulaması, onay isteği oluşturulduktan sonra çağıranın komut/cwd/oturum bağlamında yaptığı değişiklikleri reddeder.- Uzaktan yürütmeyi tamamen devre dışı bırakmak için güvenliği
denyolarak ayarlayın ve ilgili Mac'in Node eşleştirmesini kaldırın.
Dinamik Skills (izleyici / uzak Node'lar)
OpenClaw, Skills listesini oturumun ortasında yenileyebilir: Skills izleyicisi, SKILL.md değiştiğinde bir sonraki aracı turunda anlık görüntüyü günceller ve bir macOS Node'un bağlanması, yalnızca macOS'e özgü Skills öğelerini (ikili dosya yoklamasına göre) uygun hâle getirebilir. Skill klasörlerini güvenilir kod olarak değerlendirin ve bunları kimlerin değiştirebileceğini kısıtlayın.
Plugin'ler
Plugin'ler Gateway ile aynı işlem içinde çalışır; bunları güvenilir kod olarak değerlendirin.
- Yalnızca güvendiğiniz kaynaklardan yükleyin; açık
plugins.allowizin listelerini tercih edin; etkinleştirmeden önce plugin yapılandırmasını inceleyin; plugin değişikliklerinden sonra Gateway'i yeniden başlatın. - Plugin yüklemek/güncellemek yürütülebilir kod çalıştırır:
- Yükleme yolu, etkin plugin yükleme kökü altındaki plugin başına dizindir.
- ClawHub paketleri ile OpenClaw'ın paketlenmiş/resmî kataloğu güvenilir kaynaklardır. Yeni ve rastgele bir npm,
npm-pack:, git, yerel yol/arşiv veya pazar yeri kaynağı, yükleme öncesinde uyarı verir; etkileşimsiz yüklemeler, ilgili kaynağı inceleyip güvendikten sonra--forcegerektirir.--force, kaynağın kökenini onaylayıp üzerine yazmaya izin verir;security.installPolicyveya kalan yükleme güvenliği denetimlerini atlamaz. Güncellemeler önceden seçilmiş kaynağı yeniden kullanır. - OpenClaw, yükleme/güncelleme sırasında yerleşik yerel tehlikeli kod engellemesi çalıştırmaz. Operatörün yönettiği yerel izin verme/engelleme kararları için
security.installPolicy, tanılama taraması içinopenclaw security audit --deepkullanın. - npm ve git plugin yüklemeleri, paket yöneticisi bağımlılık eşitlemesini yalnızca açık yükleme/güncelleme akışı sırasında çalıştırır. Yerel yollar ve arşivler kendi kendine yeterli paketler olarak değerlendirilir; OpenClaw bunları
npm installçalıştırmadan kopyalar/referanslar. - Sabitlenmiş tam sürümleri (
@scope/pkg@1.2.3) tercih edin ve etkinleştirmeden önce paketten çıkarılan kodu inceleyin. --dangerously-force-unsafe-installkullanımdan kaldırılmıştır ve artık yükleme/güncelleme davranışını değiştirmez.security.installPolicy, operatörlerin Skill ve plugin yüklemeleri için ana makineye özgü izin verme/engelleme kararları vermek üzere güvenilir bir yerel komut çalıştırmasını sağlar. Kaynak malzeme hazırlanıp yükleme devam etmeden önce çalışır, ClawHub Skills öğelerine de uygulanır ve kullanımdan kaldırılmış güvensiz bayraklarla atlanamaz.
Ayrıntılar: Plugin'ler
Korumalı alan
Ayrılmış belge: Korumalı alan
Birbirini tamamlayan iki yaklaşım:
- Docker içinde tam Gateway (kapsayıcı sınırı): Docker
- Araç korumalı alanı (
agents.defaults.sandbox; ana makine Gateway'i + korumalı alanla yalıtılmış araçlar; varsayılan arka uç Docker'dır): Korumalı alan
Korumalı alan içindeki aracı çalışma alanına erişim (agents.defaults.sandbox.workspaceAccess):
"none"(varsayılan): Araçlar~/.openclaw/sandboxesaltındaki bir korumalı alan çalışma alanını görür; aracı çalışma alanına erişilemez."ro": Aracı çalışma alanını/agentkonumuna salt okunur olarak bağlar (write/edit/apply_patchözelliklerini devre dışı bırakır)."rw": Aracı çalışma alanını/workspacekonumuna okuma/yazma izinli olarak bağlar.
Ek sandbox.docker.binds, normalleştirilmiş ve standartlaştırılmış kaynak yollarına göre doğrulanır. Engellenen yolların reddetme listesi; /etc, /private/etc, /proc, /sys, /dev, /root, /boot, Docker soketini yaygın olarak içeren veya ona takma ad sağlayan dizinleri (bunların altındaki /run, /var/run ve docker.sock) ve HOME kimlik bilgisi alt yollarını (.aws, .cargo, .config, .docker, .gnupg, .netrc, .npm, .ssh) kapsar. Üst dizin sembolik bağlantı hileleri ve standart ana dizin takma adları mevcut üst dizinler üzerinden çözümlenip yeniden denetlenir; dolayısıyla engellenen bir köke çözümlenirlerse yine güvenli biçimde reddedilirler.
Alt aracı yetkilendirme güvenlik önlemi
Oturum araçlarına izin veriyorsanız, devredilen alt ajan çalıştırmalarını başka bir sınır kararı olarak değerlendirin:
- Ajan gerçekten görev devrine ihtiyaç duymuyorsa
sessions_spawnseçeneğini reddedin. agents.defaults.subagents.allowAgentsve ajan başına tümagents.entries.*.subagents.allowAgentsgeçersiz kılmalarını, güvenli olduğu bilinen hedef ajanlarla sınırlı tutun.- Korumalı alanda kalması gereken iş akışlarında
sessions_spawnöğesinisandbox: "require"ile çağırın (varsayılan"inherit"değeridir); hedef alt çalışma zamanı korumalı alanda değilse"require"hızla başarısız olur.
Salt okunur mod
agents.defaults.sandbox.workspaceAccess: "ro" seçeneğini (veya çalışma alanına erişimi tamamen kapatmak için "none") write, edit, apply_patch, exec, process vb. öğeleri engelleyen araç izin/ret listeleriyle birleştirerek salt okunur bir profil oluşturun.
tools.exec.applyPatch.workspaceOnly: true(varsayılan): korumalı alan kapalı olsa bileapply_patchöğesinin çalışma alanı dizini dışında yazma/silme işlemi yapmasını engeller. Yalnızcaapply_patchöğesinin çalışma alanı dışındaki dosyalara kasıtlı olarak erişmesini istiyorsanızfalsedeğerini ayarlayın.tools.fs.workspaceOnly: true(isteğe bağlı):read/write/edit/apply_patchyollarını ve yerel istem görüntülerinin otomatik yükleme yollarını çalışma alanı diziniyle sınırlar.- Dosya sistemi köklerini dar tutun; ajan/korumalı alan çalışma alanları için ev dizininiz gibi geniş köklerden kaçının. Bunlar,
~/.openclawaltındaki durum/yapılandırma gibi hassas yerel dosyaları dosya sistemi araçlarına açabilir.
Ajan başına erişim profilleri (çoklu ajan)
Her ajanın kendi korumalı alanı ve araç politikası olabilir: tam erişim, salt okunur veya erişim yok. Öncelik kuralları için Çoklu Ajan Korumalı Alanı ve Araçları bölümüne bakın.
Yaygın kalıplar: kişisel ajan (tam erişim, korumalı alan yok), aile/iş ajanı (korumalı alan + salt okunur araçlar), herkese açık ajan (korumalı alan + dosya sistemi/kabuk araçları yok).
Tam erişim (korumalı alan yok)
{ agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" } }, ], },}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"], }, }, ], },}Dosya sistemi/kabuk erişimi yok (sağlayıcı mesajlaşmasına izin verilir)
{ agents: { list: [ { id: "public", workspace: "~/.openclaw/workspace-public", sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" }, tools: { // Oturum araçları, transkript verilerini açığa çıkarabilir. Varsayılan kapsam geçerli + oluşturulan oturumlardır; // okumalar ayrıca ortam grubu farkındalığı üzerinden izlenen aynı ajan gruplarını da içerir. // İzlenen bu oturumları hariç tutmak için visibility: "self" kullanın. sessions: { visibility: "tree" }, // self | tree | agent | all allow: [ "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", "discord", "slack", "telegram", "whatsapp", ], deny: [ "apply_patch", "browser", "canvas", "cron", "edit", "exec", "gateway", "image", "nodes", "process", "read", "write", ], }, }, ], },}Tarayıcı denetimi riskleri
Tarayıcı denetimini etkinleştirmek, modele gerçek bir tarayıcı verir. Bu profilde oturum açılmış hesaplar varsa model bu hesaplara ve verilere erişebilir; tarayıcı profillerini hassas durum olarak değerlendirin.
- Ajan için ayrılmış bir profil (varsayılan
openclawprofili) tercih edin; kişisel olarak her gün kullandığınız profilden kaçının. - Korumalı alandaki ajanlara güvenmediğiniz sürece ana makine tarayıcı denetimini devre dışı tutun.
- Bağımsız geri döngü tarayıcı denetimi API'si yalnızca paylaşılan gizli anahtar kimlik doğrulamasını (Gateway belirteci taşıyıcı kimlik doğrulaması veya Gateway parolası) kabul eder; güvenilir vekil veya Tailscale Serve kimlik başlıklarını kullanmaz.
- Tarayıcı indirmelerini güvenilmeyen girdi olarak değerlendirin; yalıtılmış bir indirme dizini tercih edin.
- Mümkünse ajan profilinde tarayıcı eşitlemesini/parola yöneticilerini devre dışı bırakın.
- Uzak Gateway'ler için "tarayıcı denetimi", bu profilin erişebildiği her şeye "operatör erişimi" ile eşdeğerdir.
- Gateway ve Node ana makinelerini yalnızca tailnet üzerinden erişilebilir tutun; tarayıcı denetimi bağlantı noktalarını LAN'a veya genel internete açmaktan kaçının.
- Gerekmediğinde tarayıcı vekil yönlendirmesini devre dışı bırakın (
gateway.nodes.browser.mode="off"). - Chrome MCP mevcut oturum modu "daha güvenli" değildir; söz konusu ana makinedeki Chrome profilinin erişebildiği her yerde sizin adınıza işlem yapabilir.
- Tarayıcı makinesinde bir Node ana makinesi çalıştırın ve Gateway tarayıcıdan uzaktaysa tarayıcı eylemlerinin Gateway üzerinden vekillenmesini sağlayın (bkz. Tarayıcı aracı); Node eşleştirmesini yönetici erişimi gibi değerlendirin, Gateway ile Node ana makinesini aynı tailnet üzerinde tutun ve aktarma/denetim bağlantı noktalarını LAN, genel internet veya Tailscale Funnel üzerinden açmaktan kaçının.
Tarayıcı SSRF politikası (varsayılan olarak katı)
Açıkça izin vermediğiniz sürece özel/dahili hedefler engellenmiş olarak kalır.
- Varsayılan:
browser.ssrfPolicy.dangerouslyAllowPrivateNetworkayarlanmamıştır; dolayısıyla özel/dahili/özel kullanımlı hedefler engellenmiş olarak kalır. EskiallowPrivateNetworkdiğer adı hâlâ kabul edilir. - Açıkça izin verme: bu hedeflere izin vermek için
dangerouslyAllowPrivateNetwork: truedeğerini ayarlayın. - Katı modda açık istisnalar için
hostnameAllowlist(*.example.comgibi kalıplar) veallowedHostnames(localhostgibi normalde engellenen adlar dâhil tam ana makine istisnaları) kullanın. - Doğrudan gezinme istekleri ön kontrolden geçirilir. Eylem sırasında ve eylem sonrasındaki sınırlı ek süre boyunca, korumalı Playwright etkileşimleri (tıklama, koordinata tıklama, üzerine gelme, sürükleme, kaydırma, seçme, tuşa basma, yazma, form doldurma ve değerlendirme), politika tarafından reddedilen üst düzey ve alt çerçeve belge yüklemelerini HTTP istek baytları gönderilmeden önce yakalar; ardından nihai
http(s)URL'sini mümkün olan en iyi şekilde yeniden denetler. - OpenClaw, yönetilen Chrome'un her yeni başlatılmasından önce ağ tahminini mümkün olan en iyi şekilde devre dışı bırakarak Chromium'un reddedilen bu yüklemeler için gözlemlenen spekülatif ön bağlantı davranışını baskılar. Bu, derinlemesine savunmadır; bir politika sınırı değildir: denetim hizmeti yeniden başlatıldıktan sonra yeniden kullanılan bir tarayıcı ve diğer tarayıcı arka uçları aynı sağlamlaştırmayı paylaşmayabilir. Sayfa yönlendirmesi, ağ güvenlik duvarı değil istek düzeyinde yakalamadır: yönlendirme adımları, açılır pencerenin ilk isteği, Service Worker trafiği, sınırlı koruma penceresinden sonra çalışan sayfa kodu ve bazı arka plan/alt kaynak yolları bunu atlayabilir. Nihai URL denetimleri algılama/karantina savunması olarak kalır; tam önleme, sahip tarafında çıkış yalıtımı veya politikayı uygulayan bir vekil gerektirir.
{ browser: { ssrfPolicy: { dangerouslyAllowPrivateNetwork: false, hostnameAllowlist: ["*.example.com", "example.com"], allowedHostnames: ["localhost"], }, },}Ağ erişimine açma
Bağlama, bağlantı noktası, güvenlik duvarı
Gateway, WebSocket + HTTP trafiğini tek bir bağlantı noktasında çoğullar (varsayılan 18789; yapılandırma/bayraklar/ortam: gateway.port, --port, OPENCLAW_GATEWAY_PORT). Bu HTTP yüzeyi, Control UI'ı (SPA varlıkları, varsayılan temel yol /) ve canvas ana makinesini (/__openclaw__/canvas ve /__openclaw__/a2ui — rastgele HTML/JS; normal bir tarayıcıda yüklendiğinde güvenilmeyen içerik olarak değerlendirin; güvenilmeyen ağlara/kullanıcılara açmayın ve ayrıcalıklı web yüzeyleriyle aynı kaynağı paylaşmayın) içerir.
gateway.bind, Gateway'in nerede dinleyeceğini denetler:
"loopback"(varsayılan): yalnızca yerel istemciler bağlanabilir."lan","tailnet","custom": saldırı yüzeyini genişletir. Yalnızca Gateway kimlik doğrulaması (paylaşılan belirteç/parola veya doğru yapılandırılmış güvenilir vekil) ve gerçek bir güvenlik duvarı ile kullanın.
Genel kurallar: LAN bağlamaları yerine Tailscale Serve'ü tercih edin (Serve, Gateway'i geri döngüde tutar ve erişimi Tailscale yönetir); LAN'a bağlamanız gerekiyorsa bağlantı noktasını geniş çapta yönlendirmek yerine sıkı bir kaynak IP izin listesiyle güvenlik duvarında sınırlandırın; Gateway'i 0.0.0.0 üzerinde asla kimlik doğrulamasız olarak açmayın.
UFW ile Docker bağlantı noktası yayımlama
Yayımlanan konteyner bağlantı noktaları (-p HOST:CONTAINER veya Compose ports:), yalnızca ana makine INPUT kuralları üzerinden değil, Docker'ın yönlendirme zincirleri üzerinden geçer. Kuralları DOCKER-USER içinde uygulayın (Docker'ın kendi kabul kurallarından önce değerlendirilir); modern dağıtımların çoğu iptables-nft ön ucunu kullanır ve bu ön uç kuralları nftables arka ucuna da uygular.
# /etc/ufw/after.rules (append as its own *filter section)*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 RETURNCOMMITIPv6'nın ayrı tabloları vardır; Docker IPv6 etkinse /etc/ufw/after6.rules içine eşleşen bir politika ekleyin. Arabirim adlarını (eth0) sabit kodlamaktan kaçının; bunlar VPS kalıpları (ens3, enp* vb.) arasında değişir ve bir eşleşmezlik, ret kuralınızın sessizce atlanmasına neden olabilir.
ufw reloadiptables -S DOCKER-USERip6tables -S DOCKER-USERnmap -sT -p 1-65535 <public-ip> --openDışarıdan erişilebilen bağlantı noktaları yalnızca kasıtlı olarak açtıklarınız olmalıdır (çoğu kurulumda: SSH + ters vekil bağlantı noktaları).
mDNS/Bonjour keşfi
Paketle gelen bonjour Plugin etkinleştirildiğinde Gateway, yerel cihaz keşfi için mDNS (_openclaw-gw._tcp, bağlantı noktası 5353) üzerinden varlığını yayınlar. Tam mod, operasyonel ayrıntıları açığa çıkaran TXT kayıtları içerir: cliPath (kullanıcı adını ve kurulum konumunu açığa çıkaran dosya sistemi yolu), sshPort (SSH kullanılabilirliğini duyurur), displayName/lanHost (ana makine adı bilgileri). Altyapı ayrıntılarının yayınlanması, LAN keşif taramasını kolaylaştırır.
-
LAN keşfi gerekmedikçe Bonjour'u devre dışı tutun; macOS ana makinelerinde otomatik olarak başlar, diğer yerlerde ise açıkça etkinleştirilir. Doğrudan Gateway URL'leri, Tailnet, SSH veya geniş alan DNS-SD, yerel çok noktaya yayını gereksiz kılar.
-
Minimal mod (Bonjour etkinken varsayılan; dışarıya açık Gateway'ler için önerilir) hassas alanları içermez:
json5 { discovery: { mdns: { mode: "minimal" } } } -
Kapalı, Plugin'i etkin tutarken yerel keşfi engeller:
json5 { discovery: { mdns: { mode: "off" } } } -
Tam mod (açıkça etkinleştirilir)
cliPath+sshPortiçerir:json5 { discovery: { mdns: { mode: "full" } } } -
Alternatif olarak, yapılandırma değişikliği yapmadan mDNS'yi devre dışı bırakmak için
OPENCLAW_DISABLE_BONJOUR=1değerini ayarlayın.
Minimal modda Gateway, role, gatewayPort, transport değerlerini yayınlar ancak cliPath/sshPort değerlerini yayınlamaz; CLI yoluna ihtiyaç duyan uygulamalar bunun yerine kimliği doğrulanmış WebSocket bağlantısı üzerinden yolu alabilir.
Gateway WebSocket kimlik doğrulaması
Gateway kimlik doğrulaması varsayılan olarak zorunludur; geçerli bir kimlik doğrulama yolu yapılandırılmamışsa Gateway, WebSocket bağlantılarını reddeder (güvenli biçimde başarısız olur). İlk katılım, varsayılan olarak (geri döngü için bile) bir belirteç oluşturur; dolayısıyla yerel istemcilerin kimliklerini doğrulaması gerekir.
{ gateway: { auth: { mode: "token", token: "your-token" } } }openclaw doctor --generate-gateway-token sizin için bir tane oluşturabilir.
wss:// kullanırken uzak TLS'yi gateway.remote.tlsFingerprint ile sabitleyin. Şifresiz ws://; geri döngü, özel IP değişmezleri, .local ve Tailnet *.ts.net gateway URL'leri için kabul edilir; diğer güvenilir özel DNS adları için acil durum seçeneği olarak istemci işleminde OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 ayarlayın (yalnızca işlem ortamında; bir openclaw.json anahtarı olarak değil). Mobil eşleştirme ile Android'in manuel/taranmış gateway rotaları daha katıdır: şifresiz bağlantıya yalnızca geri döngü için izin verilir; özel LAN, bağlantı yerel, .local ve noktasız ana bilgisayar adları ise güvenilir özel ağ şifresiz bağlantı yolunu açıkça etkinleştirmediğiniz sürece TLS kullanmalıdır.
Doğrudan yerel geri döngü bağlantılarında cihaz eşleştirmesi otomatik olarak onaylanır (ayrıca güvenilir paylaşılan gizli anahtar yardımcı akışları için dar kapsamlı bir arka uç/kapsayıcı içi öz bağlantı yolu bulunur); aynı ana bilgisayardan bir Tailnet adresine yapılan bağlantılar dâhil Tailnet ve LAN bağlantıları uzak olarak değerlendirilir ve yine onay gerektirir. 127.0.0.1 veya 0.0.0.0 dışında çözümlenmiş bir tailnet adresi ya da custom adresi, ayrı bir 127.0.0.1 dinleyicisi ekler; yalnızca bu yerel dinleyiciye yapılan bağlantılar geri döngü semantiğine sahip olur. Bir geri döngü isteğindeki iletilmiş üstbilgi kanıtı, geri döngü yerelliğini geçersiz kılar; meta veri yükseltmesinin otomatik onayı dar kapsamlıdır. Bkz. Gateway eşleştirmesi.
Kimlik doğrulama modları:
"token": paylaşılan taşıyıcı belirteci (çoğu kurulum için önerilir)."password":OPENCLAW_GATEWAY_PASSWORDaracılığıyla ayarlamayı tercih edin."trusted-proxy": kullanıcıların kimliğini doğrulaması ve kimliği üstbilgiler aracılığıyla iletmesi için kimlik bilgisine duyarlı bir ters proxy'ye güvenin. Bkz. Güvenilir Proxy Kimlik Doğrulaması.
Döndürme kontrol listesi (belirteç/parola): yeni bir gizli değer oluşturun/ayarlayın (gateway.auth.token veya OPENCLAW_GATEWAY_PASSWORD); Gateway'i (veya Gateway'i denetliyorsa macOS uygulamasını) yeniden başlatın; uzak istemcileri güncelleyin (gateway.remote.token/.password); eski kimlik bilgilerinin artık çalışmadığını doğrulayın.
Tailscale Serve kimlik üstbilgileri
gateway.auth.allowTailscale değeri true olduğunda (Serve için varsayılan), OpenClaw, Control UI/WebSocket kimlik doğrulaması için Tailscale Serve kimlik üstbilgisi tailscale-user-login değerini kabul eder. Kimliği, x-forwarded-for adresini yerel Tailscale daemon'u (tailscale whois) aracılığıyla çözümleyip üstbilgiyle eşleştirerek doğrular; bu yalnızca Tailscale tarafından eklenen x-forwarded-for, x-forwarded-proto ve x-forwarded-host değerlerini taşıyan geri döngü isteklerinde tetiklenir. Bu eşzamansız denetimde, aynı {scope, ip} için başarısız denemeler, sınırlayıcı başarısızlığı kaydetmeden önce seri hâle getirilir; böylece tek bir Serve istemcisinden gelen eşzamanlı hatalı yeniden denemeler ikinci denemeyi hemen kilitleyebilir.
HTTP API uç noktaları (/v1/*, /tools/invoke, /api/channels/*) Tailscale kimlik üstbilgisi doğrulamasını kullanmaz; gateway'in yapılandırılmış HTTP kimlik doğrulama modunu izler.
Gateway HTTP taşıyıcı kimlik doğrulaması fiilen ya hep ya hiç türünde operatör erişimidir. /v1/chat/completions, /v1/responses, /api/v1/admin/rpc gibi plugin rotaları veya /api/channels/* çağrılarını yapabilen kimlik bilgileri, söz konusu gateway için tam erişimli operatör gizli bilgileridir: paylaşılan gizli anahtar taşıyıcı kimlik doğrulaması, tam varsayılan operatör kapsamlarını (operator.admin, operator.approvals, operator.pairing, operator.read, operator.talk.secrets, operator.write) ve ajan turları için sahip semantiğini geri yükler; daha dar x-openclaw-scopes değerleri bu paylaşılan gizli anahtar yolunu azaltmaz. İstek başına kapsam semantiği yalnızca istek kimlik taşıyan bir moddan (güvenilir proxy kimlik doğrulaması) veya açıkça kimlik doğrulamasız özel bir girişten geldiğinde geçerlidir; bu modlarda x-openclaw-scopes değerinin belirtilmemesi normal varsayılan operatör kapsam kümesine geri döner ve x-openclaw-model gibi sahip düzeyindeki üstbilgiler, kapsamlar daraltıldığında operator.admin gerektirir. /tools/invoke ve HTTP oturum geçmişi uç noktaları da aynı paylaşılan gizli anahtar kuralını izler. Bu kimlik bilgilerini güvenilmeyen çağıranlarla paylaşmayın; her güven sınırı için ayrı gateway'ler tercih edin.
Belirteçsiz Serve kimlik doğrulaması, gateway ana bilgisayarının kendisinin güvenilir olduğunu varsayar; aynı ana bilgisayardaki kötü niyetli işlemlere karşı koruma sağlamaz. Gateway ana bilgisayarında güvenilmeyen yerel kod çalışabilecekse allowTailscale seçeneğini devre dışı bırakın ve açık paylaşılan gizli anahtar kimlik doğrulaması (token veya password) gerektirin.
Bu üstbilgileri kendi ters proxy'nizden iletmeyin. TLS'yi gateway'in önünde sonlandırıyor veya proxy kullanıyorsanız allowTailscale seçeneğini devre dışı bırakın ve bunun yerine paylaşılan gizli anahtar kimlik doğrulaması ya da Güvenilir Proxy Kimlik Doğrulaması kullanın.
Bkz. Tailscale ve Web'e genel bakış.
Ters proxy yapılandırması
nginx/Caddy/Traefik/vb. arkasında iletilen istemci IP'sinin doğru işlenmesi için gateway.trustedProxies ayarlayın. Gateway, trustedProxies içinde bulunmayan bir adresten proxy üstbilgileri algıladığında bağlantıyı yerel olarak değerlendirmez; gateway kimlik doğrulaması devre dışıysa bu bağlantı reddedilir. Bu, proxy üzerinden gelen bağlantıların localhost'tan geliyormuş gibi görünerek otomatik güven kazanmasını engeller.
trustedProxies ayrıca daha katı olan gateway.auth.mode: "trusted-proxy" değerini besler: varsayılan olarak geri döngü kaynaklı proxy'lerde güvenli biçimde başarısız olur. Aynı ana bilgisayardaki geri döngü ters proxy'leri, yerel istemci algılaması ve iletilen IP işleme için trustedProxies kullanabilir; ancak trusted-proxy kimlik doğrulama modunu yalnızca gateway.auth.trustedProxy.allowLoopback = true olduğunda karşılayabilir, aksi takdirde belirteç/parola kimlik doğrulaması kullanın.
gateway: trustedProxies: - "10.0.0.1" # ters proxy IP'si allowRealIpFallback: false # varsayılan false; yalnızca proxy'niz X-Forwarded-For sağlayamıyorsa etkinleştirin auth: mode: password password: ${OPENCLAW_GATEWAY_PASSWORD}trustedProxies ayarlandığında Gateway, istemci IP'sini belirlemek için X-Forwarded-For kullanır; gateway.allowRealIpFallback: true açıkça ayarlanmadığı sürece X-Real-IP yok sayılır. Proxy'nizin X-Forwarded-For/X-Real-IP değerlerine ekleme yapmak yerine bunların üzerine yazdığından emin olun:
# doğruproxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Real-IP $remote_addr; # yanlış: güvenilmeyen, istemci tarafından sağlanan değerleri korur/eklerproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;Güvenilir proxy üstbilgileri, Node cihaz eşleştirmesini otomatik olarak güvenilir kılmaz; gateway.nodes.pairing.autoApproveCidrs, varsayılan olarak devre dışı olan ayrı bir operatör politikasıdır ve geri döngü kaynaklı güvenilir proxy üstbilgi yolları, geri döngü güvenilir proxy kimlik doğrulaması etkinleştirilmiş olsa bile Node otomatik onayının dışında kalır (çünkü yerel çağıranlar bu üstbilgileri taklit edebilir).
HSTS ve kaynak notları
- OpenClaw'ın gateway'i öncelikle yerel/geri döngü kullanımına yöneliktir. TLS'yi bir ters proxy'de sonlandırıyorsanız HSTS'yi orada ayarlayın.
- HTTPS'yi gateway'in kendisi sonlandırıyorsa
gateway.http.securityHeaders.strictTransportSecurity, OpenClaw yanıtlarından HSTS üstbilgisini gönderir. - Geri döngü dışındaki Control UI dağıtımları varsayılan olarak
gateway.controlUi.allowedOriginsgerektirir;allowedOrigins: ["*"], güçlendirilmiş bir varsayılan değil, açık bir tümüne izin verme politikasıdır; sıkı denetlenen yerel testler dışında kullanmaktan kaçının. - Genel geri döngü muafiyeti etkinleştirilmiş olsa bile geri döngüdeki tarayıcı kaynağı kimlik doğrulama hataları hız sınırlamasına tabidir; ancak kilitleme anahtarı, tek bir paylaşılan localhost kovası yerine normalleştirilmiş her
Origindeğeri için ayrı kapsamlanır. gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true, Host üstbilgisi kaynak yedek modunu etkinleştirir; bunu operatör tarafından seçilmiş tehlikeli bir politika olarak değerlendirin.- DNS yeniden bağlama ve proxy ana bilgisayar üstbilgisi davranışını dağıtım güçlendirme konuları olarak değerlendirin;
trustedProxiesdeğerini sıkı tutun ve gateway'i doğrudan genel internete açmaktan kaçının. - Ayrıntılı dağıtım kılavuzu: Güvenilir Proxy Kimlik Doğrulaması.
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 uyumluluk geçişi. localhost üzerinde, sayfa güvenli olmayan HTTP üzerinden yüklendiğinde cihaz kimliği olmadan Control UI kimlik doğrulamasına izin verir. Eşleştirme denetimlerini atlamaz ve uzak (localhost dışı) cihaz kimliği gereksinimlerini gevşetmez. HTTPS'yi (Tailscale Serve) tercih edin veya kullanıcı arayüzünü127.0.0.1üzerinde açın.gateway.controlUi.dangerouslyDisableDeviceAuth: kullanımdan kaldırılmış acil durum girdisi. Eski yapılandırmalar, HTTPS veya localhost üzerinden yeniden açılan bir tarayıcı sınırlı ve açık öz eşleştirme geçişini tamamlayana kadar düzeltme amacıyla kimliği doğrulanmış, yalnızca eşleştirmeli Control UI erişimini korur; bunu güncel yapılandırmaya eklemeyin.- Bu bayraklardan ayrı olarak, başarılı bir
gateway.auth.mode: "trusted-proxy", cihaz kimliği olmadan operatör Control UI oturumlarını kabul edebilir; bu,allowInsecureAuthkısayolu değil, kasıtlı bir kimlik doğrulama modu davranışıdır ve Node rolündeki Control UI oturumlarını kapsamaz.
allowInsecureAuth etkinleştirildiğinde openclaw security audit uyarı verir.
Güvenli olmayan/tehlikeli bayraklar
openclaw security audit, etkinleştirilmiş ve güvenli olmadığı/tehlikeli olduğu bilinen her hata ayıklama anahtarı için config.insecure_or_dangerous_flags oluşturur (bayrak başına bir bulgu). Üretimde bunları ayarlamayın. Denetim bastırmaları yapılandırılmışsa eşleşen bulgular suppressedFindings konumuna taşındığında bile security.audit.suppressions.active etkin çıktıda kalır.
Denetimin bugün izlediği bayraklar
gateway.controlUi.allowInsecureAuth=truegateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true- kullanımdan kaldırılmış
gateway.controlUi.dangerouslyDisableDeviceAuth=truedeğerinden içe aktarılan, bekleyen Control UI cihaz kimlik doğrulaması geçişi security.audit.suppressions configured (<count>)hooks.gmail.allowUnsafeExternalContent=truehooks.mappings[<index>].allowUnsafeExternalContent=truetools.exec.applyPatch.workspaceOnly=falseplugins.entries.acpx.config.permissionMode=approve-all
Yapılandırma şemasındaki tüm dangerous*/dangerously* anahtarları
Control UI ve tarayıcı:
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallbackgateway.controlUi.dangerouslyDisableDeviceAuth(kullanımdan kaldırılmış yükseltme girdisi)browser.ssrfPolicy.dangerouslyAllowPrivateNetwork
Kanal adı eşleştirme (paketle gelen ve plugin kanalları; uygun olduğunda ayrıca accounts.<accountId> başına):
channels.discord.dangerouslyAllowNameMatchingchannels.googlechat.dangerouslyAllowNameMatchingchannels.msteams.dangerouslyAllowNameMatchingchannels.slack.dangerouslyAllowNameMatchingchannels.irc.dangerouslyAllowNameMatching(plugin kanalı)channels.mattermost.dangerouslyAllowNameMatching(plugin kanalı)channels.synology-chat.dangerouslyAllowNameMatching(plugin kanalı)channels.synology-chat.dangerouslyAllowInheritedWebhookPath(plugin kanalı)channels.zalouser.dangerouslyAllowNameMatching(plugin kanalı)
Ağ erişimine açılma:
channels.telegram.network.dangerouslyAllowPrivateNetwork(ayrıca hesap başına)
Sandbox Docker (varsayılanlar + ajan başına):
agents.defaults.sandbox.docker.dangerouslyAllowReservedContainerTargetsagents.defaults.sandbox.docker.dangerouslyAllowExternalBindSourcesagents.defaults.sandbox.docker.dangerouslyAllowContainerNamespaceJoin
Dağıtım ve ana bilgisayar güveni
- Gateway ana makinesinde tam disk şifrelemesi; ana makine paylaşılıyorsa Gateway için özel bir işletim sistemi kullanıcı hesabı tercih edin.
- Yayımlanan paket bağımlılığı kilidi: kaynak kod depoları
pnpm-lock.yamlkullanır; yayımlananopenclawnpm paketi ve OpenClaw'a ait npm Plugin paketlerinpm-shrinkwrap.jsoniçerir; böylece kurulum sırasında yeni bir bağımlılık grafiği çözümlemek yerine sürümün incelenmiş geçişli bağımlılık grafiği kullanılır. Bu, bir korumalı alan değil, tedarik zinciri sağlamlaştırma ve sürümün yeniden üretilebilirliği sınırıdır; bkz. npm shrinkwrap. - Güvenli dosya işlemleri: OpenClaw, kök dizinle sınırlandırılmış dosya erişimi, atomik yazmalar, arşiv çıkarma, geçici çalışma alanları ve gizli dosya yardımcıları için
@openclaw/fs-safekullanır. İsteğe bağlı POSIX Python yardımcısı varsayılan olarak kapalıdır;OPENCLAW_FS_SAFE_PYTHON_MODE=autoveyarequireayarını yalnızca fd'ye göreli değişiklik işlemlerinde ek sağlamlaştırma istediğinizde ve bir Python çalışma zamanını destekleyebildiğinizde etkinleştirin. Ayrıntılar: Güvenli dosya işlemleri. - Paylaşılan Slack çalışma alanı riski: Slack'teki herkes bota mesaj gönderebiliyorsa temel risk, devredilmiş araç yetkisidir; izin verilen herhangi bir gönderici, ajanın politikası kapsamında araç çağrılarını (
exec, tarayıcı, ağ/dosya araçları) tetikleyebilir; bir göndericiden gelen istem/içerik enjeksiyonu paylaşılan durumu, cihazları ve çıktıları etkileyebilir; ayrıca paylaşılan ajanın hassas kimlik bilgileri veya dosyaları varsa izin verilen herhangi bir gönderici, araç kullanımı yoluyla potansiyel olarak veri sızdırılmasına neden olabilir. Ekip iş akışları için en az sayıda araca sahip ayrı ajanlar/Gateway'ler kullanın; kişisel veri ajanlarını özel tutun. - Şirket içinde paylaşılan ajan (kabul edilebilir düzen): ajanı kullanan herkes aynı güven sınırı içindeyse (örneğin tek bir şirket ekibi) ve ajan yalnızca işle ilgili kapsamda çalışıyorsa uygundur. Ajanı özel bir makine/VM/kapsayıcı üzerinde çalıştırın; özel bir işletim sistemi kullanıcısı ile özel tarayıcı/profil/hesaplar kullanın ve bu çalışma zamanında kişisel Apple/Google hesaplarında veya kişisel parola yöneticisi/tarayıcı profillerinde oturum açmayın. Kişisel ve kurumsal kimliklerin aynı çalışma zamanında karıştırılması ayrımı ortadan kaldırır ve kişisel verilerin açığa çıkma riskini artırır.
Diskteki gizli bilgiler
~/.openclaw/ (veya $OPENCLAW_STATE_DIR/) altındaki her şeyin gizli bilgiler veya özel veriler içerebileceğini varsayın:
| Yol | İçindekiler |
|---|---|
openclaw.json |
Yapılandırma; belirteçleri (gateway, uzak gateway), sağlayıcı ayarlarını ve izin listelerini içerebilir. |
credentials/** |
Kanal kimlik bilgileri (örneğin WhatsApp kimlik bilgileri), eşleştirme izin listeleri, eski OAuth içe aktarımları. |
state/openclaw.sqlite |
Yerel MCP OAuth erişim/yenileme belirteçleri, dinamik istemci kaydı sırları ve keşif durumu dâhil paylaşılan çalışma zamanı durumu. |
agents/<agentId>/agent/openclaw-agent.sqlite |
Model kimlik doğrulama profilleri dâhil aracı başına çalışma zamanı durumu. |
agents/<agentId>/agent/auth-profiles.json |
Eski model kimlik doğrulama geçiş kaynağı; doctor, desteklenen kayıtları aracı başına SQLite veritabanına aktarır. |
agents/<agentId>/agent/codex-home/** |
Aracı başına Codex uygulama sunucusu hesabı, yapılandırması, becerileri, plugin'leri, yerel iş parçacığı durumu ve tanılamaları (varsayılan). |
$CODEX_HOME/** veya ~/.codex/** |
Yerel Codex çalışma zamanı durumu. Sıradan çalıştırma düzeneği buna yalnızca açıkça belirtilen plugins.entries.codex.config.appServer.homeScope: "user" ile erişir. Ayrı denetim bağlantısı, çözümlenen ana kapsamı "user" olduğunda buna erişir; bu, değer ayarlanmamışsa stdio veya Unix için varsayılandır. Yerel Codex hesabını, yapılandırmasını, plugin'lerini ve iş parçacığı deposunu içerir. Denetim, kaynak meta verilerini listeler ve devam ettirilen bir Chat'in kurallı yerel dalını ve sonraki turlarını bu bağlantıda tutar; dallandırma ise sınırlı kalıcı kullanıcı ve asistan geçmişini kimliği doğrulanmış, modele kilitli bir OpenClaw Chat'e kopyalar. Yalnızca sahibi tarafından denetlenen bir Gateway için etkinleştirin. Bkz. Codex çalıştırma düzeneği ve Codex denetimi. |
secrets.json (isteğe bağlı) |
file SecretRef sağlayıcıları (secrets.providers) tarafından kullanılan dosya tabanlı sır yükü. |
agents/<agentId>/agent/auth.json |
Eski uyumluluk dosyası; statik api_key girdileri keşfedildiğinde temizlenir. |
agents/<agentId>/agent/openclaw-agent.sqlite |
Özel mesajlar ve araç çıktısı içerebilen oturum satırları ve dökümler dâhil aracı başına çalışma zamanı durumu. |
agents/<agentId>/sessions/** |
Özel mesajlar ve araç çıktısı içerebilen eski oturum geçiş kaynakları ve arşivleri. |
| paketlenmiş plugin paketleri | Yüklü plugin'ler (ve bunların node_modules/ öğeleri). |
sandboxes/** |
Araç sandbox çalışma alanları; sandbox içinde okunan/yazılan dosyaların kopyaları birikebilir. |
Kimlik bilgisi depolama haritası
Yedekleme kararları için de yararlıdır:
- WhatsApp:
~/.openclaw/credentials/whatsapp/<accountId>/creds.json - Telegram bot tokeni: yapılandırma/ortam veya
channels.telegram.tokenFile(yalnızca normal dosya; sembolik bağlantılar reddedilir) - Discord bot tokeni: yapılandırma/ortam veya SecretRef (ortam/dosya/çalıştırma sağlayıcıları)
- Slack tokenleri: yapılandırma/ortam (
channels.slack.*) - Eşleştirme izin listeleri:
~/.openclaw/credentials/<channel>-allowFrom.json(varsayılan hesap) /<channel>-<accountId>-allowFrom.json(varsayılan olmayan hesaplar) - Model kimlik doğrulama profilleri:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite(auth_profile_store) - MCP OAuth oturumları:
~/.openclaw/state/openclaw.sqlite(mcp_oauth_stores) - Eski OAuth içe aktarımı:
~/.openclaw/credentials/oauth.json
Güçlendirme: izinları sıkı tutun (dizinlerde 700, dosyalarda 600); Gateway ana makinesinde tam disk şifrelemesi kullanın; ana makine paylaşılıyorsa özel bir işletim sistemi kullanıcı hesabını tercih edin.
Dosya izinleri
~/.openclaw/openclaw.json:600(yalnızca kullanıcı okuyabilir/yazabilir)~/.openclaw:700(yalnızca kullanıcı)
openclaw doctor uyarabilir ve bunları sıkılaştırmayı önerebilir.
Çalışma alanı .env dosyaları
OpenClaw, aracılar ve araçlar için çalışma alanına yerel .env dosyalarını yükler ancak bunların Gateway çalışma zamanı denetimlerini sessizce geçersiz kılmasına asla izin vermez:
- Sağlayıcı kimlik bilgisi ortam değişkenleri, güvenilmeyen çalışma alanı
.envdosyalarında engellenir; örneğinGEMINI_API_KEY,GOOGLE_API_KEY,XAI_API_KEY,MISTRAL_API_KEY,GROQ_API_KEY,DEEPSEEK_API_KEY,PERPLEXITY_API_KEY,BRAVE_API_KEY,TAVILY_API_KEY,EXA_API_KEY,FIRECRAWL_API_KEYve yüklü güvenilir plugin'ler tarafından bildirilen sağlayıcı kimlik doğrulama anahtarları. Bunun yerine sağlayıcı kimlik bilgilerini Gateway işlemi ortamına,~/.openclaw/.env($OPENCLAW_STATE_DIR/.env), yapılandırmadakienvbloğuna veya isteğe bağlı bir oturum açma kabuğu içe aktarımına yerleştirin. OPENCLAW_ile başlayan tüm anahtarlar güvenilmeyen çalışma alanı.envdosyalarında engellenir; böylece çalışma zamanı ad alanının tamamı ayrılır ve gelecekteki birOPENCLAW_*denetimi, depoya kaydedilmiş veya saldırgan tarafından sağlanmış.enviçeriğinden sessizce devralınmak yerine varsayılan olarak kapalı kalır.- Kanal ve sağlayıcı uç noktası yönlendirme ayarlarının çalışma alanı
.envgeçersiz kılmaları da engellenir (örneğinMATRIX_HOMESERVER,MATTERMOST_URL,IRC_HOST,SYNOLOGY_CHAT_INCOMING_URL,AZURE_SPEECH_ENDPOINTve_ENDPOINTile biten diğer anahtarlar); böylece klonlanmış bir çalışma alanı, paketlenmiş bağlayıcı trafiğini yerel uç nokta yapılandırması üzerinden yeniden yönlendiremez. Bunlar Gateway işlemi ortamından, genel çalışma zamanı dotenv dosyasından, açık yapılandırmadan veyaenv.shellEnvüzerinden gelmelidir. - Güvenilir işlem/işletim sistemi ortam değişkenleri, genel çalışma zamanı dotenv dosyası, yapılandırma
envve etkinleştirilmiş oturum açma kabuğu içe aktarımı uygulanmaya devam eder; bu yalnızca çalışma alanı.envdosyalarının yüklenmesini kısıtlar.
Çalışma alanı .env dosyaları sıklıkla aracı kodunun yanında bulunur, yanlışlıkla depoya kaydedilir veya araçlar tarafından yazılır; sağlayıcı kimlik bilgilerinin engellenmesi, klonlanmış bir çalışma alanının saldırgan denetimindeki sağlayıcı hesaplarını ikame etmesini önler.
Günlükler ve transkriptler
OpenClaw, oturum sürekliliği ve isteğe bağlı bellek indeksleme için oturum transkriptlerini diskte ~/.openclaw/agents/<agentId>/sessions/*.jsonl altında saklar; dosya sistemine erişimi olan herhangi bir işlem/kullanıcı bunları okuyabilir. Disk erişimini güven sınırı olarak kabul edin ve ~/.openclaw izinlarını kısıtlayın; daha güçlü yalıtım için aracıları ayrı işletim sistemi kullanıcıları veya ana makineler altında çalıştırın.
Gateway günlükleri araç özetleri, hatalar ve URL'ler içerebilir; oturum transkriptleri yapıştırılmış sırları, dosya içeriklerini, komut çıktılarını ve bağlantıları içerebilir.
- Günlük/transkript sansürlemeyi açık tutun (
logging.redactSensitive: "tools", varsayılan). logging.redactPatternsaracılığıyla ortamınıza özel kalıplar ekleyin (tokenler, ana makine adları, dahili URL'ler).- Tanılama bilgilerini paylaşırken ham günlükler yerine
openclaw status --allseçeneğini tercih edin (yapıştırılabilir, sırlar sansürlenmiş). - Uzun süre saklamanız gerekmiyorsa eski oturum transkriptlerini ve günlük dosyalarını temizleyin.
Ayrıntılar: Günlük Kaydı
Güvenli temel yapılandırma (kopyala/yapıştır)
{ gateway: { mode: "local", bind: "loopback", port: 18789, auth: { mode: "token", token: "your-long-random-token" }, }, channels: { whatsapp: { dmPolicy: "pairing", groups: { "*": { requireMention: true } }, }, },}Gateway'i özel tutar, DM eşleştirmesi gerektirir ve sürekli etkin grup botlarından kaçınır. Araç yürütmeyi de daha güvenli hâle getirmek için sahip olmayan tüm aracılara bir sandbox ekleyip tehlikeli araçları reddedin (yukarıdaki "Aracı başına erişim profilleri" bölümüne bakın).
Ayrı numaralar (WhatsApp, Signal, Telegram)
Telefon numarası tabanlı kanallarda asistanı kişisel numaranızdan ayrı bir numarayla çalıştırmayı değerlendirin; böylece kişisel konuşmalar gizli kalır ve bot numarası otomasyonu kendi sınırları içinde yürütür.
Olay müdahalesi
Sınırlandırma
- Durdurun: macOS uygulamasını durdurun (Gateway'i denetliyorsa) veya
openclaw gatewayişleminizi sonlandırın. - Açıklığı kapatın: ne olduğunu anlayana kadar
gateway.bind: "loopback"olarak ayarlayın (veya Tailscale Funnel/Serve'ü devre dışı bırakın). - Erişimi dondurun: riskli DM'leri/grupları
dmPolicy: "disabled"olarak değiştirin / bahsetme zorunluluğu getirin ve tüm erişime izin veren"*"girdilerini kaldırın.
Yenileme (sırlar sızdıysa ele geçirildiğini varsayın)
- Gateway kimlik doğrulamasını (
gateway.auth.token/OPENCLAW_GATEWAY_PASSWORD) yenileyin ve yeniden başlatın. - Gateway'i çağırabilen tüm makinelerde uzak istemci sırlarını (
gateway.remote.token/.password) yenileyin. - Sağlayıcı/API kimlik bilgilerini (WhatsApp kimlik bilgileri, Slack/Discord tokenleri,
auth-profiles.jsoniçindeki model/API anahtarları ve kullanıldığında şifrelenmiş sır yükü değerleri) yenileyin.
Denetleme
- Gateway günlüklerini
openclaw logsile (veya adlandırılmış bir profil içinopenclaw --profile <profile> logsile) kontrol edin. Varsayılan yol/tmp/openclaw/openclaw-YYYY-MM-DD.log;logging.filebunu geçersiz kılmadığı sürece adlandırılmış profiller/tmp/openclaw/openclaw-<profile>-YYYY-MM-DD.logkullanır. - İlgili transkriptleri inceleyin:
~/.openclaw/agents/<agentId>/sessions/*.jsonl. - Erişimi genişletmiş olabilecek son yapılandırma değişikliklerini inceleyin:
gateway.bind,gateway.auth, DM/grup politikaları,tools.elevated, plugin değişiklikleri. openclaw security audit --deepkomutunu yeniden çalıştırın ve kritik bulguların giderildiğini doğrulayın.
Rapor için toplama
- Zaman damgası, Gateway ana makinesinin işletim sistemi + OpenClaw sürümü.
- Oturum transkriptleri + kısa bir günlük son bölümü (sansürlendikten sonra).
- Saldırganın ne gönderdiği ve aracının ne yaptığı.
- Gateway'in geri döngü arabiriminin ötesine açık olup olmadığı (LAN/Tailscale Funnel/Serve).
Sır taraması
CI, depo genelinde ön kaydetme detect-private-key kancasını çalıştırır. Başarısız olursa depoya kaydedilmiş anahtar materyalini kaldırın veya yenileyin, ardından yerel olarak yeniden oluşturun:
pre-commit run --all-files detect-private-keyGüvenlik sorunlarını bildirme
OpenClaw'da bir güvenlik açığı mı buldunuz? Sorumlu bir şekilde bildirin:
- E-posta: security@openclaw.ai
- Düzeltilene kadar herkese açık olarak yayımlamayın.
- Size katkı sağlayan kişi olarak teşekkür edeceğiz (anonim kalmayı tercih etmediğiniz sürece).