რატომ უშლის nosuid ხელს VPN-ის დამხმარეს root-ად გახდომაში
დაშიფრული სახლის საქაღალდე და nosuid-ით მიმაგრება სხვადასხვა თვისებაა. დამხმარეს სჭირდება სანდო ინსტალაციის გზა და გაშვების კონტექსტი, რომელიც მის უფლებამოსილების ბიტს პატივს სცემს.
დისკის დაშიფვრა და nosuid-ით მიმაგრება ერთი და იმავე იდეის ვარიაციებად ჟღერს და მათ საერთოდ არაფერი აქვთ საერთო. ერთი იცავს მოსვენებულ მონაცემებს, მეორე კი წყვეტს, დაიცავს თუ არა ბირთვი უფლებამოსილების ბიტს იმ მომენტში, როცა პროგრამა იწყებს მუშაობას. დამხმარე, რომელიც მოსალოდნელ იდენტობას ვერ აღწევს, მეორეზე ჩივის. ვარაუდი, რომ პირველია დამნაშავე, ადამიანებს აგზავნის ისეთი კლიენტების ხელახლა დაყენებაზე, რომლებიც არასდროს გაფუჭებულა.
ორი დაუკავშირებელი თვისება
დისკის დაშიფვრა პასუხობს, ვის შეუძლია ბლოკების წაკითხვა, როცა მანქანა გამორთულია. მიმაგრების პარამეტრი პასუხობს, რას მოიმოქმედებს ბირთვი ფაილის რეჟიმის ბიტებთან, როცა ვინმე მას ასრულებს. პირველში არაფერი ზღუდავს მეორეს და სრულად დაშიფრულ ნოუთბუქს შეუძლია ფაილური სისტემის მიმაგრება ყველა შეზღუდვით.
მათი ერთ თვისებად წაკითხვა წარმოშობს თეორიას, რომ დაშიფრული სახლის საქაღალდე ხელს უშლის root-ის წვდომას. ეს თეორია ცოცხლობს იმიტომ, რომ ორი სიმპტომი ერთსა და იმავე მანქანაზე ჩნდება და არა იმიტომ, რომ მათ საერთო მიზეზი აქვთ.
რა თრგუნავს რეალურად გადასვლას
execve-ის ცნობარი აღწერს, როგორ ცვლის set-user-ID მქონე შესრულებადი ფაილი ახალი პროცესის ეფექტურ იდენტობას ფაილის მფლობელისად. იგივე გვერდი ჩამოთვლის იმ პირობებს, რომლებიც თრგუნავს ამ გადასვლას და მათ შესაბამისს ჯგუფის იდენტიფიკატორებისთვის: no_new_privs პარამეტრი, nosuid-ით მიმაგრებული ფაილური სისტემა და მიკვლეული პროცესი. ფაილის შესაძლებლობები იგნორირებულია იმავე პირობებში. ეს ოთხი წესი ფარავს ამ ტიპის თითქმის ყველა მოხსენებას.
ეს სია ხსნის, რატომ არის ls-ის მიერ დაბეჭდილი რეჟიმი არასდროს მთელი ავტორიზაციის ისტორია. ის არ გეუბნებათ, რომელმა პირობამ გამოიწვია კონკრეტული შეცდომის შეტყობინება, და აპლიკაციამ შეიძლება იმავე სიტყვებით შეატყობინოს დაუკავშირებელი სერტიფიკატის ოპერაციის შესახებ. დაასკვნამდე ჩაწერეთ ზუსტი პროგრამა, გამშვები და შეცდომების მიმდევრობა.
დაადგინეთ მხარდაჭერილი პაკეტის მიერ დაყენებული შესრულებადი ფაილი, მისი მფლობელი, მისი ნამდვილი გზა და მისი შემცველი ფაილური სისტემის პოლიტიკა. ჩამოტვირთვების საქაღალდეში მდებარე ასლი არ არის დაყენებული დამხმარე, რაც არ უნდა თქვას მისმა რეჟიმმა.
რა არ უნდა გააკეთოთ
შეუმოწმებელ ბინარზე set-user-ID ბიტების დაყენება და მისი აქეთ-იქით გადაადგილება, სანამ შეზღუდვა გაქრება, შეკეთება არ არის. ეს ცვლის პოლიტიკას, რომელიც არ გესმოდათ, უფლებამოსილებით, რომლის აუდიტიც არ შეგიძლიათ, და იგივე ტექნიკა დამხმარეზე გამოყენებული ცნობილი ესკალაციის გზაა. nosuid-ის მოშორება მიმაგრებიდან უარესია, რადგან ის გავლენას ახდენს ამ ფაილურ სისტემაზე არსებულ ყველა პროგრამაზე და არა მხოლოდ ერთზე.
მხარდაჭერილი გზა არის კლიენტის დოკუმენტირებული დამხმარის ან სერვისის ინსტალაცია, რომელსაც ადმინისტრატორი ასრულებს და ბინარს ათავსებს იქ, სადაც პოლიტიკა ელის. ასე რჩება ერთი უფლებამოსილების მექანიზმი ორის ნაცვლად.
დაადასტურეთ რეალური გაშვების კონტექსტი
ავტორიზებული შესწორების შემდეგ გაუშვით დამხმარე ისე, როგორც პროდუქტი უშვებს და არა root-ის გარსიდან. წარმატება root-ად არაფერს ამტკიცებს იმ გზაზე, რომელსაც ჩვეულებრივი მომხმარებელი გადის, და ამ ორ კონტექსტს შორის სხვაობა ზუსტად ის არის, რაზეც იყო ეს წარუმატებლობა.
შემდეგ დაადასტურეთ ის ქსელური ოპერაცია, რომლისთვისაც დამხმარე არსებობს. დამხმარე, რომელიც იწყება, მაგრამ ინტერფეისს ვერ აწყობს, პრობლემა ერთი ეტაპით წინ გადასწია და არ გადაჭრა.
findmnt -no TARGET,OPTIONS /home
getcap /usr/libexec/openvpn-helper 2>/dev/null; ls -l /usr/libexec/openvpn-helper
ჩაწერეთ მიმაგრების პარამეტრები და დამხმარის საკუთრება ერთსა და იმავე ჩანაწერში. წინააღმდეგ შემთხვევაში შემდეგი ადამიანი, ვინც ამას დაამუშავებს, დაშიფვრის თეორიას თავიდან გაიმეორებს.