ავტორი : Keun Soo Yim Author: კუნძულები Table Of Links მაგიდა Links Abstract I. INTRODUCTION I. ინტეგრირებული II. BACKGROUND II. უკანასკნელი III. DESIGN III. დიზაინი კონტაქტი დიზაინი მიზნები Framework გაფართოება IV. MODELING IV. მოდელი კლასიკური ფუნქციები V. DATA COLLECTION V. მონაცემთა კოლექცია VI. CHARACTERIZATION VI. სპეციფიკაცია გაზაფხულების გაზაფხულების განთავსება კონფიდენციალურობის ანალიზი, რათა შეამოწმოთ ცვლილებები Vulnerability-inducing ცვლილებების ანალიზი VII. RESULT VII. შედეგები N-FOLD ვალდებულება Online Deployment Mode- ის გამოყენებით VIII. DISCUSSION VIII. კონტაქტი კონფიგურაცია მრავალფეროვანი პროექტებს Android უსაფრთხოების სამუშაოები შეზღუდვა validity Alternative მიმოხილვა IX. RELATED WORK IX. დაკავშირებული სამუშაოები CONCLUSION AND REFERENCES კონტაქტი და რეიტინგები ABSTRACT Abstract ამ პრაქტიკაში აჩვენებს Framework, რომელიც სილამაზად აწარმოებს უსაფრთხოების მიმოხილვა ხელმისაწვდომი წყარო კოდი ცვლილებები. ფუნქციონირება როგორც მიმოხილვა ბოტში კოდი მიმოხილვა მომსახურება, Framework შეიძლება ავტომატურად მოითხოვოს დამატებითი უსაფრთხოების მიმოხილვა წინასწარ მიმოხილვა დროში, სანამ კოდი ცვლილებები გამოგზავნილია წყარო კოდი შენახვის. იმიტომ, რომ გაკეთება ასეთი უსაფრთხო კოდი მიმოხილვა იზრდება ღირებულება, Framework იყენებს classifier სასწავლო იპოვოს კოდი ცვლილებები მაღალი სიზუსტით. Online classifier იყენებს სხვადასხვა სახის ინტენსიური ფუნქციებს, რათა ანალიზიოთ რეიტინგი მოდელები, შეამოწმოთ პროგრამული უზრუნველყოფის ინჟინერების პროცესს და შეინახოთ კონკრეტული ტექსტური მოდელები გარკვეული კოდი ცვლილებებში. classifier და მისი ფუნქციები მინახავს და ოპტიმიზირებულია გამოყენებით მონაცემები გამოქვეყნდა კოდი ცვლილებები და გამოქვეყნდა vulnerabilities Android Open Source Project (AOSP). რეიტინგი შედეგები აჩვენებს, რომ ჩვენი Vulnerability Prevention (VP) Framework იპოვებს დაახლოებით 80% vulnerability-inducing კოდი ცვლილებები მონაცემთა კომპლექტი ერთად სიზუსტით დაახლოებით 98% და false positive სიზუსტით დაახლო ჩვენ განიხილებთ VP Framework- ის გაფართოების ეფექტებს multi-project settings- ში და Android- ის უსაფრთხოების კვლევის მომავალში. ამ სტატიაში განიხილება და შეამოწმოთ ჩვენი მიმოხილვა კოდი ცვლილება-granularity vulnerability პროგნოზიზე, რომელიც უზრუნველყოფს პროგრამული უზრუნველყოფის უსაფრთხოების თავმჯდომარე ტექნოლოგია, სანამ თავმჯდომარე კოდი ცვლილებების აღწერილი. I. INTRODUCTION I. ინტეგრირებული უფასო და Open Source პროგრამული უზრუნველყოფის (FOSS) მიწოდების ხაზები Internet-of-Things მოწყობილობების (მაგ., სმარტფონები და ტელევიზები) შესთავაზოს მოკლე, ეკონომიკური მიზნით უსაფრთხოების თავმჯდომარეები (მაგ., მიწოდების ხაზის თავმჯდომარე [20][21][28]). ეს არის მაგალითად, რადგან ისინი შეუძლიათ გამოქვეყნოს ჩვეულებრივ უარყოფითი კოდი ცვლილებები, რომელიც შეიცავს შეუზღუდავი ადგილობები, გარეშე გამოქვეყნოს მათი Identities და მოტივები. ფართოდ გამოიყენება კონკრეტული open source პროექტები (მაგ., OS kernels, ბიბლიოთეკები, ბრაუზერები, ან მედია მოთამაშეები) შეიძლება გაუმჯობესოს ეფექტი, რადგან ამ პროექტები ჩვეულებრივ მხარს უჭერს ფართო სპექტრი მომხმარებლის პროდუქტების. სწრაფი პროგრამული განახლება ციკლი ამ პროდუქტების შეიძლება სწრაფად მიიღოს სიზუსტებს უახლესი პაკეტები მათი upstream FOSS პროექტები, თუ მკაცრი უსაფრთხოების მიმოხილვა და ტესტირება არ განახლება, სანამ თითოეული პროგრამული უზრუნველყოფის განახლება ან გამოქვეყნება. შედეგად, ეს სიზუსტური კოდი ცვლილებები შეიძლება გაგრძელდეს და ასე რომ არ შეესაბამება, დაახლო საერთო უსაფრთხოების ტესტირების ღირებულება შეიძლება გაუმჯობესდეს, რათა დააინსტვირთოთ ასეთი შეუზღუდავი კოდი ცვლილებები მომენტში, სანამ ამ ცვლილებები გამოგზავნილია Upstream, Open Source პროექტების შენახულებში. სხვა შემთხვევაში, უსაფრთხოების ტესტირების ტესტირების ბრუნვა შეუზღუდავია ყველა downstream პროგრამული პროექტებში, რომლებიც დამოკიდებულია ნებისმიერ Upstream პროექტებს. ამ downstream პროექტებს არ შეუძლიათ დააყენოთ პირველი downstream პროექტებს, რათა იპოვოს და გადაიხადოს შეერთებული, upstream vulnerabilities, რადგან ასეთი გადაიხადების დრო და მათი შემდეგი upstreaming არ არის შეზღუდული (გალითად, ზოგიერთი მიზეზი შიდა პოლიტიკა [22]). ასე რომ, სასურველია, რომ თავიდან ავიცილოთ vulnerable კოდი გადაცემები upstream პროექტებში. ეს არის განსაკუთრებით ფაქტი, რომ FOSS პროექტები მიიღებენ მაღალი რაოდენობით კოდი ცვლილებები ან მოითხოვს სპეციალიზებული უსაფრთხოების ექსპერიმენტი რეპუტაცია (გ.შ., სპეციფიკური დონეზე). Framework, რომელიც ავტომატიზებს კოდი ცვლილებების vulnerability assessment გამოყენებით მანქანა სასწავლო (ML) classifier. Vulnerability Prevention (VP) კლასიკური მოდელი შეფასებს შესაძლებლობებს, რომ ზოგიერთი კოდი ცვლილება შეიცავს ან იწვევს მინიმუმ ერთი უსაფრთხოების შეზღუდვა. კოდი ცვლილებები, რომლებიც უმაღლესი არიან, ვიდრე ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომის ზომ (1) პატივის მოცულობა შედგება, (2) კოდი მიმოხილვა ნიმუშები, (3) პროგრამული უზრუნველყოფის განვითარების lifecycle ფაზა თითოეული წყარო კოდი ფაილი, და (4) კოდი ცვლილებების ბუნება, როგორც განკუთვნილია დამუშავებული წყარო კოდი ხაზების ანალიზიით. საერთოდ, ამ კვლევად შეამოწმოთ 6 ტიპის კლასიკერები, გამოყენებით მეტი 30 ტიპის ფუნქციონალური მონაცემები ML მოდელის სიზუსტით. ტრენინგი და ტესტი მონაცემების შექმნა, ჩვენ გამოიყენოთ უსაფრთხოების bugs აღმოაჩინეს და შეცვალოს Android Open Source პროექტი (AOSP)1 . ეს სპეციალურად მიზნით AOSP მედია პროექტი2 (მაგ. multimedya მონაცემების დამუშავება), რომელიც ფართოდ fuzz-tested და ასე გამოჩნდა ბევრი უსაფრთხოების შეცდომები. კომპლექტი სპეციალიზებული ინსტრუმენტები განკუთვნილია და განვითარებული, როგორც ნაწილი ეს შეამოწმოთ: (1) აირჩიეთ vulnerability-fixing ცვლილებები, რომელიც დაკავშირებულია თითოეული target security bug, და (2) backtrack vulnerability-inducing ცვლილებები, რომელიც დაკავშირებულია თითოეული აღწერილი vulnerability-fixing ცვლილებები. ყველა აღწერილი vulnerability-inducing ცვლილებები შემდეგ ავტომატურად შეამოწმოთ და შეამოწმოთ, სანამ დაკავშირებული vulnerability-inducing ცვლილებები დააკვეთი “1”, ხოლო ყველა სხვა კოდი ცვლილებები, რომლებიც მიწოდება target media პროექტის დააკვეთი “0” მონაცემთა კომპლექტი. ეს შეფასების გამოყენებით პირველი წლის მონაცემები აღინიშნება random forest როგორც ყველაზე ეფექტური კლასიკური მისი სიზუსტით. კლასიკური აღინიშნა ~60% vulnerabilityinducing კოდი ცვლილებები სიზუსტით ~85%. იგი ასევე აღინიშნა ~99% probabil-normal კოდი ცვლილებები სიზუსტით ~97% როდესაც გამოყენებით ყველა თვისებები სასწავლო და ტესტირება. N-fold VP Framework შემდეგ გამოიყენება როგორც ონლაინ მოდელი, რომელიც ყოველთვიურად განკუთვნილია წინასწარ თვის მონაცემების შესახებ. როდესაც იგი გამოიყენება დაახლოებით 6 წლის განმავლობაში vulnerability მონაცემებს3 , Framework აჩვენებს დაახლოებით 80% recall და დაახლოებით 98% სიზუსტით vulnerability-inducing ცვლილებები, ერთად 99.8% recall და 98.5% სიზუსტით probabil-normal ცვლილებები. ეს სიზუსტით შედეგს უპირატესობს შედეგებს N-fold validation დიდი ხარისხი, რადგან ონლაინ განხორციელების რეჟიმში შეიძლება უკეთესი გამოიყენოს ძირითადი დროული ადგილობები, სიჩქარეები, და მოდელები ფუნქციური მონაცემები. დაახლოებით 7,4% რეიტინგული და შეესაბამებული კოდი ცვლილებების კვალიფიკაციას შეესაბამება vulnerability-inducing. საშუალო, ზოგიერთი probabilistic-normal ცვლილებები, რომლებიც მოითხოვს დამატებითი ყურადღება მათი კოდი რეიტინგების დროს, დაახლოებით 7 თვეში. ეს მენეჯმენტური მოცულობა (თუ ნაკლებია, ვიდრე 2 კოდი ცვლილებები კვირაში) აღიარებს ღირებულება, იმიტომ, რომ მაღალი აღიარება (~80%) და სიზუსტით (~98%) იპოვებს vulnerability-inducing ცვლილებები. ძირითადი მიწოდება ამ კვლევის მოიცავს: We explore and confirm the possibility of code change-granularity vulnerability prediction that can be used to prevent vulnerabilities by flagging likelyvulnerable code changes at pre-submit time. We present the Vulnerability Prevention (VP) framework that automates online assessment of software vulnerabilities using a machine learning classifier. We devise novel feature types to improve the classifier accuracy and reduces the feature data set by evaluating the precision and recall metrics. We present the specialized tools to label code changes in AOSP, facilitating robust training and testing data collection. We demonstrate a high precision (~98%) and recall (~80%) of the VP framework in identifying vulnerability-inducing changes, showing the potential as a practical tool to reduce security risks. We discuss the implications of deploying the VP framework in multi-project settings. Our analysis data suggests two focus areas for future Android security research: optimizing the Android vulnerability fixing latency and more efforts to prevent vulnerabilities. The rest of this paper is organized as follows. Section II provides the background information. Section III analyzes the design requirements and presents the VP framework design. Section IV details the design of the ML model, including the classifier and features for classifying likelyvulnerable code changes. Section V describes the tools developed to collect vulnerability datasets for model training and testing. Section VI describes the data collection process using the tools, and characterizes the vulnerability issues, vulnerability-fixing changes, and vulnerability-inducing changes in an AOSP sub-project. Section VII presents the evaluation of the VP framework using an N-fold validation. Section VIIII extends the framework for real-time, online classification. Section IX discusses the implications and threats to validity. Section IX reviews the related works before concluding this paper in Section X. II. BACKGROUND II. უკანასკნელი ამ ნაწილში აღწერილი კოდი მიმოხილვა და გადაცემის პროცესი open source პროგრამული პროექტი, გამოყენებით AOSP (Android Open Source პროექტი) როგორც შემთხვევაში კვლევა. AOSP აირჩიეთ, იმიტომ, რომ მისი როლი, როგორც upstream პროგრამული პროექტი მნიშვნელოვანი მოცულობა, გაძლევთ მეტი 3 მილიარდი, აქტიური Enduser პროდუქტები. კოდი ცვლილება (ჩვეულებრივ, ცვლილება) შედგება კოდი ცვლილება, რომელიც შეიცავს ზომის კოდი ხაზები, რომლებიც ზომის კოდი ფაილი შეიცავს ზომის კოდი შენახვაში (გ.შ., git). ტიპიური პროგრამული ინჟინერი კოდი ცვლილება გადაცემს კოდი ცვლილება კოდი მიმოხილვა მომსახურება (გ.შ., Gerrit4 ) მოთხოვნო კოდი ცვლილება წინასწარ გადაცემისთვის. კოდი ცვლილება გამოცემა კოდი ცვლილება, რომელიც AOSP- ში დაკავშირებული ელ-ფოსტის მისამართი აქვს. ცვლილება შეიძლება ასევე შეიცავდეს ერთი ან რამდენიმე კოდი მიმოხილვა. ორივე ავტორი და მიმოხილვა აქვს კონკრეტული საშუალებები თითოეული პროექტში (გ.შ., Code ცვლილებები . Code ცვლილებები კოდი მიმოხილვა პროცესის დროს კოდი ცვლილება შეიძლება იყოს მრავალჯერადი რედაქტირება, რაც მოიცავს ერთი ან მრავალჯერადი პაკეტები. თითოეული პაკეტები, რომელიც ჩამოტვირთულია კოდი მიმოხილვა მომსახურება მოპოვებული ვერსია კოდი ცვლილება. საბოლოო, მიმოხილვა პაკეტები ცვლილება შეიძლება შემდეგ გადაცემა და შეესაბამება target source code repository. კოდი ცვლილებების ავტორი შეუძლია რედაქტირება და გადაცემა ცვლილება როგორც ახალი patch set შემდგომი მიმოხილვა ან აღიარების მიერ აღიარებული კოდი მიმოხილვა(s). ძირითადი მიმოხილვა უფლებები მოიცავს: +1 დონე, რათა აჩვენოს, რომ ცვლილება ხდის კარგი მიმოხილვა, +2 დონე, რათა აღიაროს კოდი ცვლილებები, -1 დონე, რათა აჩვენოს, რომ ცვლილება არ ხდის კარგი (გალითად, მცირე გამოცემა), და -2 დონე, რათა შეუწყოს კოდი ცვლილებების მიმოხილვა. კოდი მიმოხილვა კოდი მიმოხილვა პროექტები (გალითად, git repositories ან subdirectories in a git repository) შეიძლება შეიცავდეს საბაჟო საშუალებები და მიმოხილვა წესები. მაგალითად, საბაჟო მიმოხილვა წესის საშუალებას საშუალებას აძლევს ავტომატებს დააკმაყოფილოს მათი კოდი ცვლილებები მზად presubmit ტესტირება, რადგან ხშირად ავტომატები ჩამოტვირთვა არასამთავრობო ვერსია კოდი მიმოხილვა მომსახურება (გალითად, მიმოხილვა diffs5 და წინასწარ მიმოხილვა). ეს პრაქტიკა ხელმისაწვდომია archiv ქვეშ CC by 4.0 Deed (Attribution 4.0 International) ლიცენზია. ეს პრაქტიკა ხელმისაწვდომია archiv ქვეშ CC by 4.0 Deed (Attribution 4.0 International) ლიცენზია. არქივი