0Pricing
Lua Academy · Ders

Korumalı Alan Kaçışlarını Önleme

debug kitaplığına erişimi, rawget/rawset kötüye kullanımını ve upvalue sızıntılarını engelleyin.

Korumalı Alan Kaçışlarını Önleme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Kaçış Sorunu

İzin listesi kullanan bir ortamda bile yaratıcı saldırganlar gerçek genel ortama erişmenin yollarını bulabilir. Bu derste bilinen kaçış yolları ve bunların nasıl kapatılacağı ele alınır.

Dize Meta Tablosu İstismarı

Lua'da dizeler, dize kitaplığını açığa çıkaran ortak bir meta tabloya sahiptir. Korumalı alandaki kod, bir dizeyi kullanarak string.rep işlevine başvurabilir ve buradan diğer kitaplıklara ulaşabilir.

-- Escape vector (before patching):
local s = "hello"
local getenv = s.rep  -- reaches string library
-- Fix: use setmetatable on all sandboxed strings (not practical)
-- Better fix: override debug.getmetatable in the sandbox

rawget/rawset ile Engelleme

Korumalı alanda rawget varsa kod, __index kısıtlamalarını aşmak ve gerçek tablolardan doğrudan okumak için bunu kullanabilir.

-- Fix: exclude rawget, rawset, rawequal, rawlen from the sandbox env

debug Kitaplığına Erişim

debug kitaplığı, _ENV dahil olmak üzere herhangi bir üst değeri okuyabilir ve değiştirebilir. Bu kitaplığı korumalı alandan tamamen çıkarın.

package.loaded Tablosu

Eğer require veya package erişilebilirse, korumalı alandaki kod os ve io dâhil olmak üzere daha önce yüklenmiş modüllere ulaşabilir.

-- Fix: exclude require and package from the sandbox env

Eş Yordamlar ve Sürdürme

Ana makine tarafından sürdürülen korumalı alan eş yordamı, durumu dışarı sızdırmak için kullanılabilir. coroutine.wrap işlevini dikkatli kullanınız ve korumalı alan eş yordamlarını yükseltilmiş ayrıcalıklarla sürdürmeyiniz.

Üst Değerlerde Gezinme

Hata ayıklama kitaplığı olmadan korumalı alandaki kod üst değerlerde gezinemeyebilir. Ancak debug.getupvalue yanlışlıkla dâhil edilirse, _G'ye ulaşmak için kullanılabilir.

safeEnv Üzerinde __newindex

Korumalı alan ortamının meta tablosuna bir __newindex ekleyerek korumalı alandaki kodun güvenli olanların üzerine gölge düşüren yeni genel değişkenler oluşturmasını engelleyiniz.

setmetatable(safeEnv, {
  __newindex = function(_, k, v)
    -- allow only whitelisted keys or reject
    error("Global assignment not allowed: " .. k)
  end
})

math Kitaplığı için Vekil

Gerçek math tablosunu (standart kitaplıkla aynı meta tablosunu paylaşır) geçirmek yerine yalnızca gereken işlevleri içeren sığ bir kopya oluşturunuz.

Otomatik Kaçış Sınaması

Korumalı alanınıza karşı bilinen kaçış kalıplarını deneyen bir bulanıklaştırma sınama paketi bulundurunuz. Korumalı alan kodunda yapılan her değişiklikte bunu çalıştırınız.

Derinlemesine Savunma

Hiçbir korumalı alan kusursuz değildir. Savunmaları katmanlandırınız: kısıtlı ortam + yönerge sınırları + bellek sınırları + işletim sistemi düzeyinde süreç yalıtımı (ayrı bir alt süreç veya kapsayıcı).

İşletim Sistemi Düzeyinde Korumalı Alan

En yüksek güvenlik için Lua'yı işletim sistemi düzeyinde kısıtlamalarla bir alt süreçte çalıştırınız: seccomp (Linux), App Sandbox (macOS) veya salt okunur dosya sistemine sahip Docker.

Korumalı Alan Kaçışı Sorusu

rawget neden korumalı alandan çıkarılmalıdır?

Özet: Korumalı Alan Kaçışlarını Önleme

debug, rawget/rawset, package, require ve load öğelerini korumalı alandan çıkarınız. Korumalı alan ortamını __newindex ile koruyunuz. Özgünlerine başvurmak yerine kitaplık tablolarını kopyalayınız. En yüksek güvenlik için işletim sistemi düzeyinde yalıtım katmanı ekleyiniz.

Sıkça Sorulan Sorular

“Korumalı Alan Kaçışlarını Önleme” dersi ücretsiz mi?

Evet — “Korumalı Alan Kaçışlarını Önleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Korumalı Alan Kaçışlarını Önleme” dersinde ne öğreneceğim?

debug kitaplığına erişimi, rawget/rawset kötüye kullanımını ve upvalue sızıntılarını engelleyin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Korumalı Alan Kaçışlarını Önleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Lua 5.2+'da _ENV Modeli
  2. Kısıtlı Bir Korumalı Alan Oluşturma
  3. Korumalı Alan Kaçışlarını Önleme
  4. Kaynak Sınırları ve Enstrümantasyon
← Lua Academy Sayfasına Dön