The "9.9" Linux Vulnerability Revealed: It's The Printers

Linux & Whatnot
26 Sept 202424:19

Summary

TLDRA severe 9.9 out of 10 remote code execution vulnerability in the Common Unix Printing System (CUPS) was discovered, allowing attackers to execute arbitrary code on Linux machines without authentication by sending a UDP packet to port 631. The researcher, Simon Margaritelli, published details prematurely due to information leaks. The flaw primarily impacts network printing and is present in many Linux distributions by default, prompting immediate security measures such as disabling CUPS or blocking port 631. The disclosure process was contentious, and the issue's widespread nature and complexity could significantly affect Linux printing support.

Takeaways

  • 🐞 A critical vulnerability in the Common Unix Printing System (CUPS) allows remote code execution without authentication.
  • 🔥 The severity of the vulnerability is rated 9.9 out of 10, indicating an extremely high risk.
  • 🗣️ Researcher Simon Margaritelli discovered the flaw and initially planned to publish details on October 5th but released them earlier due to leaks.
  • 🌐 The flaw affects a wide range of systems, including Linux, Chrome OS, and even some Apple systems.
  • 🔍 The vulnerability is centered around the printing subsystem, specifically network printing features.
  • 🚀 Attackers can execute arbitrary code on remote machines by sending a UDP packet to port 631.
  • 🛠️ Remediation steps include disabling and removing the CUPS BrowseD service if not needed, updating the CUPS package, or blocking traffic to UDP Port 631.
  • 📈 Margaritelli found hundreds of thousands of devices vulnerable by scanning the entire public IPv4 range.
  • 📝 The response to the UDP packet can reveal detailed system information, including Linux distribution and kernel versions.
  • 💡 The exploit leverages the CUPS Filter 2 directive to potentially execute malicious code when a print job is sent to a crafted printer queue.

Q & A

  • What is the severity rating of the remote code execution vulnerability discussed in the script?

    -The severity rating of the remote code execution vulnerability is 9.9 out of 10, indicating it is extremely serious.

  • Who discovered the remote code execution vulnerability and what is their role?

    -The vulnerability was discovered by Simon Margaritelli, who is a researcher and has published all the details about it.

  • What is the Common Unix Printing System (CUPS) and why is it significant in this context?

    -CUPS is a modular printing system for Unix-like computer operating systems that allows a computer to act as a print server. It is significant because the vulnerability revolves around CUPS, specifically affecting network printing.

  • How can an attacker exploit the CUPS vulnerability?

    -An attacker can exploit the CUPS vulnerability by sending a UDP packet to the remote machine on Port 631, which can lead to the execution of arbitrary code without authentication.

  • What are the CVE numbers associated with the vulnerabilities discussed in the script?

    -The script mentions that Simon Margaritelli has published the CVE numbers for the vulnerabilities, but they are not yet made public. However, they can be searched for once they become public.

  • Which systems are affected by the CUPS vulnerability?

    -The vulnerability affects a wide range of systems including most Linux distributions, some BSDs, Chrome OS, and possibly even Apple systems with variations of CUPS.

  • What is the recommended remediation for systems that are vulnerable to the CUPS exploit?

    -The recommended remediation includes disabling and removing the cups-browsed service if not needed, updating the CUPS package, and blocking all traffic to UDP Port 631.

  • What is a PPD file in the context of the CUPS system?

    -A PPD file is a text file provided by a vendor that describes the printer capabilities to CUPS in a domain-specific language and instructs it on how to use the printer properly.

  • How does the attacker use the PPD file in the exploitation process?

    -The attacker can send malicious attributes that are saved into a PPD file on the target's machine, which can then be executed when a print job is sent to the fake printer.

  • What is the potential impact of this vulnerability on Linux systems?

    -The potential impact is significant as it allows for remote code execution as root, which could lead to unauthorized access and control over affected Linux systems.

  • What does the researcher suggest about the state of security in Linux systems in general?

    -The researcher suggests that Linux systems are an endless and hopeless mess of security holes waiting to be exploited, indicating a systemic issue with security in complex systems.

Outlines

00:00

🔒 Remote Code Execution Vulnerability in CUPS

