Sendmail 8.8.x/8.9.x bugware (fwd)

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Pon, 18 Sty 1999, 22:36:06 CET


Nie wszyscy z nas mają subskrybję bugtraq. Obecnie toczy się mała
dyskusyjka na temat tego DoS w sendmailu jaki wyciągnąłem ostatnio przy
dyskusji na temat SbO.
Poniżej dołączam zawartość orginalnego listu jaki poszedł prawie miesiąc
temu na bugtraq (prawie miesiąc widać był wstrzymywany przez moderatora
listy), a także ostatni głos Michała w tej sprawie. Na bugtraq nie był
dołaczany gotowy exploit do tych DoS i to różni ten list od tego co Michał
rozprowadzał innymi kanałami. W razie czego samego tą drugą brakującą
część moge przekazać priv.

---------
Bottoms up! Two bugs (and fixes) - Sendmail 8.8.x/8.9.x.

1. Redirection attack

Due to strange address parsing policy [briefly: if address ends with local
hostname, trim it and parse as any other (even if after this operation
address isn't 'local' anymore], specific message routing (eg. through
internal, protected or external networks) can be forced, giving an
occasion to perform anonymous scanning (or fakemailing). You could call it
'feature' instead of 'bug', but it seems to be Sendmail-specific ;>

Simple fix - in /etc/sendmail.cf, at the top of ruleset 98, insert
following line:

R$*@$*@$*       $#error $@ 5.7.1 $: "551 Sorry, no redirections."

2. 'Headers prescan' DoS

There are possible DoS attacks due to ineffective headers prescan
algorithm. Two or three medium-size (200 kb) mail messages may render
system unusable for quite long period of time (as headers are parsed at
least twice, on message collection and in queue). Exploit sold separately
:-)

Simple patch for Sendmail 8.8.x source tree:

--- collect.c.orig      Thu Dec 10 18:38:51 1998
+++ collect.c   Thu Dec 10 18:53:02 1998
@@ -32,6 +32,8 @@
  * SUCH DAMAGE.
  */

+#define MAXHDRZ 512
+
 #ifndef lint
 static char sccsid[] = "@(#)collect.c  8.72 (Berkeley) 10/6/97";
 #endif /* not lint */
@@ -87,6 +89,7 @@
        HDR **hdrp;
        register ENVELOPE *e;
 {
+       int hdrz=0;
        register FILE *volatile tf;
        volatile bool ignrdot = smtpmode ? FALSE : IgnrDot;
        volatile time_t dbto = smtpmode ? TimeOuts.to_datablock : 0;
@@ -355,6 +358,17 @@
                                mstate = MS_BODY;
                                goto nextstate;
                        }
+
+                       if (hdrz++>MAXHDRZ)
+                       {
+                          sm_syslog(LOG_NOTICE, e->e_id,
+                                    "excessive headers from %s during message collect",
+                                    CurHostName ? CurHostName : "<local machine>");
+                          errno = 0;
+                          usrerr("451 Stop this. You are lame.");
+                          goto readerr;
+                       }
+

                        /* check for possible continuation line */
                        do

_______________________________________________________________________
Michal Zalewski [lcamtuf w ids.pl] [ENSI / marchew] [dione.ids.pl SYSADM]
[http://linux.lepszy.od.kobiety.pl/~lcamtuf/] <=--=> bash$ :(){ :|:&};:
[voice phone: +48 (0) 22 813 25 86] ? [pager (MetroBip): 0 642 222 813]
Iterowac jest rzecza ludzka, wykonywac rekursywnie - boska [P. Deutsch]
---------

---------- Forwarded message ----------
Date: Mon, 18 Jan 1999 18:04:08 +0100
From: Michal Zalewski <lcamtuf w IDS.PL>
To: BUGTRAQ w NETSPACE.ORG
Subject: Re: Sendmail 8.8.x/8.9.x bugware

On Mon, 18 Jan 1999, Olaf Seibert wrote:

> 550 <rhialto w hacker.some.place.else@victim.some.where>... Relaying denied

As you noticed, relaying is denied in your configuration ;P This attack is
possible if relaying is enabled, and it allows multiple redirections
trough protected or external networks, which shouldn't be allowed.

For clearance - this problem IS PRESENT FOR SURE in 8.9.2, as well as DoS
attack described in previous mail... If Sendmail developers don't believe
me, I can post an exploit here, but iyt isn't really necessary, imho....

_______________________________________________________________________
Michal Zalewski [lcamtuf w ids.pl] [ENSI / marchew] [dione.ids.pl SYSADM]
[http://linux.lepszy.od.kobiety.pl/~lcamtuf/] <=--=> bash$ :(){ :|:&};:
[voice phone: +48 (0) 22 813 25 86] ? [pager (MetroBip): 0 642 222 813]
Iterowac jest rzecza ludzka, wykonywac rekursywnie - boska [P. Deutsch]



Więcej informacji o liście dyskusyjnej pld-devel-pl