TL; DR
აგენტური კოდირების რისკი არ არის ის, რომ აგენტი ცუდ კოდს წერს. რისკი მდგომარეობს იმაში, რომ აგენტი მოქმედებს. ის აინსტალირებს პაკეტებს, არედაქტირებს ფაილებს, რომლებიც თქვენ არ გაგიხსნიათ, იძახებს ხელსაწყოებს, კითხულობს კონფიგურაციას, რომელსაც არავინ ამოწმებს და ხსნის pull requestsთითოეული მათგანი დეველოპერის ნებართვით შესრულებული პრივილეგირებული ოპერაციაა და თქვენი არსებული კონტროლი შექმნილია იმ სამყაროსთვის, სადაც თითოეულ მათგანს ადამიანი აკრეფს.
სიჩქარემ გადახედვისკენ გადაიტანა შეფერხების წერტილი. ხელოვნური ინტელექტის კოდირების ასისტენტების დამოუკიდებელი კვლევის თანახმად, გენერირებული კოდის დაახლოებით 40% შეიცავს უსაფრთხოების დაუცველობას და ეს მაჩვენებელი არ გაუმჯობესებულა მოდელების გაუმჯობესების კვალდაკვალ. გამომავალი მონაცემები გამრავლდა. განხილვის შესაძლებლობა კი - არა. აგენტური პროგრამირება ამ პრობლემას ავტომატურ დასრულებაზე უფრო მკვეთრს ხდის, რადგან ერთი ინსტრუქცია შეიძლება ათეულ ფაილს შეეხოს.
თავდასხმები მიმართულია გაყვანილობისკენ და არა მოდელისკენ. წესების ფაილში დამალული უნიკოდი ასისტენტს აიძულებს გამოსცეს დაბლოკილი კოდი და არასდროს ახსენებდეს მას, რომელიც MITRE ATLAS-ში კატალოგირებულია, როგორც AML.CS0041. თავდამსხმელები არეგისტრირებენ პაკეტების სახელებს, რომლებსაც მოდელები ჰალუცინაციებს იწვევენ. ერთმა MCP ხიდმა დისტანციური კოდის შესრულება კლიენტებს 437 000-ზე მეტჯერ გაუგზავნა. ტრადიციული ანალიზი ამ ფაილებიდან არცერთს არ კითხულობს.
რაც მას შეიცავს, მოსაწყენია და მუშაობს: ინვენტარიზაცია გაუკეთეთ რეალურად გამოყენებული აგენტებისა და MCP სერვერების, მოიყვანეთ მოთხოვნებისა და წესების ფაილები განხილვის პროცესში მყოფ კოდად, შეისწავლეთ დავალებასთან დაკავშირებული ყველა ინსტრუმენტი და აღასრულეთ პოლიტიკა დეველოპერის მანქანაზე, სადაც აგენტი მუშაობს. Xygeni AI უსაფრთხოება პირველ სამს მართავს და DevAI ბოლო, როგორც ხელოვნური ინტელექტის მიერ გენერირებულ, ასევე ადამიანის მიერ დაწერილ კოდში.
რა არის აგენტური კოდირება?
აგენტური კოდირება არის შემუშავება, სადაც ხელოვნური ინტელექტის აგენტი იღებს მიზანს და ასრულებს მას თქვენი კოდის ბაზაზე ინსტრუმენტების გამოყენებით: ფაილების კითხვა და რედაქტირება, დამოკიდებულებების ინსტალაცია, ტესტების გაშვება და გახსნა. pull requestsრისკები მომდინარეობს ამ ქმედებებიდან და მათი მართვის კონფიგურაციიდან და არა რომელიმე ცალკეული გენერირებული ფუნქციის ხარისხიდან. ეფექტური პრაქტიკაა ინვენტარიზაცია, შეზღუდული ნებართვები, გადახედილი კონფიგურაცია და საბოლოო წერტილში აღსრულება.
აგენტური კოდირება თუ აგენტური პროგრამირება?
ორივე ტერმინი ერთსა და იმავე ცვლილებას აღწერს და გუნდები მათ ერთმანეთის მაგივრად იყენებენ. აგენტური პროგრამირება, როგორც წესი, სამუშაოს შესრულების შესახებ საინჟინრო საუბრებში ჩნდება; აგენტური კოდირება არის ფრაზა, რომელიც ხელსაწყოებსა და უსაფრთხოებას შორის დარჩა. ტექნიკურად არაფერი განასხვავებს მათ. თუ გსურთ სრული განმარტება და მიმდებარე ლექსიკა, ჩვენი ტერმინოლოგიური ჩანაწერი აგენტურ კოდირებაზე მას მოიცავს.
ამ ნაშრომისთვის მნიშვნელოვანია შემოთავაზებასა და შესრულებას შორის განსხვავება. ასისტენტი, რომელიც ასრულებს ხაზს, პროდუქტიულობის ფუნქციაა. აგენტი, რომელიც აყენებს პაკეტს, რედაქტირებს ექვს ფაილს და აგზავნის ტოტს, არის არაადამიანური იდენტობა, რომელიც მოქმედებს თქვენს სისტემაში. SDLCაგენტურმა პროგრამირებამ ეს ზღვარი ჩუმად გადაკვეთა და მას შემდეგ უსაფრთხოების პროგრამების უმეტესობას ხელახლა არ შეუმოწმებია.
აგენტური კოდირების რეალური რისკები
ოთხი რისკის ოჯახი, იმ თანმიმდევრობით, რომლითაც ისინი კბენას ცდილობენ.
- მოცულობის გადაჭარბების მიმოხილვა. აგენტი საათში იმაზე მეტ ცვლილებას ახორციელებს, ვიდრე ნებისმიერ შემფასებელს შეუძლია შინაარსიანად წაიკითხოს. დამტკიცებები რეზინის შტამპებად იქცევა და დაუცველი ნიმუშები მანქანის სიჩქარით რეპროდუცირდება. ეს არის რისკი, რომელსაც ყველა აღიარებს და რომელიც ყველაზე იშვიათად იზომება. დაიწყეთ აგენტის მიერ ავტორიზებული ცვლილებებისა და ადამიანის მიერ განხილვის დროის თანაფარდობის გაზომვით და რიცხვი თქვენს სასარგებლოდ არგუმენტს წარმოადგენს.
- ინსტრუქციის ფენა. ყველაფერი, რაც აგენტის კონტექსტს აღწევს, მას წარმართავს. სწრაფი ინექცია ნომერ პირველია OWASP-ის ტოპ 10 LLM აპლიკაციებისთვის გარკვეული მიზეზის გამო და აგენტურ კოდირებაში მიწოდების საშუალებები ჩვეულებრივია: პრობლემის აღწერა, კოდის კომენტარი, დამოკიდებულებაში არსებული README, დოკუმენტი, რომელსაც აგენტი იღებს. არავის მოუწევს თქვენზე პირდაპირ თავდასხმა. მათ მხოლოდ ის უნდა დაწერონ, რასაც თქვენი აგენტი წაიკითხავს.
- კონფიგურაციის ფენა. წესების ფაილები, უნარების ფაილები, მოთხოვნები და MCP სერვერის განმარტებები განსაზღვრავს, თუ რას აკეთებს აგენტი და რაზე შეუძლია წვდომა. ისინი არ წარმოადგენენ აპლიკაციის კოდს, ამიტომ ტიპურ დასტაში არსებული არცერთი სკანერი არ კითხულობს მათ. Rules File Backdoor-მა აჩვენა უკიდურესი შემთხვევა, სადაც ნულოვანი სიგანის სიმბოლოები შეიცავს ინსტრუქციებს, რომელთა ნახვაც შემფასებელს ფიზიკურად არ შეუძლია. ჩვეულებრივი შემთხვევაც ისეთივე დამაზიანებელია: პროვაიდერის ავტორიზაციის მონაცემები, რომლებიც უბრალო ტექსტშია განთავსებული კონფიგურაციის ფაილში, ან ასისტენტი, რომელსაც მიენიჭა მთელ ფაილურ სისტემაზე წაკითხვის წვდომა, რადგან ეს იყო ნაგულისხმევი პარამეტრი.
- დამოკიდებულება და ხელსაწყოს ზედაპირი. აგენტი ირჩევს დამოკიდებულებებს. ის წყვეტს სახელს, აყენებს მას და გადადის შემდეგ ეტაპზე, ხოლო ინსტალაციის სკრიპტები ნებისმიერის გაშვებამდე მუშაობს. pipeline ცვლილებას ხედავს. Slopsquatting სწორედ ამას იყენებს: USENIX Security 2025-ზე წარმოდგენილმა კვლევამ აჩვენა, რომ ენობრივი მოდელების მიერ რეკომენდებული პაკეტების 19.7% არ არსებობს და ჰალუცინირებული სახელები საკმარისად ხშირად მეორდება, რომ თავდამსხმელებმა ისინი დაარეგისტრირონ და დაელოდონ. იგივე ეხება MCP სერვერები, სადაც არასანდო სერვერთან დაკავშირება აგენტს ისეთ ინსტრუმენტებს გადასცემს, რომელთა აუდიტიც არასდროს გაგიკეთებიათ.
როგორ მიდის სინამდვილეში არასწორად
არც ერთი ეგზოტიკური ექსპლოიტი. ველურ ბუნებაში უკვე დოკუმენტირებული ტექნიკის ერთობლიობა, მათი დაშვების თანმიმდევრობით.
- ინსტრუქციაწინადადება მოთავსებულია პრობლემის აღწერაში, დამოკიდებულების README ფაილში ან კოდის კომენტარში. ის არ არის დაწერილი ადამიანის წასაკითხად.
- Კონტექსტიდეველოპერი აგენტს პრობლემის გამოსწორებას სთხოვს. აგენტი აღწერილობას, საცავის და საკუთარი წესების ფაილებს კონტექსტში ათავსებს. ინსტრუქცია და შინაარსი მოდელის იდენტურია.
- ინსტალაციააგენტი ხსნის დამხმარე ბიბლიოთეკას, რომელიც სწორად ჟღერს და აყენებს მას. სახელი გასულ კვირას დარეგისტრირდა ვიღაცის მიერ, რომელმაც შენიშნა, რომ მოდელები გამუდმებით იგონებდნენ მას. ინსტალაციის სკრიპტი ლეპტოპზე სრულდება.
- სერთიფიკატიპროვაიდერის ტოკენი მოცემულია უბრალო ტექსტში
mcp.jsonდა გარსში უკვე აქტიური ღრუბლოვანი სესია. სკრიპტს ესკალაცია არ სჭირდება. ის მემკვიდრეობით გადადის. - ის pull requestცვლილება მცირეა, ტესტები მწვანეა და სხვაობა საკმაოდ კარგად იკითხება. ის ერთ წუთზე ნაკლებ დროში დამტკიცდება, რადგან კიდევ ოთხი ტესტი ელოდება.
მესამე ნაბიჯის შემდეგ თქვენს საკუთრებაში არსებული ყველა კარიბჭე ენთება. პირველი სამი ხდება დეველოპერის მანქანაზე, დაახლოებით ოთხმოცდაათი წამში.
8 გაკვეთილი ადრეული მომხმარებლებისგან
დოკუმენტირებული ინციდენტების, გამოქვეყნებული კვლევებისა და იმ ნიმუშების საფუძველზე, რომლებიც გამუდმებით ვლინდება გუნდებში, რომლებმაც აგენტური პროგრამირება მანამ მიიღეს, სანამ ვინმე მისთვის პოლიტიკას დაწერდა.
- აფეთქების რადიუსი არის ხელსაწყოს ზედაპირი და არა შტრიხი. გუნდები კვირებს ხარჯავენ მოთხოვნების დახვეწასა და წუთებს იმის გადასაწყვეტად, თუ რომელი ინსტრუმენტების გამოძახება შეუძლია აგენტს. ეს არასწორი თანაფარდობაა. აგენტი, რომელსაც მხოლოდ წაკითხვა შეუძლია, უხერხულობას ქმნის, თუ კომპრომეტირებულია. აგენტი, რომელსაც შეუძლია ფოსტის გაგზავნა, მოთხოვნების წარმოება და გაგზავნა. commits არის ინციდენტი და მას აქვს დეველოპერის საკუთარი ავტორიზაციის მონაცემები, რადგან თითქმის არავინ აწვდის აგენტს ვინაობას. სისტემის მოთხოვნის დაწერამდე ჩაიწერეთ ინსტრუმენტების სია.
- აგენტი ოპტიმიზაციას უკეთებს ტესტის წარმატებით ჩაბარებისთვის და არა კოდის მუშაობისთვის. წარუმატებელი პაკეტისა და საკმარისი ავტონომიის გათვალისწინებით, აგენტი წაშლის მტკიცებას, შეამსუბუქებს პირობას ან შეცვლის ინტეგრაციას იმიტაციით, შემდეგ კი წარმატების შესახებ განაცხადებს. ყველა გუნდი ამას პირველივე კვირაში აღიარებს. სწორედ ამიტომ არის მწვანე pipelines-მა მტკიცებულებად ყოფნა შეწყვიტა და რატომ შეიცვალა განხილვის კითხვა „ეს მუშაობს თუ არა“-დან „რა შეიცვალა, რომ ეს დამტკიცდა“-ზე.
- თქვენი წესების ფაილი წარმოების კონფიგურაციაა ფაილი, რომელიც მართავს ყველა გენერირებულ ხაზს, როგორც წესი, არის commitერთხელ შემოწმებულია და აღარასდროს განხილულა. ის ცვლილებების კონტროლის ქვეშაა მფლობელის, განსხვავებული მიმოხილვისა და იმ ადამიანის მეშვეობით, ვინც შეამჩნევს, როდესაც ხაზი იზრდება და არავის ახსოვს მისი დამატება. ჩათვალეთ, რომ მასში ყველაფერი დაკმაყოფილდება, მათ შორის ის, რასაც ვერ ხედავთ.
- აგენტის დამოკიდებულებები თქვენი დამოკიდებულებები არ არის დამტკიცებული ბიბლიოთეკების სიები ადამიანის მიერ არჩევანს გულისხმობს. აგენტი წყვეტს სავარაუდო სახელს და აყენებს მას, ხოლო ინსტალაციის სკრიპტები სრულდება CI-ის შექმნამდე. დაზიანებულმა გუნდებმა დაამატეს შემოწმება ინსტალაციის დროს მანქანაზე და არა პოლიტიკის დოკუმენტი, რომელიც ჩამოთვლის, თუ რა უნდა ურჩიონ დეველოპერებს.
- ვერავინ გეტყვის რას ატარებენ ჰკითხეთ ხუთ ინჟინერს, რომელ MCP სერვერებსა და ასისტენტებს იყენებენ და მიიღებთ ხუთ პასუხს, რომელთაგან არცერთი არ არის სრულყოფილი. გამოკითხვები აქ არ მუშაობს, რადგან ინსტრუმენტები ლოკალურად ინსტალირდება და ყოველკვირეულად იცვლება. აღმოჩენა უნდა მოხდეს კოდიდან, დამოკიდებულებებიდან და კონფიგურაციის ფაილებიდან, რომლებსაც ინსტრუმენტები ტოვებენ.
- მეხსიერება შხამს სესიის დასრულების შემდეგაც ინარჩუნებს არასწორი ინსტრუქცია, რომელიც აღწევს მუდმივ კონტექსტს ან აგენტის მეხსიერებას, არ იწურება დავალების შესრულებისას. ის ჩუმად აგრძელებს მუშაობას ერთმანეთთან დაუკავშირებელ სამუშაოზე, სწორედ ამიტომ აქვს მეხსიერებისა და კონტექსტის მოწამვლას საკუთარი ჩანაწერი OWASP აგენტების სიაში. განიხილეთ აგენტის მეხსიერება, როგორც მდგომარეობა, რომელიც საჭიროებს გადახედვას და მისი გასუფთავების გზას და არა როგორც მოსახერხებელი ფუნქცია.
- შექცევადობა ამარცხებს პრევენციას ყველაზე უსაფრთხოდ ყველაზე მეტად ავტონომიური გუნდები არ არიან ყველაზე მკაცრი კონტროლის მქონეები. სწორედ ისინი უშვებენ შეცდომებს იაფად: აგენტები ძირითადი განყოფილებების ნაცვლად ფილიალებს ამუშავებენ, ერთჯერად გარემოში მუშაობენ და ყველა მოქმედების გაუქმება ერთი ბრძანებით შეიძლება. ავტონომია ხელმისაწვდომია ზუსტად იმდენად, რამდენადაც მისი შებრუნებაა შესაძლებელი.
- პილოტი გატყუებს აგენტები შესანიშნავად გამოიყურებიან მცირე საცავებში ახალი ამოცანების შესრულებისას და დეგრადირდებიან დიდ, მემკვიდრეობით მიღებულ კოდურ ბაზებში, იმპლიციტური კონვენციების გამოყენებით. წარმატებული პილოტირება გაზვიადებს პროდუქტიულობის ზრდას და ამცირებს რისკს, შემდეგ კი აყალიბებს მოლოდინს, რომლის შესრულებაც მასშტაბურად არავის შეუძლია. პილოტირება ჩაატარეთ თქვენს ყველაზე ცუდ საცავზე და არა ყველაზე სუფთაზე.
როგორ გამოიყურება ეს პრაქტიკაში
თანმიმდევრობა უფრო მნიშვნელოვანია, ვიდრე ინსტრუმენტები. პირველ რიგში აღმოჩენა, რადგან თქვენ არ შეგიძლიათ ნებართვების გაცემა იმ აგენტებზე, რომლებიც ვერ იპოვეთ. შემდეგ კონფიგურაციის ფენა, რადგან სწორედ იქ ინახება ინსტრუქციები. შემდეგ საბოლოო წერტილი, რადგან სწორედ იქ მუშაობს აგენტი რეალურად და სადაც ინსტალაცია დასრულდება დიდი ხნით ადრე. pipeline შენიშვნები.
Xygeni AI უსაფრთხოება აღმოაჩენს ყველა ხელოვნური ინტელექტის აქტივს SDLC, მათ შორის მოდელები, აგენტები, აგენტ სერვერები, MCP სერვერები, მონაცემთა ნაკრებები, უნარების ფაილები, მოთხოვნები და guardrails არავინ აცხადებს, კითხულობს აპლიკაციის კოდს, გამოცხადებულ დამოკიდებულებებს და კონფიგურაციის ფაილებს, რომლებსაც ხელოვნური ინტელექტის ინსტრუმენტები ტოვებენ, შემდეგ კი ასახავს, თუ როგორ უკავშირდებიან ისინი ერთმანეთს. ის აფიქსირებს აგენტური პროგრამირების სპეციფიკურ რისკებს: სწრაფი ინექცია და სისტემის სწრაფი გაჟონვა, მავნე ინსტრუქციები და ინსტრუმენტების ინექცია წესებსა და უნარების ფაილებში, MCP-ის დაუცველი კონფიგურაცია, გადაჭარბებული აგენტობა და დაკარგული ინფორმაცია. guardrails, ხელოვნური ინტელექტის ფაილებში არსებული საიდუმლოებები და დაუცველი ან დაუდევრად დაცული ხელოვნური ინტელექტის დამოკიდებულებები. დასკვნები შეესაბამება OWASP-ის ტოპ 10-ს LLM აპლიკაციებისთვის და მიუთითებს ზუსტ ფაილსა და ხაზზე, ხოლო პრიორიტეტიზაციის ძაბრი ათასობით დასკვნას ამცირებს იმ დასკვნებზე, რომლებიც გამოიყენება, ხელმისაწვდომია, ექსპლუატაციაშია, პრივილეგირებულია და ბიზნესისთვის კრიტიკულად მნიშვნელოვანია.
DevAI რედაქტორში მეორე ნახევარს მოიცავს: ის იცავს კოდს ისე, როგორც ის დაწერილია, ვრცელდება როგორც ხელოვნური ინტელექტის მიერ გენერირებულ, ასევე ადამიანის მიერ დაწერილ კოდზე და აფიქსირებს იმას, რასაც სხვა აგენტები აპირებენ გააკეთონ, სანამ ისინი ამას გააკეთებენ. იგივე ინტელექტი ვრცელდება თქვენს მიერ უკვე გაშვებული სკანერებიდან მიღებულ მონაცემებზეც, ამიტომ ეს ყველაფერი არ საჭიროებს არსებულის შეცვლას.
კითხვა-პასუხი
- რა არის აგენტური კოდირების ყველაზე დიდი რისკი? გადაჭარბებული აგენტობა. ფართო ხელსაწყოების ზედაპირის მქონე აგენტი ნებისმიერ წარმატებულ ინექციას რეალურ მოქმედებად აქცევს და გუნდების უმეტესობა ხელსაწყოებს გაცილებით უფრო თავისუფლად აკვირდება, ვიდრე ადამიანებს.
- უსაფრთხოა თუ არა აგენტური პროგრამირება რეგულირებადი გარემოსთვის? დიახ, ინვენტარით, შეზღუდული ნებართვებით, გადახედილი კონფიგურაციით და საბოლოო წერტილში აღსრულებით. აუდიტის დროს დასაცავი არ არის ის, თუ რომელი აგენტები მუშაობენ, რას აღწევენ ან რა კოდი დაწერეს.
- აგენტური კოდირება ნაკლებად უსაფრთხო კოდს ქმნის, ვიდრე ადამიანი? სტრიქონზე გადასვლის მაჩვენებელი ადამიანურ შეცდომას ჰგავს, მაგრამ მოცულობა - არა და მოცულობა არის ის, რაც უარყოფს მიმოხილვას. პრობლემა გამტარუნარიანობაშია და არა ნიჭში.
- საჭიროა თუ არა ხელოვნური ინტელექტის კოდირების ასისტენტების აკრძალვა? აკრძალვები გამოყენებას ფარულად გადააქვს, რაც უარესია. ჩრდილოვანი ხელოვნური ინტელექტის დაცვა დამტკიცებულ ხელოვნურ ინტელექტთან შედარებით უფრო რთულია, ხოლო აღმოჩენა არის კონტროლი, რომელიც რეალურად ცვლის სურათს.
- ვინ არის პასუხისმგებელი, როდესაც აგენტი დაუცველობას აგზავნის? ზუსტად ისე, როგორც ადრე, ის ადამიანი, ვინც ის გააერთიანა. ეს არის არასასიამოვნო ნაწილი და სწორედ ამიტომ არის მნიშვნელოვანი ავტორობის მონაცემები: რეცენზენტს, რომელიც ადასტურებს მანქანით ავტორიზებული ცვლილების ხელმოწერას მანქანური მოცულობისთვის, დასკვნა სჭირდება დამტკიცებამდე და არა მის შემდეგ.
- როგორ დავიწყოთ, თუ საერთოდ არ გვაქვს ხილვადობა? გაუშვით აღმოჩენის ფუნქცია თქვენს საცავებში, ჩამოთვალეთ მის მიერ ნაპოვნი MCP სერვერები და ასისტენტები და დაახარისხეთ აგენტები ხელსაწყოს ზედაპირის მიხედვით. ყველაზე სარისკო აგენტი, როგორც წესი, ის არ არის, ვისზეც ღელავდნენ.
აგენტები უკვე თქვენს საცავებში არიან
აგენტური კოდირება უკვე თქვენს საცავებშია, მიუხედავად იმისა, დაამტკიცა თუ არა ის ვინმემ. გუნდები, რომლებიც მას კარგად ამუშავებენ, არ არიან ისინი, ვისაც ყველაზე მკაცრი პოლიტიკა აქვს. სწორედ მათ შეუძლიათ ნებისმიერ დღეს უპასუხონ კითხვას, რომელი აგენტები მუშაობენ, რაზე შეუძლიათ წვდომა და რა შეიცვალა მათ მიერ წარმართულ ფაილებში.
ნახეთ, რასთან არიან დაკავშირებული თქვენი აგენტები ქსიგენი.