A severe remote code execution vulnerability, rated 9.9 out of 10, was discovered in the Common Unix Printing System (CUPS), which affects Linux systems without authentication. The researcher, Simon Margaritelli, published the details ahead of schedule due to information leaks. The vulnerability allows attackers to execute arbitrary code on remote machines by sending a UDP packet to port 631. The core issue revolves around the printing subsystem, and four specific vulnerabilities were identified in cups-browsed, lib cups filters, libpppd, and cs-filters. Popular Linux distributions like Ubuntu and Fedora have cups-browsed enabled by default, potentially exposing many systems to this threat.

05:00

🌐 Public Internet Attack Limitations and Remediation

The script discusses the limitations of the public internet attack, stating that it only affects servers directly connected to the internet. However, the presenter argues that this is a significant issue given the vast number of devices that could be affected. The researcher, Simon Margaritelli, has been scanning the entire public internet for vulnerable devices and found hundreds of thousands of affected systems. Remediation steps include disabling the cups-browseD service if not needed, updating the CUPS package, or blocking traffic to UDP Port 631. Margaritelli also suggests removing any CUPS service binaries and libraries from Unix systems to prevent exploitation.

10:01

🖨️ Exploiting the CUPS Vulnerability

The script details how the CUPS vulnerability can be exploited, with the researcher finding that the cups-browseD process runs as root and listens on UDP Port 631. By sending a UDP packet, an attacker can add a fake printer to a system without user notification. The script explains the role of PPD files in describing printer capabilities and how an attacker could use the CUPS Filter directive to execute remote code by injecting malicious PPD directives into a temporary file, waiting for a print job to trigger the malicious code.

15:03

📢 Fallout and Response to the CUPS Vulnerability Disclosure

The script describes the fallout from the disclosure of the CUPS vulnerability, including the researcher's frustration with the responsible disclosure process. Simon Margaritelli found that his findings were not taken seriously initially and had to engage in extensive communication with developers. The script also mentions that the vulnerability was rated 9.9 by engineers at Red Hat, indicating its severity. The researcher's experience with the disclosure process is highlighted, emphasizing the challenges faced by security researchers when dealing with vulnerability coordination.

20:06

🛠️ Mitigating the CUPS Vulnerability and Future Implications

The script concludes with recommendations for mitigating the CUPS vulnerability, such as disabling cups-browseD, uninstalling it if not needed, and blocking Port 631. It also discusses the widespread nature of the vulnerability and the potential for future issues with printing support on Linux due to the need to secure systems. The complexity of the CUPS system and the potential need for a complete re-architecture to address the vulnerability are highlighted, suggesting that fixing the issue fully will be a significant challenge.

Mindmap

Keywords

💡Remote Code Execution

Remote Code Execution (RCE) refers to the ability of an attacker to execute malicious code on a remote system without having physical access to it. In the context of the video, this is a critical vulnerability because it allows an attacker to send a UDP packet and execute arbitrary code on a remote Linux machine, which is a severe security risk. The video discusses this in the context of a 9.9 out of 10 vulnerability found in the Common Unix Printing System (CUPS).

💡Vulnerability

A vulnerability is a weakness in a system that can be exploited by an attacker. The video discusses a specific vulnerability in the CUPS system that allows for remote code execution. The severity of this vulnerability is underscored by its high rating of 9.9 out of 10, indicating a significant threat to system security.

💡CUPS (Common Unix Printing System)

CUPS is an open-source printing system that allows computer users to print documents and images to a variety of printers. In the video, it is highlighted as the core system affected by the vulnerability, which impacts not just Linux but also Chrome OS and potentially Apple systems. The vulnerability revolves around the network printing feature of CUPS.

💡UDP Packet

A UDP packet refers to a data packet used in networking protocols, specifically the User Datagram Protocol. In the video, the exploit revolves around sending a UDP packet to the remote machine's port 631, which triggers the execution of code. This method of exploitation is central to the discussed vulnerability.

💡CVE (Common Vulnerabilities and Exposures)

CVE is a system for identifying and cataloging publicly disclosed computer vulnerabilities. The video mentions that the researcher, Simon Margaritelli, has published CVE numbers for the issues found in CUPS but they are not yet public. CVEs are crucial for tracking and addressing security vulnerabilities.

💡Simon Margaritelli

Simon Margaritelli is the researcher who discovered the CUPS vulnerability and published details about it. His actions are significant because he chose to release the information sooner than planned due to leaks, which is a common practice to ensure that the public is aware of the vulnerability to protect themselves.

💡Mitigation

Mitigation in cybersecurity refers to the steps taken to reduce or eliminate the exploitability of a vulnerability. The video discusses several mitigation strategies for the CUPS vulnerability, such as disabling the cupsBrowseD service, updating the CUPS package, and blocking traffic to UDP Port 631.

