ChatGPT ve diğer LLM programlarından "Gizli Kod" nasıl kaldırılır?

CometAPI
AnnaDec 2, 2025
ChatGPT ve diğer LLM programlarından "Gizli Kod" nasıl kaldırılır?

Büyük dil modelleri (LLM'ler) giderek daha fazla çalışan kod ürettikçe ve geliştirme hatlarına ve aracı yığınlarına entegre edildikçe, artan bir risk ortaya çıkıyor gizli or kötü niyetli Talimatlar (ister model çıktılarına gömülmüş, ister web sayfaları veya üçüncü taraf eklentileri aracılığıyla eklenmiş, isterse model eğitimi sırasında tanıtılmış olsun) bu kod yürütüldüğünde güvenli olmayan davranışlara neden olabilir.

Geliştirici topluluklarında dolaşan kullanıcı raporlarına göre, bir yazılım geliştiricisi yaklaşık olarak felaket boyutunda veri kaybı yaşadı. 800 GB dosya silindi, Da dahil olmak üzere CursorAI uygulamasının tamamı — yardımıyla oluşturulan kodu çalıştırdıktan sonra İkizler 3 içeride çalışırken CursorAI IDEGeliştiriciler kod üretimi için LLM'lere giderek daha fazla güvendikçe, incelenmemiş veya güvenli olmayan betiklerin sonuçları daha da ciddileşiyor.

Bu nedenle LLM tarafından üretilen tehlikeli kodların nasıl tespit edilip kaldırılacağını bilmek oldukça önemlidir.

ChatGPT ve LLM bağlamında “gizli kod” nedir?

"Gizli kod" derken neyi kastediyoruz?

"Gizli kod", geliştiricilerin bir LLM'nin içine aldığı veya yaydığı metin (veya dosyalar) içindeki gömülü talimatları veya yürütülebilir içeriği tanımlamak için kullandıkları genel bir terimdir; bunlara şunlar dahildir:

  • İstem tarzı talimatlar Kullanıcı içeriğinin içine gömülü (örneğin, bir PDF'de gizli "Önceki talimatları yoksay...").
  • Görünmez karakterler veya belirteçleri gizlemek veya belirteçleştirme varsayımlarını bozmak için kullanılan sıfır genişlikli boşluklar.
  • Kodlanmış yükler (base64, URL kodlu, görsellerin veya belgelerin içine yerleştirilen gizli yazılar).
  • Gizli HTML/JS veya alt akış görüntüleyiciler tarafından yorumlanabilecek biçimlendirilmiş içerikte bulunan betik blokları.
  • Meta veriler veya açıklamalar (dosya yorumları, PDF'lerdeki gizli katmanlar) alma sistemlerine veya modele talimat veren.
  • örtük davranışlar tehlikeli API'leri kullanan üretilen koddan kaynaklanan (örneğin, eval, exec, subprocess, veya ağ/sistem çağrıları) — niyet açıkça kötü niyetli olmasa bile.
  • Hızlı enjeksiyon talimatları saldırganın komut istemini veya bağlamı tasarlaması nedeniyle modelin gizli komutlar veya arka kapı benzeri mantık içeren kod üretmesine neden olur.

Bu saldırı vektörlerine genellikle şu ad verilir: hızlı enjeksiyon or dolaylı hızlı enjeksiyon Amaç model davranışını değiştirmek olduğunda. Güvenlik topluluğu artık hızlı enjeksiyonu temel bir LLM güvenlik açığı olarak ele alıyor ve OWASP bunu bir LLM risk kategorisi olarak resmileştirdi.

Bu, normal kötü amaçlı yazılımlardan veya XSS'den nasıl farklıdır?

Aradaki fark anlamsal Katman: İstemli enjeksiyon, ana işletim sistemi veya tarayıcı oluşturma motoru yerine modelin talimat izleme davranışını hedef alır. Bununla birlikte, bir web oluşturucusunda çalışan gizli HTML veya betik yine de yürütülebilir bir saldırıdır (XSS benzeri); hem anlamsal hem de yürütme katmanları savunulmalıdır. Sektör liderleri ve araştırmacılar, istemli enjeksiyonu "sınır güvenliği sorunu" olarak adlandırmış ve azaltma stratejileri yayınlamaya devam etmektedir.

LLM neden gizli veya tehlikeli kod üretebilir?

Model davranışı, eğitim verileri ve talimat bağlamı

Hukuk alanında yüksek lisans (LLM) öğrencileri, verilen bağlam ve talimatlara göre makul devamlar üretmek üzere eğitilirler. Bağlam, çelişkili ipuçları içeriyorsa veya bir kullanıcı modelden güçlü eylemler gerçekleştiren bir kod isterse, model incelikli veya aktif davranışlar içeren bir kod üretebilir.

LLM'ler makul ama güvenli olmayan kodlar üretir

Hukuk Yüksek Lisansı (LL.M.) programları, yıkıcı yan etkilerin varlığında güvenlik için değil, akıcılık ve faydalılık için optimize edilmiştir. Memnuniyetle özlü bir rm -rf /path/to/dir or shutil.rmtree() "Temizlik yapmaları" istendiğinde arayabilir ve yanıtları genellikle kendinden emin bir şekilde ifade edildiğinden, kullanıcılar yeterince dikkatli olmadan kopyalayıp gönderebilirler. Bu "kendinden emin halüsinasyon" sorunu, görünüşte zararsız isteklerin tehlikeli hale gelmesinin nedenidir.

Karartma iş akışlarının otomasyonu

Tehdit aktörleri artık LLM çağrılarını zincirleyerek kod karartma işlemini otomatikleştiriyor: bir model bir yük oluşturuyor, diğeri imza tespitini önlemek için onu yeniden işliyor vb. 2025'teki sektör tehdit raporları ve tedarikçi analizleri, bu "yapay zeka destekli karartmayı" yeni bir teknik olarak belgeliyor.

Model çıktılarının içindeki gizli kodları nasıl tespit edebilirsiniz?

Hızlı triyaj kontrol listesi

  1. Görünmez/alışılmadık Unicode'u tarayın (sıfır genişlikte birleştiriciler, sıfır genişlikte boşluklar, bayt sırası işaretleri, ASCII olmayan homoglifler).
  2. Statik analiz / AST ayrıştırmayı çalıştırın güçlü API'lerin kullanımını belirlemek için (eval, exec, subprocess, os.system, yansıtıcı çağrılar).
  3. Kodlanmış yükleri arayın (base64, hex blob'lar, tekrarlanan uzun dizeler veya sıkıştırılmış içerik).
  4. Karartma kalıplarını kontrol edin (API adlarını, karakter aritmetiğini oluşturan dize birleştirme, chr() (zincirler).
  5. Anlamsal analiz kullanın kodun gerçekten G/Ç, ağ oluşturma veya dosya sistemi mutasyonu gerçekleştirip gerçekleştirmediğini doğrulamak için.

Statik desen tespiti (hızlı, ilk satır)

  • Dil-bilinçli ayrıştırma ve tarama. Üretilen çıktıyı anında düz yazı yerine kod bloklarına ayrıştırın. Biçimlendiricileri ve tüy dökücüleri (Black/Prettier, pylint, eslint) çalıştırın. Tüy dökme kuralları, eval, exec, rm -rf, ham alt işlem çağrıları veya komutları dinamik olarak oluşturan kabuk boruları.
  • Jeton ve dize desen tarayıcıları. Yüksek riskli token ve desenleri arayın: sudo, mutlak yollar gibi /home/, C:\, rm -rf, shutil.rmtree, subprocess.Popen, satır içi base64 blob'ları, uzun yorumlanamayan dizeler ve yorumlayıcı bağlamını değiştiren shebang'ler.
  • Gizli tarama ve menşe kontrolleri. Sabit kodlanmış kimlik bilgilerini, güvenilmeyen kayıt defterlerine işaret eden URL'leri veya paketleri rastgele kaynaklardan dinamik olarak çeken kodları tespit edin.

Statik analiz, birçok belirgin sorunu hızla yakalar ve bir CI kapısının parçası olarak çalıştırılması ucuzdur.

Anlamsal ve bağlamsal algılama (daha derin)

  • Niyet analizi. Oluşturulan kodun amacını sınıflandırmak için ikincil bir model veya kural motoru kullanın: "okuma", "yazma", "silme", ​​"ağ", "yükleme" mi? Silme/yazma olarak kategorilendirilen her şey, yükseltmeyi tetiklemelidir.
  • Veri akışı analizi. Doğrulanmamış veya kullanıcı tarafından sağlanan yolların yıkıcı API'lere ulaşıp ulaşamayacağını tespit etmek için kodu analiz edin. Örneğin, bir LLM çıktısından veya uzak bir dosyadan türetilen bir değişken daha sonra bir kabuk komutuna eklenirse, bunu işaretleyin.
  • Menşe korelasyonu. Konuşmanın, sistem komut isteminin ve bağlam sayfalarının tam kaydını tutun. Şüpheli çıktılar belirli bir harici belge veya eklenti çağrısıyla ilişkiliyse, bu, komut istemi enjeksiyonu veya bozuk bir bağlam belirtisi olabilir.

Dinamik ve davranışsal algılama (en güvenilir)

  • İzleme ile sandbox yürütme. Ağ bağlantısı, ana bilgisayar bağlantısı ve sistem çağrısı filtrelemesi (seccomp) olmayan, sıkı bir şekilde kısıtlanmış geçici bir ortamda oluşturulan kodu çalıştırın. Dosya sistemi etkinliğini, ağ çağrılarını, işlem başlatmayı ve olağandışı G/Ç'yi izleyin.
  • Kanarya testi. Gerçek veriler üzerinde çalıştırmadan önce, sentinel dosyaları içeren sentetik dizinlerde kodu çalıştırın; silinmeleri veya üzerine yazmaları izleyin.
  • Davranışsal buluşsal yöntemler. Üst dizinleri dolaşan döngüleri, derinlik kontrolleri olmayan yinelemeli işlemleri veya birçok dosyaya zarar verebilecek yeniden adlandırma kalıplarını (örneğin, aynı dosya adını tekrar tekrar yazmak) arayın.
    Dinamik analiz, gizlenmiş, geciktirilmiş veya yalnızca çalışma zamanında tetiklenen yükleri tespit etmenin tek yoludur.

LLM çıktılarını çalıştırmadan önce gizli kodu nasıl kaldırmalı veya etkisiz hale getirmelisiniz?

Savunma amaçlı kaldırma ve anlamsal değişiklik

"Gizli kodu kaldırmanın" iki amacı vardır:

  1. Sanitasyon — açıkça kod dışı veya şüpheli olan içerikleri kaldırın (görünmez Unicode, sıfır genişlikte karakterler, eklenen base64 yükleri). Bu, amaçlanan, zararsız mantığı değiştirmemelidir.
  2. nötralizasyon — harici hizmetleri çalıştıran veya çağıran her şey için, bu çağrıları devre dışı bırakın veya doğrulanana kadar bunları işlemsiz hale getirin.

Her zaman tercih ederim nötralizasyon + inceleme Kör silme: Kod bölümlerini keyfi olarak kaldırmak, bozuk veya beklenmedik davranışlara yol açabilir. Bunun yerine, şüpheli yapıları güvenli bir şekilde başarısız olan açık, kayıtlı kodlarla değiştirin (istisnalar oluşturun veya güvenli varsayılanları döndürün).

Adım 1 — Oluşturulan kodu güvenilmeyen veri olarak ele alın

Kodu, kaldırma ve güçlendirme sürecinden geçirmeden doğrudan ChatGPT'den (veya herhangi bir LLM'den) çalıştırmayın. Bu süreç politika tarafından uygulanmalı ve CI/CD'de otomatikleştirilmelidir.

Adım 2 — Kodu ayıklayın ve standartlaştırın

  • Metni normalleştirin ve sıfır genişlikteki karakterleri kaldırın: U+200B, U+200C, U+200D, U+FEFF ve diğer sıfır genişlikli/biçimlendirme kod noktaları gibi karakterleri kaldırın. Denetim için kaldırılanları günlüğe kaydedin. Bu adım, görsel gizlilik için kullanılan birçok "gizli" kodlamayı ortadan kaldırır.
  • Tüm kod dışı bağlamı kaldırın: Anlatıyı, gizli yorumları ve tüm HTML/Markdown sarmalayıcılarını kaldırın. Kodu, dil biçimlendiricileri (Siyah, Daha Güzel) kullanarak kanonik forma dönüştürün, böylece gizlenmiş boşluklar veya kontrol karakterleri normalleştirilir.
  • Bu yapılarla kodu reddedin veya karantinaya alın: dinamik eval, ham alt işlem çağrıları (os.system, subprocess.Popen), satır içi base64 blob'ları yürütmeye dönüştürülür veya gömülür #! yorumlayıcının bağlamını değiştirmeye çalışan yönergeler. Metni normalleştirin ve sıfır genişlikteki karakterleri kaldırın
    U+200B, U+200C, U+200D, U+FEFF ve diğer sıfır genişlikli/biçimlendirme kod noktaları gibi karakterleri kaldırın. Denetim için kaldırılanları günlüğe kaydedin. Bu adım, görsel gizlilik için kullanılan birçok "gizli" kodlamayı ortadan kaldırır.

Adım 3 — AST'ye ayrıştırın ve riskli düğümleri değiştirin

Kod bir AST'ye ayrıştırıldığında, dinamik yürütmeyi çağıran düğümleri bulun (örneğin, exec) veya fonksiyon adlarını programatik olarak oluşturur. Bunları, "güvenli olmayan dinamik davranış engellendi" ifadesini belirten kontrollü bir istisna oluşturan güvenli kod parçacıklarıyla değiştirin. İnceleme için AST destekli kaynağın temizlenmiş bir kopyasını oluşturun. Güvenlik deseni kontrollerini çalıştırın (ortamınız için özel semgrep kuralları). Eşleşmeler bulunursa, işaretleyin ve etkisiz hale getirin.

Adım 4 — Statik güçlendirme ve yeniden yazma

  • Otomatik yeniden yazma: tehlikeli çağrıları güvenli sarmalayıcılarla değiştiren otomatik bir temizleyiciden kod geçirin — örneğin, değiştirin os.system() / subprocess zaman aşımlarını ve ağ bloklarını uygulayan onaylı bir sanal alan yürütücüsü ile.
  • Yetenek kapısı: API anahtarlarını, belirteçlerini veya ayrıcalıklı uç noktalara yapılan çağrıları değiştirin veya kaldırın; bunları yerel testler için sahte bağdaştırıcılarla değiştirin. Gizli bilgilerin veya URL'lerin yanlışlıkla eklenmesini önleyin.
  • Bağımlılık yeniden yazmaları: blok dinamiği pip / npm Kod tarafından oluşturulan kurulumlar. Bağımlılıkların kayıt defteriniz aracılığıyla bildirilmesini ve onaylanmasını gerektirir.

Adım 5 — Saldırgan bir sanal alanda çalıştırın

  • Geçici kapsayıcılar / mikro sanal makineler: Kodu, ağı olmayan, ana bilgisayar kimlik bilgilerine erişimi olmayan ve sınırlı dosya sistemi erişimi olan bir kapsayıcı/sanal makinede çalıştırın. gVisor, Firecracker veya özel geçici yürütme hizmetleri gibi teknolojiler uygundur. Kodun G/Ç'ye erişmesi gerekiyorsa, politikayı uygulayan bir proxy kullanın.
  • Sistem çağrısı filtreleri ve seccomp: İzin verilen sistem çağrılarını sınırlayın. Geçici bir dizinin dışına dosya yazma işlemleri engellenmelidir.
  • Kaynak/zaman sınırları: CPU/bellek/zaman limitleri belirleyin, böylece mantıksal bombalar bile sonsuza kadar çalışamaz.

Sandbox yürütme ve izleme, genellikle statik kontrollerin gözden kaçırdığı yükleri ortaya çıkarır. Sektör rehberleri ve son teknik belgeler, sandbox'ı temel bir önlem olarak önermektedir.

Boru hattınızda hangi otomatik araçlar ve kurallar olmalı?

Önerilen araç zinciri bileşenleri

  • Unicode sanitasyon modülü (özel veya mevcut kütüphaneler). Normalleştirilmiş karakterlerin kaydedilmesi gerekir.
  • Ayrıştırıcı + AST analizörü her hedef dil için (Python) ast, typed-ast, JavaScript ayrıştırıcıları, Java ayrıştırıcıları).
  • Statik analizörler / SAST: Bandit (Python), Semgrep (çoklu dil, özelleştirilebilir), güvenlik eklentileriyle ESLint.
  • Entropi ve kod çözücü buluşsal yöntemleri: base64/hex/gzip'i algıla ve incelemeye yönlendir.
  • Sandbox çalışma zamanı: sıkı seccomp/AppArmor profiline sahip minimal konteyner veya sistem çağrıları devre dışı bırakılmış dil düzeyinde yorumlayıcı.
  • Politika uygulayıcısı: İzin verilen modülleri, izin verilen uç noktaları ve güvenli API sarmalayıcılarını belirleyen bir bileşen.
  • Denetim izi: Orijinal çıktıyı, temizlenmiş çıktıyı, farkları ve kararları kaydeden değişmez günlükler.

Örnek semgrep kalıpları (kavramsal)

Tehlikeli işlevlerin kullanımını işaret eden kısa ve muhafazakar kurallar kullanın. Örneğin:

  • bayrak eval, exec, Function yapıcı (JS), dinamik içe aktarımlar veya dizeyle oluşturulmuş API adları.
  • İzin verilen liste dışındaki ağ çağrılarını işaretleyin (örn. requests.get (bilinmeyen sunuculara).
  • Bayrak hassas yollara yazar (/etc, sistem klasörleri) veya işlemlerin oluşturulması.

(Bunları organizasyon başına yapılandırma öğeleri olarak tutun ve zaman içinde sıkılaştırın.)

Pratik dezenfeksiyon parçacıkları nelerdir (güvenli örnekler)?

Aşağıda uyarlayabileceğiniz tehlikesiz, savunma amaçlı örnekler bulunmaktadır. dezenfeksiyon ve tespit kod parçacıkları — istismar talimatları değil.

Örnek: sıfır genişlikteki karakterleri kaldır (Python, savunma amaçlı)

import re
ZERO_WIDTH_RE = re.compile(r'')
def strip_zero_width(s: str) -> str:
    cleaned = ZERO_WIDTH_RE.sub('', s)
    return cleaned

Bu, saldırganların genellikle görünür metinlerdeki kodu gizlemek için kullandıkları karakterleri kaldırır. Kaldırılanları her zaman günlüğe kaydedin ve kaldırma işlemini denetim izinin bir parçası olarak ele alın.

Örnek: AST'yi ayrıştırma ve inceleme (Python, kavramsal)

import ast

def has_dynamic_exec(source: str) -> bool:
    tree = ast.parse(source)
    for node in ast.walk(tree):
        if isinstance(node, ast.Call):
            if getattr(node.func, 'id', '') in ('eval', 'exec',):
                return True
        if isinstance(node, ast.Attribute):
            if getattr(node, 'attr', '') in ('popen', 'system'):
                return True
    return False

If has_dynamic_exec True döndürür, kodu çalıştırmaz; bunun yerine dinamik düğümü güvenli bir kod parçasıyla değiştirir ve inceleme gerektirir.

Not: Bu örnekler savunma amaçlıdır. Günlük kaydı, denetim veya insan incelemesini işlem hattınızdan kaldırmayın.

Son düşünceler: LLM çıktısını her zaman güvenilmeyen kod gibi ele alın

LM'ler güçlü üretkenlik araçlarıdır; zarif kodlar üretebilir, taslakları hızlandırabilir ve rutin işleri otomatikleştirebilirler. Ancak uygulama aşamasına geldiklerinde güvenlik kuralları değişir: model çıktıları güvenilmeyen eserler olarak ele alınmalıdırSon 18-30 ay boyunca yapılan hızlı enjeksiyonlar, arka kapı araştırmaları ve gerçek dünyadaki güvenlik açıklarının ifşa edilmesinin birleşimi net bir noktayı ortaya koyuyor: risk yüzeyi büyüdü ve gelişmeye devam edecek.

Ayrıştırma, statik analiz, korumalı alanda dinamik test, yönetişim ve sürekli kırmızı takım çalışmalarını birleştiren pratik savunmalar çoğu saldırıyı durduracaktır. Ancak ekipler aynı zamanda kurumsal kontrollere de yatırım yapmalıdır: en az ayrıcalık, köken ve LLM çıktılarının doğrulanması gerektiğini varsayan bir kültür. Sektör, bu kalıpları kolaylaştırmak için araçlar ve çerçeveler geliştiriyor; bu arada, yukarıdaki kontrol listesini benimsemek, gizli bir yükün gözden kaçma olasılığını azaltır.

Geliştiriciler, aşağıdaki gibi en son LLM API'sine erişebilirler: Claude Sone 4.5 API ve Gemini 3 Pro Önizleme vb. CometAPI aracılığıyla, en son model versiyonu Resmi web sitesi aracılığıyla sürekli güncellenmektedir. Başlamak için, modelin yeteneklerini keşfedin. Oyun Alanı ve danışın API kılavuzu Ayrıntılı talimatlar için. Erişimden önce, lütfen CometAPI'ye giriş yaptığınızdan ve API anahtarını edindiğinizden emin olun. Kuyrukluyıldız API'si Entegrasyonunuza yardımcı olmak için resmi fiyattan çok daha düşük bir fiyat teklif ediyoruz.

Gitmeye hazır mısınız?→ Bugün CometAPI'ye kaydolun !

Yapay zeka hakkında daha fazla ipucu, kılavuz ve haber öğrenmek istiyorsanız bizi takip edin VKX ve Katılın!

SHARE THIS BLOG

500+ Model Tek Bir API'de

%20'ye Varan İndirim