პროგრამული უზრუნველყოფის შემქმნელები მუდმივად ეძებენ გზებს, როგორ გაუშვან უცხო ან არასანდო კოდი ისე, რომ საფრთხე არ შეექმნას მთავარ აპლიკაციას. საიმონ უილისონმა, Datasette-ისა და სხვა ცნობილი პროექტების ავტორმა, ახალი გადაწყვეტა წარადგინა — micropython-wasm.

უილისონის თქმით, მიზანია კოდის გაშვება ისეთ გარემოში, სადაც მას არ ექნება წვდომა მომხმარებლის ფაილურ სისტემაზე, ქსელზე ან სხვა მგრძნობიარე რესურსებზე. არსებული პლაგინების სისტემები, რომლებიც Python-ის სრულ პრივილეგიებს იყენებენ, ხშირად მოწყვლადია, რაც უსაფრთხოების რისკებს ზრდის.

WebAssembly, როგორც უსაფრთხოების გარანტი

ვებ-ბრაუზერები წლების განმავლობაში წარმატებით უმკლავდებიან არასანდო კოდის გაშვებას. ვებ-ტექნოლოგიების ეს გამოცდილება WebAssembly-ის (WASM) საფუძველი გახდა, რომელიც თავიდანვე უსაფრთხოების მაღალი სტანდარტებით შეიქმნა. უილისონის აზრით, ეს ტექნოლოგია გაცილებით უფრო შესაფერისია სენდბოქსისთვის, ვიდრე JavaScript-ის ძრავების ჩაშენება.

MicroPython-ის არჩევანი კი განპირობებულია მისი სიმსუბუქითა და ეფექტურობით. ის ოპტიმიზებულია შეზღუდული რესურსების მქონე გარემოსთვის, რაც WASM-ის კონტექსტში იდეალურად ჯდება.

როგორ მუშაობს სისტემა?

პროექტის მთავარი სირთულე ინტერპრეტატორის მდგომარეობის შენარჩუნება იყო. ტრადიციულად, WASM-ში გაშვებული კოდი იწყება და სრულდება ერთჯერადი პროცესით. უილისონმა და მისმა ხელოვნური ინტელექტის ინსტრუმენტებმა შეიმუშავეს მეთოდი, რომელიც საშუალებას იძლევა, ცვლადები და ფუნქციები მეხსიერებაში დარჩეს, რაც აუცილებელია Datasette-ის მსგავსი აპლიკაციებისთვის.

  • უსაფრთხოება: კოდი შეზღუდულია კონკრეტული მეხსიერებითა და CPU-ს რესურსებით.
  • მართვადობა: ფაილურ სისტემასა და ქსელზე წვდომა მკაცრად კონტროლდება.
  • ინტეგრაცია: შესაძლებელია მასპინძელი აპლიკაციის ფუნქციების შერჩევითად გამოძახება.

მიუხედავად იმისა, რომ პროექტი ამჟამად ალფა-ვერსიაშია, ავტორი მას უკვე იყენებს თავის პლაგინებში. მან ჩაატარა ექსპერიმენტები, სადაც ხელოვნურ ინტელექტს სთხოვა სენდბოქსიდან „გაქცევა“, თუმცა სისტემამ წარმატებით გაუძლო შემოწმებას.

უილისონი იმედოვნებს, რომ მისი ეს წამოწყება წაახალისებს კომპანიებსა და უსაფრთხოების გუნდებს, მეტი ყურადღება მიაქციონ Python-ისა და WebAssembly-ის კომბინაციას, რაც მომავალში უფრო მასშტაბური და უსაფრთხო გადაწყვეტილებების შექმნას შეუწყობს ხელს.