💡Zeroconf (Zero Configuration Networking)

Zeroconf is a networking technology that enables devices to join a network without manual configuration of IP addresses, etc. The video mentions that on a local network, an attacker can spoof Zeroconf to exploit the CUPS vulnerability, demonstrating the attack's simplicity and the potential for widespread impact.

💡PPD (PostScript Printer Description)

PPD is a file format used to describe the capabilities of a printer to a printer driver. In the video, it is mentioned that an attacker could use the CUPS vulnerability to create a fake printer and inject malicious PPD directives, leading to remote code execution. This illustrates the depth of the exploit's potential impact.

💡Exploit

An exploit is a piece of software, a chunk of data, or a sequence of commands that takes advantage of a bug or vulnerability in order to cause unintended behavior in a system. The video discusses how the CUPS vulnerability can be exploited to execute arbitrary code on remote machines, which is a severe security concern.

💡Red Hat

Red Hat is a multinational software company engaged in providing open-source software products to the enterprise community. The video mentions that engineers at Red Hat rated the CUPS vulnerability as 9.9, indicating the severity of the issue from a reputable source in the industry.

Highlights

A 9.9 out of 10 remote code execution vulnerability was discovered in the Common Unix Printing System (CUPS).

The vulnerability allows unauthorized code execution on remote machines by sending a UDP packet.

Simon Margaritelli, the researcher who found the vulnerability, published the details ahead of schedule due to information leaks.

The core issue revolves around the printing subsystem, affecting systems that use CUPS for network printing.

CUPS is used on various platforms including Linux, Chrome OS, and even some Apple systems.

The researcher found four specific vulnerabilities in CUPS components: cups-browsed, libcupps, libppp, and cs-filters.

CVE numbers for the vulnerabilities have been published but are not yet public.

Many popular Linux distributions ship with cups-browsed enabled by default, increasing the attack surface.

An attacker on the public internet can exploit the vulnerability by sending a UDP packet to port 631.

On a local network, an attacker can spoof Zeroconf to achieve the same result.

The researcher recommends disabling and removing the cups-browsed service if not needed.

Updating the CUPS package or blocking all traffic to UDP port 631 are suggested remediation steps.

The researcher discovered that the response from a UDP packet can reveal the system's kernel version and architecture.

The exploit allows an attacker to add a fake printer to a victim's machine without user interaction.

A PPD file, used to describe printer capabilities, can be manipulated to include malicious directives.

The researcher successfully demonstrated remote code execution by creating a malicious PPD directive.

The disclosure process was criticized as being broken, with the researcher facing condescension and personal attacks.

The vulnerability was rated 9.9 by engineers at Red Hat, indicating its severity.

The researcher suggests completely removing CUPS from Unix systems due to the extensive codebase and potential for exploitation.

The leak of vulnerability details may have originated from within the vulnerability coordination environment at Carnegie Mellon.

The widespread nature of the vulnerability may lead to significant changes in how printing is supported on Linux systems.

Transcripts

play00:00

the details of that 9.9 out of 10 remote

play00:04

code execution vulnerability that we

play00:06

found out about yesterday has been

play00:09

revealed much sooner than anticipated

play00:12

because there was a

play00:14

link out of Vince uh going to get to all

play00:18

of that in a minute but first let's talk

play00:19

about exactly what this vulnerability is

play00:23

high Lev yes it is a massive

play00:26

vulnerability and it does allow people

play00:29

to execute code on remote machines not

play00:32

just Linux without authentication by

play00:36

simply sending a sing a UDP packet by

play00:39

sending a UDP packet to the remote

play00:42

machine you can then execute code

play00:46

arbitrary code this is very very much a

play00:49

very bad thing I absolutely would rank

play00:52

this a 9.9 out of 10 this is not good at

play00:54

all uh the researcher that found this uh

play00:57

Simon margaritelli uh has published all

play01:00

of the details wasn't going to have this

play01:03

this information published until October

play01:05

I believe it is 5th but because it was

play01:08

leaking out there

play01:09

anyway it really it it was it was more

play01:12

reasonable to get it out there I I agree

play01:14

with with Simon margar tell's uh

play01:17

reasoning for why he published this this

play01:19

information now if it's already leaked

play01:21

out and potential Bad actors have access

play01:23

to this anyway why not get this

play01:25

information widespread so that people

play01:27

