Назад
Захоплення акаунтів SourceHut через build log-и: XSS в ansi2html (CVE-2026-92973)
SiTech AI Team2 წთ. საკითხავი

Захоплення акаунтів SourceHut через build log-и: XSS в ansi2html (CVE-2026-92973)

Дослідник безпеки Arusekk описав XSS-уразливість в ansi2html — бібліотеці, якою SourceHut перетворює вивід ANSI з build log-ів на HTML. Через неї будь-хто міг виконати JavaScript у чужій сесії та захопити акаунт.

Дослідник у сфері безпеки Arusekk опублікував у вересні 2026 року розбір уразливості в SourceHut (sr.ht), платформі, що розміщує git-репозиторії, поштові списки та CI. Уразливість отримала ідентифікатор CVE-2026-92973. Вона стосувалася ansi2html — бібліотеки для Python, яка перетворює escape-послідовності ANSI з виводу термінала на HTML. Саме нею SourceHut малює build log-и у своєму сервісі builds.sr.ht.

Той, хто міг записати текст у build log, домігся виконання довільного JavaScript у браузері кожного, хто відкриє сторінку журналу. Сторінка містить CSRF-токен і має права сесії, тож атакувальник діяв від імені жертви: надсилав build job-и й діставав доступ до deploy-ключів, зокрема тих, що SourceHut зберігає для власної інфраструктури на флагманському інстансі.

Як працювало захоплення акаунта

ansi2html не лише додає кольори: він перетворює автоматичні посилання та гіперпосилання OSC 8 на HTML-якорі. Адреса посилання потрапляла в атрибут href без належного екранування, тому спеціально сконструйована escape-послідовність виходила за межі атрибута й додавала нові — наприклад autofocus, tabindex та onfocus. Таке посилання запускає код одразу після завантаження сторінки, без кліку; працювала й адреса javascript:.

Акаунт для ін'єкції не був потрібен: достатньо було надіслати патч до публічного поштового списку з увімкненим CI або контролювати будь-який зовнішній ресурс, чий вивід потрапляє в журнал. Результат — збережена XSS-уразливість на популярній сторінці, до того ж автоматизована: жертва одразу стає джерелом наступних атак.

Виправлення й хронологія

Про проблему дослідник повідомив у безпековий поштовий список SourceHut 1 серпня 2026 року разом із попереднім патчем. 4 серпня Drew DeVault підтвердив уразливість і виправив builds.sr.ht так, що вивід ansi2html тепер санується. У проєкті pycontribs/ansi2html фінальне виправлення вийшло 2 вересня 2026 року у версії 1.9.4. Уразливі версії — 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 залишався вразливим майже рівно чотири з половиною роки.

Що це означає для інших платформ

Історія нагадує про ризик рендерингу недовіреного виводу збірок як HTML. Дослідник радить три рівні захисту: посилити Content-Security-Policy і прибрати 'unsafe-inline'; додатково санувати вивід конвертера, що SourceHut зробив, але, за його словами, надто агресивно, бо кольори зникли; і переписати парсер як автомат зі станами замість роботи з рядками.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.