c# regex - regex c#-სთვის - regex c#

C# Regex DoS: როდესაც ნიმუშები შეტევის ვექტორებად იქცევა

სარჩევი

აუცილებლად წასაკითხი პოსტები

საინტერესო უახლესი პოსტები

როდესაც რეგულარული გამოსახულებები ეწინააღმდეგება შესრულებას  

C# რეგულარული კოდის ერთ ხაზსაც კი შეუძლია საწარმოო API-ის დაჩოქება. ცუდად დაწერილი შაბლონები იწვევს კატასტროფულ უკუქცევას, პროცესორის ციკლების დაწვას და ნაკადების დაბლოკვას. ეს კლასიკურია. რეგულარული გამოთქმის მომსახურების უარყოფა (ReDoS), თქვენს კოდში დამალული დახვეწილი, მაგრამ საშიში შეტევის ვექტორი.

⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.

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

უსაფრთხო ვერსია:

საგანმანათლებლო შენიშვნა: ყოველთვის გამოიყენეთ ტაიმ-აუტები (RegexOptions + დროის ინტერვალი) და ჩადგმული ჯგუფების გამარტივება. რეგულარულ C#-ში შესრულების ვალიდაცია უსაფრთხოების მოთხოვნაა და არა ოპტიმიზაცია.

რატომ ხდება C# Regex ნიმუშები დაუცველი

ორაზროვანი კვანტიფიკატორები (.*, .+, ან (ა+)+) და შეუზღუდავი გამეორება რეგულარულ ტექსტს საერთო DoS სამიზნედ აქცევს.
როდესაც ეს ხდება მომხმარებლის მიერ მართულ კონტექსტში, როგორიცაა შეყვანის ვალიდაცია ან ჟურნალის დამუშავება, ერთ შექმნილ დატვირთვას შეუძლია CPU-ს მონოპოლიზაცია.

⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.

უსაფრთხო ვერსია:

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

რეალური გავლენა API-ებსა და CI/CD Workflows

C#-ისთვის სახიფათო რეგულარული სქემები არ შემოიფარგლება მხოლოდ ვალიდაციის ფორმებით. დეველოპერები შაბლონებს რთავენ ჟურნალის ფილტრებში, ვებჰუკების შესაბამის სისტემებსა და ავტომატურ სკანირებაში. CI/CDერთი სახიფათო ნიმუში შეიძლება მთელი პროცესის შეფერხებას იწვევდეს pipeline.

⚠️არასაიმედო მაგალითი, მხოლოდ საგანმანათლებლო მიზნებისთვის. არ გამოიყენოთ წარმოებაში.

არასოდეს დაამუშაოთ მომხმარებლის მიერ მოწოდებული რეგულარული სიმბოლოები ვალიდაციის ან დროის ამოწურვის კონტროლის გარეშე.

უსაფრთხო ვერსია:

საგანმანათლებლო შენიშვნა: შესრულებამდე გარე რეგულარული შეყვანის დადასტურება. დაამატეთ სიგრძის ექსპლიციტური შემოწმებები და დროის ამოწურვის აღსრულება pipelines.

უსაფრთხო პრაქტიკა C# Regex DoS-ის თავიდან ასაცილებლად

Regex C#-ში ReDoS-ის პრევენცია თქვენს შემუშავებაში უნდა იყოს გათვალისწინებული. DevSecOps-ის სამუშაო პროცესი. აი, როგორ გავხადოთ ის უსაფრთხო ნაგულისხმევად:

საუკეთესო პრაქტიკა

  1. ყოველთვის დააყენეთ ტაიმ-აუტები ყველა რეგულარული შეფასებისას.
  2. კატასტროფული სქემების თავიდან აცილება, არ არსებობს ჩადგმული კვანტიფიკატორები ან ორაზროვანი ჯგუფები.
  3. შეყვანის ზომის შეზღუდვა რეგულარულ რეჟიმში გადასვლამდე.
  4. სანდო შაბლონების წინასწარი კომპილაცია ერთად RegexOptions.Compiled.
  5. მომხმარებლის მიერ მოწოდებული გამოთქმების დეზინფექცია ან დაშვებული შაბლონების თეთრ სიაში შეყვანა.

მინი პრევენციული საკონტროლო სია, რომელიც მოიცავს მინი პრევენციულ სიას.

  • გადახედეთ თქვენს კოდის ბაზაში C# გამოყენების ყველა რეგულარულ ხაზს.
  • მიმართვა დროის ინტერვალი მუდმივად ტაიმ-აუტები.
  • API და CI შეყვანებზე შეყვანის სიგრძის შეზღუდვა.
  • გამოშვებამდე შეამოწმეთ რეგულარული ვერსიის მუშაობა.
  • სტატიკური რეგულარული მნიშვნელობის ავტომატიზაცია სკანირება CI/CD.

საგანმანათლებლო შენიშვნა: რეგულარული სქემების შაბლონები არასანდო კოდად მოეპყარით. ისინი ისეთივე ყურადღებით უნდა მოეკიდონ, როგორც SQL ან ბრძანებების შესრულება.

როგორ ავლენს Xygeni სარისკო C# Regex გამოყენებას

ქსიგენი Code Security სტატიკური ანალიზის დროს ავტომატურად აფიქსირებს არაუსაფრთხო რეგულარული C# შაბლონებს. ის ადგენს კატასტროფულ უკუქცევას, დროის ამოწურვის გამოტოვებას და სერვისების გაჭედვის სავარაუდო ნიმუშებს. In CI/CD, ქსიგენი მოქმედებს, როგორც ა DevSecOps კარიბჭე, რომელიც ბლოკავს C#-ისთვის არაუსაფრთხო რეგულარულ სქემს მის შერწყმამდე ან განლაგებამდე.

საგანმანათლებლო შენიშვნა: Xygeni-ს ინტეგრირება უზრუნველყოფს რეგულარული სიგნალების უსაფრთხო დამუშავებას სხვადასხვა კონსტრუქციებსა და გარემოში, რაც ხელს უშლის რეგრესიებს და DoS ზემოქმედებას განლაგებამდე.

თქვენი რეგექსი ძლიერია, დარწმუნდით, რომ ის იარაღით არ არის აღჭურვილი

ReDoS-ის დაუცველობები უდანაშაულო გარეგნობის C# რეგულარულ კოდს მომსახურების უარყოფის იარაღად აქცევს. C# შაბლონებისთვის არაუსაფრთხო რეგულარული კოდირება გავრცელებული შეცდომაა, სანამ ისინი არ გაყინავენ წარმოებას ან არ გაფუჭდებიან. CI/CD.

რეგულარული კომუნიკაციის უსაფრთხოება თქვენი კოდირების ჰიგიენის ნაწილად აქციეთ:

  • ყოველთვის გამოიყენეთ ტაიმ-აუტები.
  • მოერიდეთ ჩადგმულ კვანტიფიკატორებს.
  • შეზღუდეთ მომხმარებლის შეყვანა.
  • შემოწმების ავტომატიზაცია გამოყენებით Xygeni Code Security.

Regex ყოველთვის ძლიერი იქნება, მაგრამ ფრთხილად დიზაინის შემთხვევაში, თქვენი regex C # შაბლონები არ გახდება თქვენი შემდეგი ინციდენტის ანგარიში.

sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

უზრუნველყავით თქვენი პროგრამული უზრუნველყოფის შემუშავება და მიწოდება

Xygeni Product Suite-თან ერთად