can at least mitigate against the

play01:29

possible problems now the core of the

play01:31

system here is entirely around the

play01:34

printing subsystem it's around cups the

play01:37

common Unix printing system baby that

play01:40

almost every Linux machine has um I'm

play01:44

going to read a couple of quotes here

play01:46

from from Simon's post this is over at

play01:48

evil socket.net which is his

play01:51

website um Hello friends this is the

play01:53

first of two possibly three if and when

play01:55

I have the time to finish these W this

play01:57

Windows research writeups we will start

play01:59

with the with targeting gnu Linux

play02:01

systems with a remote code execution

play02:04

exploit as someone who's directly

play02:06

involved in the cups project set and

play02:08

again cups is responsible for printing

play02:10

it's used on Linux systems it's used on

play02:13

Chrome uh Chrome OS uh even even Apple

play02:17

systems have variations on cups I don't

play02:19

know if their specific versions are

play02:21

impacted with this but they have them as

play02:23

well quote from a generic security point

play02:26

of view a whole Linux systems is as it

play02:29

is now is just an endless and hopeless

play02:31

mess of security holes waiting to be

play02:33

exploited we all know this

play02:35

extraordinarily complex and

play02:37

interconnected systems breed an almost

play02:39

endless number of of of possible uh

play02:43

access points for for any sort of

play02:45

exploit that's just that's just how it

play02:47

is with the increasingly complex systems

play02:50

um so the the specific vulnerabilities

play02:53

that are being listed here today there

play02:55

are four of them um uh issues in cups

play02:59

browse d lib cups filters lib pppd and

play03:03

cs- filters uh he's got the cve numbers

play03:07

here published for all of them however

play03:08

those cves are not yet made public but

play03:11

you can grab them copy them and and

play03:13

search for them and as soon as they get

play03:15

made public additional uh information

play03:17

will be available on them but again this

play03:20

is all around the printing system

play03:23

specifically as it relates to network

play03:26

printing right Network printing which

play03:28

means it impacts a lot of systems just

play03:31

to give you an example here both auntu

play03:34

and Fedora and many other extremely

play03:37

popular Linux distributions ship with

play03:41

cups browse D on and enabled by default

play03:45

so when we're talking about uh Linux

play03:48

desktop systems and honestly even most

play03:51

Linux server systems you're going to be

play03:54

wanting to check to see if you've got

play03:55

that on by default uh it's just it's a

play03:58

lot of systems so the entry points for

play04:01

this particular attack the first is that

play04:04

if you were on a the public internet

play04:06

just on the Internet or on a wide area

play04:09

network a remote attacker sends a UDP

play04:12

packet to Port

play04:13

631 no authentication whatsoever is

play04:17

required on that that's an entry point

play04:20

again a a UDP packet a UDP packet that

play04:26

is Holy Heavens more details on how that

play04:29

works or if you're on a local area

play04:32

network a local T attacker can spoof

play04:34

zero comp um um and achieve the same

play04:38

code path leading to a remoto code

play04:40

execution so it's incredibly simple uh

play04:43

to to accomplish this um uh quoting one

play04:47

of the first comments from the only guy

play04:49

from the guy who literally wrote the

play04:51

book about cups while trying to explain

play04:53

to me why this is not why this is not

play04:56

that bad this is crazy quote I am just

play05:00

pointing out that the public internet

play05:02

attack is limited to servers that are

play05:05

directly connected to the

play05:08

internet the picture that Simon margar

play05:11

Deli uh included here was brilliant

play05:14

because yeah again I'm going to repeat

play05:16

that this is this is this is a reason

play05:19

why this this attack is not that

play05:22

bad the the public internet attack is

play05:25

limited to servers that are directly

play05:27

connected to the internet

play05:31

that's like saying um the issue with the

play05:34

cars driving on the road is only limited

play05:36

to the cars driving on the road it's

play05:39

like okay um let's go ahead and Rewind

play05:42

and and reread that yourself um so he

play05:45

lists here uh some affected systems um

play05:48

so cups brows D are packaged for most

play05:50

Unix system he says so most genu Linux

play05:52

distribution yes that's true some bsds

play05:55

also true chromium and Chrome OS also

play05:58

true uh Solara

play06:00

yes uh he says possibly more and and the

play06:02

answer is yes to that uh this is going

play06:04

to impact a lot of system systems uh he

play06:06

goes on to say this thing is packaged

play06:08

for anything and in some cases it's

play06:10

