უკან დაბრუნება
SourceHut-ის ანგარიშის ხელში ჩაგდება build log-ებიდან - XSS ansi2html-ში (CVE-2026-92973)
SiTech AI Team2 წთ. საკითხავი

SourceHut-ის ანგარიშის ხელში ჩაგდება build log-ებიდან - XSS ansi2html-ში (CVE-2026-92973)

მკვლევარმა Arusekk-მა SourceHut-ის build log-ების HTML-ად გადამყვან ბიბლიოთეკა ansi2html-ში XSS ხარვეზი აღმოაჩინა (CVE-2026-92973): ის ნებისმიერ მნახველს მისი ანგარიშით სარგებლობის საშუალებას აძლევდა. builds.sr.ht თითქმის 4,5 წელი დაუცველი რჩებოდა.

უსაფრთხოების მკვლევარმა Arusekk-მა, რომელიც ბლოგს blog.arusekk.pl-ზე აწარმოებს, სექტემბერში აღწერა ხარვეზი SourceHut-ის პლატფორმაზე (sr.ht). მას CVE-2026-92973 ნომერი მიენიჭა. საუბარია XSS ხარვეზზე Python-ის ბიბლიოთეკა ansi2html-ში, რომელიც ტერმინალის ANSI-კოდებს HTML-ად გარდაქმნის. სწორედ ამ ბიბლიოთეკით ხატავს SourceHut build log-ებს, ამიტომ ხარვეზი პირდაპირ CI-ის ჟურნალებს შეეხო.

თავდამსხმელს შეეძლო build log-ში ისეთი ტექსტის ჩაწერა, რომ ჟურნალის გახსნისას მსხვერპლის ბრაუზერში უცხო JavaScript სრულდებოდა. პრაქტიკაში ეს ანგარიშის ხელში ჩაგდებას ნიშნავდა: build log-ის გვერდზე მოთავსებულია CSRF ტოკენი, ხოლო სესიას წვდომა აქვს deploy გასაღებებზე, მათ შორის იმ გასაღებებზე, რომლებსაც SourceHut საკუთარი ინფრასტრუქტურისთვის ინახავს.

როგორ მუშაობდა შეტევა

ansi2html მხოლოდ ფერებს არ ანიჭებს ტექსტს: ის ავტომატურ ბმულებსა და OSC 8 ჰიპერბმულებს HTML-ის a ტეგებად გარდაქმნის. ბმულის მისამართი href ატრიბუტში დაცვის გარეშე ხვდებოდა, ამიტომ სპეციალურად აგებული escape მიმდევრობა ატრიბუტიდან გადიოდა და ახალ ატრიბუტებს ამატებდა, მაგალითად autofocus, tabindex და onfocus. ასე აგებული ბმული თავის კოდს გვერდის ჩატვირთვისთანავე აშვებს, დაჭერის გარეშე; javascript: მისამართიც მუშაობდა.

ლოგში ასეთი მიმდევრობის ჩასაწერად ანგარიში საჭირო არ იყო: საკმარისი იყო საჯარო საფოსტო სიაში პატჩის გაგზავნა, სადაც CI ჩართულია, ან ისეთი გარე რესურსის კონტროლი, რომლის გამოტანაც ჟურნალში ხვდება. შედეგია შენახული XSS ხშირად მონახულ გვერდზე,

გამოსწორება და ვადები

მკვლევარმა ხარვეზი SourceHut-ის უსაფრთხოების საფოსტო სიაში 2026 წლის 1 აგვისტოს შეატყობინა, წინასწარ მომზადებულ პატჩთან ერთად. 4 აგვისტოს Drew DeVault-მა ხარვეზი დაადასტურა და builds.sr.ht ისე შეასწორა, რომ ansi2html-ის გამოტანა ავტომატურად იწმინდება. pycontribs/ansi2html პროექტმა საბოლოო შესწორება 2 სექტემბერს 1.9.4 ვერსიით გამოუშვა. დაზარალებული ვერსიებია ansi2html 1.7.0-დან 1.9.3-მდე და builds.sr.ht 0.40.0-დან 0.105.0-მდე.

ექსპოზიციის ფანჯარა გრძელი აღმოჩნდა: ansi2html builds.sr.ht-ს 2019 წლის მარტში დაუკავშირდა, თავად ხარვეზი upstream-ში 2021 წლის სექტემბერში გაჩნდა, დაზარალებული ვერსია კი Alpine-ისთვის 2022 წლის თებერვალში შეფუთეს და ძირითად ინსტანსზეც გავრცელდა. builds.sr.ht თითქმის ზუსტად ოთხნახევარი წელი დაუცველი რჩებოდა.

რას ნიშნავს ეს პლატფორმებისთვის

ეს შემთხვევა არასანდო build log-ების HTML-ად გამოტანის რისკზე მიუთითებს. მკვლევარი დაცვის სამ დონეს გვთავაზობს: Content-Security-Policy-ის შემცირება და 'unsafe-inline'-ის მოშორება, გადამყვანის გამოტანის დამატებითი გასუფთავება (SourceHut-მა ეს დაამატა, თუმცა, მკვლევრის სიტყვებით, ზედმეტად აგრესიულად, რადგან ფერები გაქრა) და პარსერის გადაწერა მდგომარეობის მქონე ავტომატად, სტრიქონებით მანიპულაციის ნაცვლად.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.