
SourceHut-ի հաշիվների գրավում build log-երի միջոցով. XSS ansi2html-ում (CVE-2026-92973)
Անվտանգության հետազոտողը հրապարակել է XSS խոցելիություն ansi2html գրադարանում, որով SourceHut-ը build log-երի ANSI ելքը փոխարկում է HTML-ի։ Խոցելիությունը թույլ էր տալիս JavaScript աշխատեցնել այցելուի սեսիայում և գրավել հաշիվը։
Անվտանգության հետազոտող Arusekk-ը 2026 թվականի սեպտեմբերին հրապարակել է SourceHut (sr.ht) հարթակի խոցելիության վերլուծությունը։ Խոցելիությունը ստացել է CVE-2026-92973 նույնացուցիչը և վերաբերում է ansi2html գրադարանին՝ Python-ի գրադարան, որը տերմինալի ANSI escape հաջորդականությունները փոխարկում է HTML-ի։ SourceHut-ը հենց այդ գրադարանով է նկարում build log-երը builds.sr.ht CI ծառայությունում։
Ով կարողանում էր տեքստ մտցնել build log-ի մեջ, կարող էր կամայական JavaScript աշխատեցնել ամեն այցելուի դիտարկիչում, որը բացում էր այդ մատյանը։ Էջը պարունակում է CSRF token-ը և ունի սեսիայի լիազորությունները, ուստի հարձակվողը գործում էր զոհի անունից՝ ուղարկում էր build աշխատանքներ և հասնում deploy բանալիներին, ներառյալ այն բանալիներին, որ SourceHut-ը պահում է սեփական ենթակառուցվածքի համար։
Ինչպես էր աշխատում հաշվի գրավումը
ansi2html-ը ոչ միայն գույներ է ավելացնում. այն ավտոմատ հղումներն ու OSC 8 հիպերհղումները վերածում է HTML-ի։ Հղման հասցեն href ատրիբուտի մեջ ընկնում էր առանց պատշաճ escape-ի, ուստի հատուկ կառուցված հաջորդականությունը դուրս էր գալիս ատրիբուտից և ավելացնում նորերը՝ օրինակ autofocus, tabindex և onfocus։ Այդպիսի հղումը կոդը գործարկում է էջի բեռնման պահին՝ առանց սեղմելու, աշխատում էր նաև javascript: հասցեն։
Մատյանի մեջ հաջորդականություն մտցնելու համար հաշիվ պետք չէր. բավական էր patch ուղարկել հրապարակային փոստային ցուցակ, որտեղ CI-ն միացված է, կամ վերահսկել արտաքին ռեսուրս, որի ելքը տպվում է մատյանում։ Արդյունքը պահպանվող XSS է հաճախ այցելվող էջում, առավել ևս՝ ավտոմատացվող. զոհն անմիջապես դառնում է հաջորդ հարձակման աղբյուրը։
Ուղղումը և ժամանակագրությունը
Հետազոտողը խնդրի մասին տեղեկացրել է SourceHut-ի անվտանգության փոստային ցուցակին 2026 թվականի օգոստոսի 1-ին՝ նախնական patch-ի հետ միասին։ Օգոստոսի 4-ին Drew DeVault-ը հաստատել է խոցելիությունը և ուղղել builds.sr.ht-ը, որպեսզի ansi2html-ի ելքը մաքրվի ավտոմատ։ pycontribs/ansi2html նախագծում վերջնական ուղղումը հրապարակվել է 1.9.4 տարբերակով՝ 2026 թվականի սեպտեմբերի 2-ին։ Խոցելի տարբերակներն են ansi2html 1.7.0-ից 1.9.3 և builds.sr.ht 0.40.0-ից 0.105.0։
Բացահայտման պատուհանը երկար ստացվեց. ansi2html-ը builds.sr.ht-ին միացվել է 2019 թվականի մարտին, սխալը նախագծի կոդում ի հայտ է եկել 2021 թվականի սեպտեմբերին, իսկ խոցելի տարբերակը Alpine-ի համար փաթեթավորվել և հիմնական ինստանսում հայտնվել է 2022 թվականի փետրվարին։ builds.sr.ht-ը մնացել է անպաշտպան գրեթե ուղիղ չորսուկես տարի։
Ինչ է սա նշանակում այլ հարթակների համար
Պատմությունը հիշեցնում է անվստահելի build ելքը որպես HTML ներկայացնելու ռիսկի մասին։ Հետազոտողը առաջարկում է պաշտպանության երեք շերտ՝ խստացնել Content-Security-Policy-ն և հեռացնել 'unsafe-inline'-ը, լրացուցիչ մաքրել փոխարկիչի ելքը, ինչը SourceHut-ը ավելացրել է, սակայն, հետազոտողի խոսքով, չափազանց ագրեսիվ, քանի որ գույները անհետացել են, և parser-ը վերաշարադրել վիճակ ունեցող ավտոմատի տեսքով՝ տողերի հետ աշխատելու փոխարեն։
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։