enabled by default in others it's not go

play06:12

figure it is more often than not enabled

play06:16

by default it's not enabled by default

play06:18

in every system and there are ways to

play06:21

button down this which we'll get into as

play06:23

we go along but on assume assume that

play06:27

browse

play06:30

uh cups browse D is enabled by default

play06:32

on your system um so he checked this out

play06:36

I've been scanning this is what he said

play06:38

the entire public internet ipv4 ranges

play06:41

several times a day for week sending the

play06:43

UDP packet and logging whatever

play06:45

connected back and I've gotten back

play06:47

connections from hundreds of thousands

play06:49

of devices with peaks of 200 to 300

play06:52

concurrent devices this file he

play06:55

published a file contains a list of the

play06:57

unique Linux systems affected all the

play06:59

different uh uh specific Linux version

play07:02

numbers uh kernel numbers and whatnot

play07:04

note that everything that is not Linux

play07:08

has been filtered out uh and if you go

play07:11

check out the file on his website it

play07:12

literally is just a list of all Linux

play07:14

version kernel

play07:16

versions right it's just everything and

play07:18

the reason he knows that is because the

play07:21

response you get back by sending that

play07:23

UDP packet actually tells you what kind

play07:27

of what kind of system you're running so

play07:29

you just send this UDP packet and you

play07:31

get back the colel the colonel version

play07:33

that you're you're you're pinging

play07:35

basically it's crazy how much

play07:37

information you can get um so

play07:39

remediation so ways you can work around

play07:42

this uh first uh disable and remove cups

play07:45

browse D service if you don't need it

play07:47

and probably you don't it's only

play07:49

necessary if you're printing right and

play07:51

if you've got a a network attached

play07:53

printer update the cups package on your

play07:55

systems and in case your system can't be

play07:58

updated for some reason uh and for some

play08:00

reason you rely on the c s some reason

play08:03

you rely on the service block all

play08:05

traffic to UDP Port 631 and possibly all

play08:10

DNS SD traffic good luck if you use

play08:12

zeroc comp okay he also says his

play08:15

personal

play08:16

recommendation I've seen and attacked

play08:19

enough of this code base to remove any

play08:22

cup service binary and library from any

play08:24

of my systems and never again use a Unix

play08:27

system to print oh man I'm also removing

play08:31

every zero aahi bonjour listener you

play08:35

might consider doing the same all right

play08:38

I'm going to skip through I'm not going

play08:39

to greet his whole story here but I want

play08:41

to point out a couple of things that he

play08:44

found along the way so you understand

play08:47

exactly how much power this particular

play08:51

remote code execution exploit can have

play08:54

so he noticed this cups brows D was

play08:57

running he noticed that that process C

play09:00

was running as root and listening to you

play09:04

on UDP Port

play09:06

631 uh he says that uh after some

play09:09

Googling I found out that cups browse D

play09:10

is indeed part of the cups system and is

play09:13

responsible for discovering new printers

play09:15

and automatically adding them to the

play09:17

system right so that's what CBS CBS

play09:20

browse D does all right let's just jump

play09:23

jump ahead a little bit because he goes

play09:24

through the technical details if you

play09:25

want those technical details go grab it

play09:28

if all checks pass so if you you you uh

play09:31

you know you send in that udb packet and

play09:33

you start communication if all checks

play09:35

pass which they're probably going to two

play09:37

text fields parsed from the packet are

play09:39

passed to the found cups printer

play09:41

function right then it goes through a

play09:43

series of of various functions as it as

play09:46

it goes along and then we get to here um

play09:49

uh both of these issues uh so and he

play09:51

gets through a number of issues that he

play09:53

hits uh issues have been reported and

play09:55

thoroughly documented to the devs and

play09:57

the cert but nobody seems to give a damn

play10:00

I can tell you that there there are

play10:02

other more easily exploitable code paths

play10:05

going on not just the the functions he

play10:07

outlines not just in the discovery

play10:09

mechanism also reported and ignored to

play10:13

this day they have not been acknowledged

play10:15

rep patched happy

play10:16

hunting

play10:18

so um he the Simon margari uh

play10:23

margaritelli he definitely has some

play10:27

strong feelings about how this is has

play10:29

been handled right out of the bat um he

play10:32

feels like this hasn't been taken

play10:33

seriously enough and looking at things

play10:36

initially not seeing some of the sort of

play10:39

secret Communications that have happened

play10:41

and have not been opened up it does seem

