On Wed, 3 Dec 2003, Jeffrey Laramie wrote:

> Hi Everyone,
> 
> There is an updated version of my "Beginner's Guide" now available here.
> 
> http://www.ubaight.com/xmail/BeginnersGuide.html
> 
> For those of you who haven't seen the draft, The Guide has been completely 
> re-written and has a number of new sections. If you read the draft then the 
> only substantial change is the addition of a section on installing the 
> Ecartis mailing list manager.

Big warning when using Ecartis, expecially coupled with XMail. Ecartis is 
not the more secure package on earth, this is a know thing. Also, its suid 
ecartis might let you think that you are safe, but you are indeed not. 
Since XMail runs it as root, a suid ecartis does not prevent a rootkit to 
do a setuid(0) and regain root privileges. I use this trivial wrapper 
called swrap.c:

------------------------------------------------------------------------------

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
 
 
static void usage(char *prg) {
 
        fprintf(stderr, "%s uid gid cmd [param ...]\n", prg);
}
 
 
int main(int ac, char **av, char **env) {
 
        if (ac < 4) {
                usage(av[0]);
                return 1;
        }
        if (setgid(atoi(av[2])) || setuid(atoi(av[1]))) {
                perror("setgid/setuid");
                return 2;
        }
        execve(av[3], &av[3], env);
        perror(av[3]);
        return 3;
}

-------------------------------------------------------------------


and I use this as ecartis.sh script (the one run by XMail):

-------------------------------------------------------------------
#!/bin/sh
DIRNAME=`dirname $0`
FILENAME=$1
shift
$DIRNAME/econv --mbox --unix --input $FILENAME > $FILENAME.lst
$DIRNAME/swrap 503 503 $DIRNAME/ecartis -f $FILENAME.lst $*
rm -f $FILENAME*
-------------------------------------------------------------------

Replace 503 with the real uid/gid of the ecartis user/group. Also, a small 
change to the Ecartis src/core.c file:

+#define MAX_STK_SHIFT 1024
                                                                                       
                                                   
int main (int argc, char** argv)
{
    char *temp;
    int errors = 0;
    int exitearly = 0;
    int count = 0;
    char buf[BIG_BUF];
                                                                                       
                                                   
+   srand(time(NULL) * getpid() + XXXX);
+   alloca(rand() % MAX_STK_SHIFT);

where XXXX is your secret constant. Also, I run prelink (-R):

http://freshmeat.net/projects/prelink/?topic_id=253

on Ecartis, econv and (just to be sure) XMail binary.




- Davide


-
To unsubscribe from this list: send the line "unsubscribe xmail" in
the body of a message to [EMAIL PROTECTED]
For general help: send the line "help" in the body of a message to
[EMAIL PROTECTED]

Reply via email to