Zararlı içerik ve saldırı tespiti
On üç zararlı içerik etiketi, dört saldırı etiketi, her birine karar veren eşik dosyaları ve hepsinden önce çalışan kaçınma çözücüleri.
- Sürüm: 0.4
- Rol: admin_user, normal_user, viewer
Bir istemin yalnızca hassas mı yoksa zararlı mı olduğuna iki tespit motoru karar verir: on üç etiketli bir zararlı içerik sınıflandırıcısı ve iki etiketli bir saldırı sınıflandırıcısı; ayrıca SQL enjeksiyonu ve siteler arası betik çalıştırma için belirlenimci bir tarama. Üçü de zaten çözülmüş metni okur.
Sorun
Zarar tek bir kategori değildir. "Nasıl bomba yaparım" ile "siz zararlı böceksiniz" ifadelerinin ikisi de kabul edilemez ve farklı yanıtlar gerektirir; bunları tek bir puan olarak ele alan bir kurum, birincisini engelleyip ikincisini incelemeye alan bir politika kuramaz. Saldırılar daha da kötüdür: sistem yönergesini geçersiz kılan bir istem sıradan metne benzer ve bir sınıflandırıcının izlediğini bilen saldırgan, yükü base64, leetspeak ya da sıfır genişlikli karakterlerle yazar. Ham dizgi üzerindeki tek bir puan bu sorunların hiçbirini yanıtlamaz.
CID222 bunu nasıl yapar
Önce çözme gelir
Herhangi bir model metni görmeden önce sekiz normalleştirici sabit bir sırayla çalışır — önce ucuz yapısal temizlikler, böylece anlamsal çözücüler zaten sadeleştirilmiş metin üzerinde çalışır.
| Normalleştirici | Neyi geri alır | Anahtar |
|---|---|---|
| Görünmez karakterler | Sıfır genişlikli, iki yönlü ve etiket karakterleri | NORMALIZE_INVISIBLE_CHARS |
| Kodlama | On altılık, URL ve HTML varlık kaçışları | NORMALIZE_ENCODING |
| Dolgu | Harf dolgusu — h.a.t.e, h a t e | NORMALIZE_PADDING |
| ROT13 | ROT13 yer değiştirmesi | NORMALIZE_ROT13 |
| Base64 | Base64 yükleri | NORMALIZE_BASE64 |
| Leetspeak | Harf yerine rakam kullanımı — p@55w0rd | NORMALIZE_LEETSPEAK |
| Unicode | Tam genişlikli ve karıştırılabilir karakterler | NORMALIZE_UNICODE |
| Büyük/küçük harf | Bağıran ya da OCR'la büyük harfe çevrilmiş metin; CASE_UPPERCASE_THRESHOLD yüzdesinin üzerinde büyük harf | NORMALIZE_CASE |
Geçiş en çok NORMALIZATION_MAX_PASSES kez yinelenir (varsayılan 2); böylece bir kodlamanın
içindeki başka bir kodlama katmanı da açılır. NORMALIZATION_ENABLED bu aşamanın tamamını kapatır.
Warning
NORMALIZATION_MAX_INPUT_BYTES değerinden (varsayılan 16384) uzun metin normalleştirmeyi
tümüyle atlar ve tespit motorlarına yazıldığı gibi gider. Bu üst sınır, leetspeak
normalleştiricisinin yöneticinin verdiği düzenli ifadeleri eşzamanlı olarak değerlendirmesinden
doğar: geri izlemeli bir örüntüye karşı hastalıklı bir girdi ağ geçidini durdurur.
On üç zararlı içerik etiketi
cid-hap-guard-v2, çok dilli bir ONNX sınıflandırıcı çalıştırır ve her istekte on üç etiketin her
biri için bir puan döndürür: şiddet, suç, cinsel suç, çocuk istismarı, iftira, tehlikeli tavsiye,
mahremiyet, fikrî mülkiyet, silahlar, nefret, kendine zarar, cinsel içerik ve siber suçlar.
Etiketler birbirinden bağımsızdır — bir istem aynı anda birkaçından yüksek puan alabilir.
Her etiket, zararlı içerik hizmeti imajının içinde gelen bir eşik dosyasında kendi üç düzeyli eşik
üçlüsünü taşır: engelleme, işaretleme ve yalnızca günlükleme. Değerler ortak değil, etiket bazında
ayarlanmıştır: dangerous_advice yüksek bir puanda engeller, çünkü aksi hâlde kariyer ve tıp
soruları buna takılır; cyber_crimes ise çok daha düşük bir puanda engeller. Tam sayılar ve her
etiketin eşlendiği varsayılan eylem, üretilmiş
varlık ve etiket türleri başvurusundadır.
Note
Birlikte gelen dosyada her etiketin yalnızca günlükleme eşiği 0.00 değerindedir. Hiçbir etikette
bu katman tabanın üzerine ayarlanmamıştır; yani pratikte her etiketin üç değil iki etkin düzeyi
vardır.
İki saldırı etiketi ve belirlenimci bir tarama
cid-attack-guard, iki etiket üzerinde sigmoid etkinleştirmeli ikinci bir ONNX sınıflandırıcı
çalıştırır — enjeksiyon ve jailbreak — böylece ikisi de tek bir istemde tetiklenebilir. Ağ geçidi,
engelleme eşiğini aşan her etiket için bir tespit üretir; bu yüzden tek bir istem hem bir
prompt_injection hem de bir jailbreak satırı doğurabilir.
Modelin yanında aynı hizmet, OWASP Core Rule Set'in kullandığı belirteçleyici olan libinjection
üzerine kurulu belirlenimci bir tarama da sunar. Bu tarama sql_injection ve xss etiketlerini
1.0 puanıyla üretir — bir olasılık değil, bir parmak izi eşleşmesi.
Warning
Saldırı eşikleri etiket bazında alıntılanamaz. Saldırı hizmetinin eşik dosyası iki satırını
label_0 ve label_1 olarak anahtarlar — adlar değil, konumsal dizinler. Dizinden ada eşleme,
imaj derlenirken modelle birlikte gelen ve eşik dosyasının yanında dağıtılmayan label_map.json
dosyasında yaşar. İki satır farklı değerler taşır; yani hangisinin hangisi olduğunu tahmin etmek
yazı tura atmak olur. Satırların kendisi
varlık ve etiket türleri sayfasında listelenir.
Tetikleyici sözcükler kararı değil güveni değiştirir
Saldırı tespit motoru hizmetten puanı yükselten sözcükleri ister, sonra bunları model puanıyla birleştirerek tek bir melez güven değeri üretir:
- Model puanı 0,65 ve üzerindeyse — model olduğu gibi kabul edilir.
- Model puanı 0,65'in altındaysa — uygun her tetikleyici sözcük 0,05 ekler; bonus 0,2 ve sonuç 0,75 ile sınırlıdır.
- Model işaretlemediyse ama tetikleyici sözcükler varsa — en az iki uygun sözcük gerekir ve sonuç, doğrulanmış bir tespitin ulaştığı düzeyin altında sınırlanır. Tek bir zayıf sözcük sıfır verir ve tespit düşürülür.
Melez güveni sıfıra düşen bir tespit hiçbir zaman satıra dönüşmez.
Eşiklerin yaşadığı yer
İki eşik dosyası da derleme sırasında, modelin kendisiyle gelen ne varsa onun üzerine, kendi hizmet imajına kopyalanır. Hiçbirini geçersiz kılan bir ortam değişkeni yoktur. Yeniden ayarlamak, dosyayı düzenleyip imajı yeniden derlemek demektir.
Warning
Eski belgeler HAP_THRESHOLD adlı tek bir genel zararlı içerik eşiği değişkeninden ve genel bir kişisel veri güven değişkeninden söz eder. Yığında bunların hiçbiri okunmaz. Zararlı içerik eşikleri etiket bazında ve imaj bazındadır.
Sınırlar ve bilinen eksikler
- Sekiz eğitilmiş dil. İki model de İngilizce, Türkçe, Almanca, Fransızca, İspanyolca, Arapça, İtalyanca ve Felemenkçe üzerinde eğitilmiştir. Başka bir dildeki istem yine bu modellere ulaşır ve yine bir puan döner; o puanın ölçülmüş bir güvenilirliği yoktur.
- Çözücü kümesi sonludur. ROT13, base64, leetspeak, Unicode karıştırılabilirleri, on altılık/URL/HTML varlıkları, görünmez karakterler ve harf dolgusu kapsanır. Bu listenin dışındaki bir kodlama tespit motorlarına olduğu gibi ulaşır.
- Uzun metin hiç çözülmez. Girdi üst sınırının üzerinde normalleştirme aşaması atlanır; bu yüzden büyük bir belge gövdesi yazıldığı gibi taranır.
- Saldırı koruması etiket adları cihaz üzerinde doğrulanamaz.
label_map.jsonyayımlanana ya da dışa aktarılana kadar, eşik dosyasını okuyan bir işletmeci hangi satırın hangi etiketi yönettiğini söyleyemez. log_onlykatmanı zararlı içerik tarafında kullanılmaz. On üç zararlı içerik etiketinin her birilog_only: 0.00ile gelir; yani o katman orada hiç tetiklenmez. Saldırı dosyası ise bunu ayarlar — iki satırı da sıfırdan farklı birlog_onlytaşır — yani katman saldırı puanlamasında canlı, zararlı içerikte ölüdür.- Doğruluk koşulludur. Etikete, dile ve metin uzunluğuna göre değişir. Çıplak bir yüzde değil, performans ve doğruluk sayfasındaki koşullu rakamları alıntılayın.
- Başarısız bir model çağrısı hiçbir tespit üretmez. İki tespit motoru da hatayı günlükler, hizmeti bozulmuş olarak bildirir ve boş bir liste döndürür. Yanıt vermeyen bir tespit motoruna dayanarak hiçbir şey engellenmez.
İlgili
- İçerik güvenliği hattı — bu tespit motorlarının nerede durduğu ve kararlarının tek bir eyleme nasıl çözümlendiği.
- Varlık ve etiket türleri — eşikleri ve varsayılan eylemiyle her etiket.
- Halüsinasyon tespiti — yanıt teslim edildikten sonra çalışan yanıt tarafı denetimi.
Son güncelleme