play10:44

like yeah maybe this hasn't been taken

play10:46

as seriously as it should uh he

play10:47

continues quote so I tell myself there's

play10:50

no freaking way that if I send this

play10:52

packet to a public IP address running

play10:55

cups that computer will connect back to

play10:57

the server I specified no way and he you

play11:00

know holy beep not only it connected

play11:03

back immediately but it also reported

play11:05

the exact kernel version and

play11:06

architecture in the user agent header uh

play11:09

it also reports the requesting username

play11:12

on the target for some of the requests

play11:14

that you can send in again via plain old

play11:17

UDP baby um he says I went back to

play11:21

writing some code and by using the IP

play11:24

server python package I was now able to

play11:26

respond properly with attributes I

play11:29

controlled to the service request my

play11:32

fake printer was immediately added to

play11:34

the local printers with no notification

play11:35

whatsoever to the user then he posted a

play11:37

screenshot of him um post of creating a

play11:40

new printer uh called God God God God

play11:44

God in the with the location of In Your

play11:47

Butt um which is clearly a real

play11:51

printer and that's very very crazy right

play11:54

that you can do that without any

play11:57

authentication from the end user then

play11:59

user doesn't get to choose it you just

play12:01

send some packets at a machine

play12:03

unauthenticated and you can add printers

play12:05

to that machine and he goes on to say it

play12:08

looks like the service fetches these

play12:09

attributes uh when it it creates some

play12:11

sort of temporary file uh with the

play12:14

attributes he was pointing out uh that

play12:16

were that were created uh a PPD file on

play12:20

which these attributes are possibly

play12:21

saved so he's like okay so I can send

play12:23

some attributes for a printer it's it's

play12:25

added into a PPD file that's saved loow

play12:29

Al on the user's machine all right so

play12:32

what is exactly is a PPD file well this

play12:35

is commonly not known I used to work at

play12:37

hulet Packard like in the 90s I worked

play12:40

at huet Packard and and I I'm pretty

play12:42

intimately aware with this but he writes

play12:43

a pretty decent description of exactly

play12:45

what a PPD is a PPD file is a text file

play12:48

provided by a vendor that describes a

play12:51

domain specific in a domain specific

play12:52

language the printer capabilities to

play12:55

cups and instructs it on how to use it

play12:57

properly it's it's basically a here's

play12:59

this printer here's the details about it

play13:01

here's how you use it it's a real simple

play13:02

file that way

play13:04

right um I spent a few hours just

play13:07

reading the PPD specs and studying cup

play13:10

specific extensions in order to find

play13:11

something I could rely I could I could

play13:14

really try to perform an attack and then

play13:17

I found out about cups Filter 2

play13:19

directive okay here's where the remote

play13:22

code execution from all this comes in

play13:24

because up until now you're just sending

play13:26

UDP packets and being annoying because

play13:28

you're creating a printer that's fake on

play13:30

someone's machine that's annoying but

play13:32

that's not 9.9 severity right here's

play13:35

where it gets gnarly a filter is any

play13:38

executable contained in the user lib

play13:41

cups filter path um which will get

play13:45

executed when a print job is sent to the

play13:48

printer and I think several of you are

play13:50

going uhoh I I see where this is going

play13:53

uh now it uses something called

play13:55

fumatic um and quote they have to ow

play13:59

fumatic the command line program to

play14:02

accept pretty much anything including

play14:04

Pearl or many printers will stop working

play14:07

on Unix basically there's this this old

play14:10

chunk of code that's there to handle um

play14:13

called fumatic all of these different

play14:15

printing scenarios and different types

play14:17

of printer Hardware especially older

play14:19

printers newer ones not quite as often

play14:22

and you have to basically allow it to to

play14:25

execute darn near anything in order for

play14:27

it to happen so in theory be using that

play14:32

we should now be able to this was him

play14:34

theorizing about what he could do before

play14:36

he tested it Force the target machine to

play14:38

connect back to our malicious IP server

play14:42

return an IP attribute string that will

play14:45

inject controlled PPD directives to the

play14:49

temporary file basically send some udb

play14:52

packets make a connection send some

play14:55

attributes just some some custom created

play14:59

malicious attributes that will be

play15:00

created into a PPD text file on the on

play15:03

the target's machine and wait for a

play15:06

print job to be sent to that fake

play15:08

printer for the PPD directives and

play15:10

therefore run the command right kicks

play15:13

off the command and you can kick off

