Süni intellekt kod yazma yardımçıları getdikcə daha çox istifadə olunur, amma bəzən təhlükəsizlik zəifliklərini də birbaşa koda yerləşdirirlər. Son günlərdə diqqət çəkən bir məsələ: Cursor kimi AI redaktorlarının yaratdığı rekurziv merge (dərin birləşdirmə) funksiyaları prototype pollution adlı təhlükəsizlik boşluğuna səbəb ola bilir.
Bir tərtibatçı Cursor'dan iki konfiq obyektini birləşdirmək üçün kömək istəyib. AI 8 sətirlik bir funksiya yazıb, test məlumatlarında qüsursuz işləyib. Ancaq eyni funksiya istifadəçidən gələn JSON verilənlərini emal edərkən __proto__ açarını filtr eləmədiyi üçün bütün obyektlərin prototipinə müdaxilə imkanı yaradır. Məsələn, {"__proto__": {"isAdmin": true}} kimi bir payload göndərildikdə, hər bir obyektə isAdmin: true xassəsi əlavə olunur və if (user.isAdmin) yoxlamalarından keçmək mümkün olur.
Bəs niyə AI bu cür kod yazır? Səbəb sadədir: rekurziv merge nümunəsi onilliklər boyu blog yazılarında, StackOverflow cavablarında təhlükəsizlik yoxlanışı olmadan yayılıb. AI bu korpusdan öyrəndiyi üçün eyni səhvi təkrarlayır – axı test məlumatlarında heç vaxt sınmır, çünki hücumçu tərəfindən göndərilən xüsusi açar yoxdur.
Həll yolu sadədir: __proto__, constructor və prototype kimi təhlükəli açarları rədd eləmək üçün funksiyaya üç sətir əlavə etmək kifayətdir. Daha yaxşı yanaşma isə istifadəçi məlumatlarını adi obyekt əvəzinə Object.create(null) ilə yaradılmış obyektdə və ya Map'də saxlamaqdır – beləcə prototip zəncirinə çatmaq mümkün olmur.
Əgər AI alətlərindən istifadə edirsinizsə, yazılan kodu təhlükəsizlik baxımından yoxlamaq vacibdir. SafeWeave kimi MCP serverlər və ya sadəcə semgrep ilə pre-commit hook'u bu tip zəiflikləri erkən aşkar edə bilər. Əsas odur ki, AI nə qədər ağıllı olsa da, istehsal kodunu yoxlamadan istifadə etmək olmaz.



