Vulnerability Development mailing list archives
RE: ISS Advisory: Remote Compromise Vulnerability in Apache HTTP Server
From: Michael Wojcik <Michael.Wojcik () microfocus com>
Date: Wed, 19 Jun 2002 12:15:01 -0700
Well, a signal handler *is* a way of changing the instruction pointer, so it could in theory be used to vector into malicious code. Consider something like this: - You can inject arbitrary code onto the heap, perhaps in the guise of valid data; for example, your code pretends to be a large POSTed content-body. You know approximately where this code is likely to end up in the process' virtual address space. - You have a vulnerability which lets you execute an arbitrary sigaction call. (We haven't established that this is possible with this Apache vulnerability, of course - this is purely speculative.) - You have another vulnerability which lets you cause a signal to be raised. Obviously this is a common class of vulnerability for eg SIGSEGV. - So, you send your code, use vulnerability #1 to set the handler to point into it, use vulnerability #2 to raise the signal, then wait while your code is invoked as the handler. That seems pretty convoluted and unlikely to me, but I don't write exploits, and some of the ones we've seen in the past required some pretty impressive gymnastics to vector to the malicious code. I'm not sure this is much harder. Simpler scenarios include changing a signal handler to vector into existing code that does something undesirable (eg causes the server to reconfigure using an attacker-supplied file, deposited through some other means) or simply messing with the signal handlers for fatal signals so it can't clean up gracefully while exiting. Note that with sigaction (the preferred interface), the signal handler location isn't itself a parameter to the system call - it's in a structure pointed to by the second parameter. That makes it somewhat more difficult to usefully alter the sigaction call. Michael Wojcik Principal Software Systems Developer, Micro Focus Department of English, Miami University
-----Original Message----- From: Anibal Ambertin [mailto:aambertin () securetty com ar] Sent: Wednesday, June 19, 2002 8:56 AM To: KF Cc: vuln-dev () securityfocus com Subject: Re: ISS Advisory: Remote Compromise Vulnerability in Apache HTTP Server ----- Original Message ----- From: "KF" <dotslash () snosoft com> To: <vuln-dev () securityfocus com> Sent: Tuesday, June 18, 2002 4:18 AM Subject: Re: ISS Advisory: Remote Compromise Vulnerability in Apache HTTP ServerDuring some testing of the apache issues with chunkedencoding I notedthat on my Linux x86 based install of apache just before the child process exits some of the arguments that are passed to int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); and int sigemptyset(sigset_t *set); have had their argumentsoverwritten... inthe case of sigaction the signum was set to 10 or SIGUSR1and all otherarguments were overwritten with 0x41414141 I was wondering if this could cause any added risk to the x86 versions of apache...maybe somesignaling ninja would help?I don't think this could be usefull for an attacker, since the only thing you can do is to change the sigaction parameters, which doesn't imply any risk at all (unless you can write the members of the sigaction structure and make it go to another internal function -which should be part of the vulnerable program, in this case, apache-).The description of sigaction is really what caught my attention: The sigaction system call is used to change the actiontaken by aprocess on receipt of a specific signal.Yes. And that's all. So, as I see it, it won't add any risk to this bug. If I'm wrong I'm sure someone will give you (what? give us!) the light you're looking for :). After all, I'm not a "signaling ninja" ;). Cheers. Anibal Ambertin (Angel Dezkarriado/StrCpy)
Current thread:
- RE: ISS Advisory: Remote Compromise Vulnerability in Apache HTTP Server Michael Wojcik (Jun 19)