play15:15

that printer the same way so let's so

play15:17

let's let's see how this plays out uh

play15:19

and uh well it worked it worked he tried

play15:23

it it worked he provided the details

play15:25

here on how you can do it so if any

play15:27

viewer looking to do it wouldn't take

play15:29

too much work to create the the empty

play15:31

things that he didn't mention in here um

play15:35

uh he says uh uh one additional thing he

play15:38

included here and this is about how this

play15:40

is all played out since he revealed this

play15:44

to to uh uh the printing group right so

play15:48

are the printer developers while the

play15:50

research only took a couple of days this

play15:52

part talking with the developers of of

play15:56

the projects took 22 and this part was

play15:59

not fun I will only say that to my

play16:02

personal experience the responsible

play16:04

disclosure process is broken that a lot

play16:07

is expected and taken for granted from

play16:09

the security researchers by triers that

play16:11

believe like you have to prove to be

play16:15

worth listening to while in reality they

play16:17

barely care to process and understand

play16:19

what you are saying only to realize you

play16:21

were right all along 3 weeks later if at

play16:24

all 2 days for the research 249 lines of

play16:27

text for the fully working exploit 22

play16:30

days of arguments condescension several

play16:33

gaslighting attempts uh more or less

play16:36

subtle personal attacks dozens of emails

play16:38

and messages more than 100 pages of text

play16:41

in total hours and hours and hours and

play16:44

woo lots of swear words there he's

play16:45

feeling salty about it is what I'm

play16:48

saying um and the the 9.9

play16:51

rating uh he goes on to to show some

play16:54

screenshots how the 9.9 rating was

play16:56

actually given by engineers at Red Hat

play16:59

uh who uh who rated it as such and I'm

play17:02

going to be honest this is pretty I

play17:05

agree that this is this should have a

play17:07

very high rating I I don't care if you

play17:08

call it a 10 I don't care if you call it

play17:10

a nine a 9 point something whatever this

play17:12

is not like some middle of the road 5

play17:14

point something exploit uh you have the

play17:17

ability to remote code execute as root

play17:21

because that's what cups brows D run as

play17:25

it runs as root you have the ability to

play17:27

run as root AR code

play17:30

execution to any

play17:32

system mostly via just some simple UDP

play17:36

it's it's uh it's too trivial it's it's

play17:40

too trivial and it's too widespread now

play17:43

there's a lot of machines that don't

play17:44

currently have cups browse de enabled by

play17:47

default and that's probably good um if

play17:50

you haven't blocked uh let's go back up

play17:52

here a little ways about what you can do

play17:54

to block this if you have not blocked

play17:56

was it Port uh 623 3 632 I'm going to go

play18:00

look it up for you real quick um Port

play18:02

631 Port 631 block it uh block it now uh

play18:09

because it's uh yeah yeah yeah yeah this

play18:12

is too easy to exploit and now that this

play18:13

is out in the wild which um this uh

play18:17

Simone margaritelli he's not really the

play18:20

one that put it out in the wild it was

play18:21

leaked out there now here's where here's

play18:25

where things get a little weird this was

play18:27

leaked

play18:29

over on uh breach forums. St I'm not

play18:33

going to show it here but if you go log

play18:35

into there you can you can get into it

play18:38

and it looks like because of the

play18:40

information that was

play18:43

leaked it was specifically information

play18:46

that Simone margaritelli had given to

play18:50

Vince now what is Vince Vince is the

play18:52

vulnerability information and

play18:53

coordination environment um over at

play18:56

Carnegie melan at C and um that means

play19:01

and they're really the ones who handle

play19:04

all of this stuff right all right all of

play19:08

all of this all of the um hold on let me

play19:10

scroll down here so you can see here all

play19:12

the CV cves and whatnot you'll go find

play19:15

those over with with certain Vince and

play19:17

um there was a leak within Vince so

play19:21

someone at

play19:22

Vince if Simone margaritelli is to be be

play19:25

believed which so far he's proven

play19:29

he's followed through I mean he's

play19:31

claimed everything he claimed previously

play19:33

has proven to be true um then then Vince

play19:35

does have a leak the other possibility

play19:37

is that Simone marar telli is the leak

play19:40

those are the those are kind of the two

play19:41

obvious options or someone else was

play19:44

given

play19:46

this that we're not hearing about but

play19:48

either way there clearly was a a leak in

play19:52

all of this that is worth looking into

play19:55

um so once this was already leaked out

play19:58

there it's good that we now have the

play20:00

details around it and we know to disable

play20:02

cups you know get rid of of Cups d uh

play20:05

cups browse D disable it completely

play20:07

uninstall it from your system if you

play20:08

don't use printers uh block Port 6 uh

play20:11

631 um just all sorts of things that you

play20:15

can do to mediate against this potential

play20:18

attack however as as Simon margaritelli

play20:20

pointed out um this is pretty widespread

play20:24

I mean having cups brows D enabled by

play20:28

Def fault on an open port is incredibly

play20:32

common he found hundreds of thousands of

play20:34

examples and I have no reason to doubt

play20:35

that just simply knowing how these

play20:37

printers work and knowing how networking

play20:39

works and knowing these distributions as

play20:41

intimately as I do I can I can say yeah

play20:44

auntu Has It by default Fedora Has It by

play20:46

default so many distributions have Cubs

play20:50

browse on by default for convenience you

play20:52

want to make printers work well out of

play20:54

the box for end users otherwise they're

play20:56

going to start

play20:57

complaining so oh it's on by default I

play21:00

mean that's how you discover and add

play21:02

printers it's like oh there's a network

play21:04

printer on your thing here it's added

play21:05

for you so you can now print with it

play21:08

right so there you go um so is this a

play21:11

9.9 I would I would say so you're

play21:14

probably over the coming days going to

play21:16

hear a lot of argument about the the

play21:19

severity ratings of this one about um

play21:23

whether or not certain dros are

play21:25

vulnerable at all um how overblown it

play21:28

might have been or

play21:30

under discussed it might have been I

play21:32

think you're going to hear a lot of

play21:33

yelling from both sides on that but

play21:36

regardless this is a pretty major issue

play21:39

and uh it's going to be difficult to fix

play21:44

this issue fully uh and and the reasons

play21:47

for that are the the ability to do the

play21:51

code execution with inside of the cup

play21:54

system is a critical component of of

play21:58

using a hundreds and hundreds of models

play22:01

of printers and so in order to fix this

play22:05

fully that needs to be patched and

play22:08

that's going to break the the Linux

play22:11

compatibility with a lot of printers

play22:13

unless a new system is is put in place

play22:16

and new ways of working with those uh

play22:19

those driver those printers is is

play22:21

developed which is going to just be an

play22:23

absolute massive amount of work I mean

play22:26

considering this code has been around

play22:28

for decades now and is a giant spider

play22:32

web it is not uh an easy codebase to

play22:35

understand the individual uh printer

play22:38

drivers such as they are are a funky

play22:42

mismatch of executable files uh uh Pearl

play22:46

scripts all sorts of things in order to

play22:49

uh format files correctly when they're

play22:51

sent to the printer so fixing them for

play22:54

all of these printers is going to be a a

play22:56

mild Nightmare and I'm I'm sure

play22:59

that the cups and uh the open printing

play23:02

developers and whatnot have been

play23:04

hesitant to do that because it is a

play23:06

nightmare it's not a it's not a mild

play23:08

thing it's a complete re architecture in

play23:10

some ways of how a lot of these systems

play23:13

work um so going forward in the very

play23:17

near future my guess is we're going to

play23:19

see printing support on Linux hindered

play23:24

significantly in the name of securing

play23:26

our systems I mean that seems like the

play23:28

the reasonable way to go we can't leave

play23:31

all these vulnerabilities in place and

play23:33

and we can't simply expect that everyone

play23:37

on a device is going to be behind a

play23:40

firewall blocking Port 631 I

play23:44

I there there it's a good temporary

play23:47

measure but uh but really this needs to

play23:49

be tackled with inside cups so there you

play23:52

go there you have it uh there's all the

play23:53

details again you can read all the

play23:55

details posted over at evil socket which

play23:59

is a great domain. net uh so thank you

play24:02

to Simon margaritelli for posting all of

play24:04

that uh and uh letting us

play24:07

know what to do to lock our systems down

play24:10

and with that ladies and gentlemen boys

play24:12

and girls nerds and nerds across the

play24:14

inner tubes I do declare and broadcast

Rate This

5.0 / 5 (0 votes)

Ähnliche Tags
CybersecurityLinux VulnerabilityRemote Code ExecutionCUPS BugNetwork PrintingSecurity AlertExploit PreventionZero-Day LeakSystem UpdateSecurity Research
Benötigen Sie eine Zusammenfassung auf Englisch?