home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / c / cops_104.zip / cops_104 / docs / COPS.report < prev    next >
Text File  |  1992-03-10  |  32KB  |  690 lines

  1. .ps 12
  2. .vs 12
  3. .PH ````
  4. .pn
  5. .nr W 78
  6. .ce 2
  7. \fBCOPS and Robbers
  8. UN*X System Security\fP
  9. .sp
  10. .sp
  11. .PP
  12. In the last few years, computer security has received a great deal
  13. more attention than it has in the past.  Computerized break-ins and
  14. criminal activity, once merely the product of the imagination of
  15. science fiction writers,
  16. has became a fairly common occurence in both commercial and academic
  17. circles.  In this paper, I will go over the problems that face any
  18. multiuser computing system, then discuss how these problems apply to UNIX\**
  19. .FS
  20. Although originally designed and developed by Ken Thompson and
  21. Dennis Ritchie of AT&T, UNIX has grown far beyond its' original
  22. design and now numerous companies market their own \*Qflavor\*U of
  23. UNIX.  When I use the term UNIX in this paper, I don't mean merely
  24. AT&T's version, but instead I mean the majority of the most popular
  25. varieties, made by developers at Berkely, Sun, and a host of other
  26. manufacturers.  I believe UNIX is still a trademark of Bell
  27. Laboratories.
  28. .FE
  29. specifically, and finally present in detail a suite of programs that
  30. were developed in an attempt to address some of the main problems
  31. that could be solved via software.  UNIX, although considered to be
  32. a fairly secure operating system ([Wood 88], [Duff 89], etc), has the
  33. advantage of having many published works ([Grampp and Morris 84],
  34. [Bishop 83], etc) on the problems that a computing site can have with
  35. security, and in addition, on how a UNIX system administrator might
  36. make his/her system more secure by monitoring various aspects of his/her
  37. UNIX site.  This, combined with UNIX's popularity, make it an ideal
  38. target for a software security system to operate on.
  39. .PP
  40. In this report I am not going to discuss specific ways of breaking
  41. into a given UNIX machine (for a more detailed description on how to
  42. compromise UNIX security, see either [Baldwin88], [Bishop83],
  43. [Wood & Kochran 86], or [Grampp & Morris 84]) -- instead, I will
  44. concentrate on how to improve and strengthen the potentially good
  45. security of a generic UNIX system by means of a software toolkit
  46. that examines the weaker areas of UNIX that are either traditionally
  47. ignored (due to the time constraints or ignorance of the system
  48. administrators) or are simply reoccurring problems that need to be
  49. watched over.  In addition, this report is not meant for UNIX neophytes
  50. -- although a great deal of proficiency is not needed to read
  51. this report and use the programs described herein, a familiarity with
  52. basic UNIX features -- the file system and file permission modes for
  53. example -- and commands such as
  54. .ul
  55. awk, grep, sed
  56. as well as a working knowledge of shell and C programming are necessary
  57. to understand the internal workings of the security system described in
  58. this paper.
  59. .PP
  60. Although there is no reasonable way that all security problems can be
  61. solved (at least not with a software solution) on any arbitrary UNIX
  62. system, administrators and system programs can be assisted by a software
  63. security tool.  The Computer Oracle Password and Security system (COPS)
  64. that will be described in this paper is just such a device.  The COPS
  65. system is a collection of programs and shell scripts that attempt
  66. to address as many of these problems as possible in an efficient,
  67. portable, and above all in a reliable and safe way.  The main goal
  68. of COPS is one of prevention; it tries to anticipate and eliminate
  69. security problems by making sure people don't get a chance to
  70. compromise security in the first place.  Alerting the
  71. administrators of a potential intruder or that a virus has infected 
  72. the system is beyond the scope of the present system, although with 
  73. work with such capabilities could be added ([Bauer and Koblentz 88]
  74. and [Duff 89].)
  75. .PP
  76. To understand the reason COPS might check any specific problem, a
  77. look at computer security problems in general is in order.  The
  78. problems listed below are not meant to be inclusive, but they are
  79. indicative of the myriad types of dilemmas a typical computer multiuser
  80. system might encounter:
  81. .PP
  82. 1)  Administrators, system programmers, and computer operators.  The
  83. very people that (should) worry the most about security are sometimes
  84. the ones that are the
  85. least concerned.  Carelessness is one of the main culprits; a mistake by a user
  86. might cause little or no problem, but when someone with no
  87. restrictions (or almost none) on their computer activity makes a mistake,
  88. a security hole can result.  \*QI can trust my users\*U is a fine
  89. statement to make -- but can you trust your users' friends?  How about
  90. the users of computers that are networked to yours?
  91. New software, systems, or procedures
  92. can facilitate extra problems; a computing staff is often ill or
  93. completely non-trained on new techniques and software.
  94. Too often \*QRTFM\*U is the only training that they will ever receive.
  95. Programs that are created for in-house use are often ill-documented and
  96. not debugged thoroughly, and when users other than the author start to
  97. use/abuse the program, problems can result.  Especially misunderstood,
  98. even by experienced UNIX system programmers, is the SUID program or,
  99. worse yet, the SUID shell script ([Bishop 83].)
  100. When a user says that his/her password was forgotten (or any
  101. other account/security related problem), what checks are made to verify
  102. that the person is really the owner of that account?  Are users that are
  103. security problems kept track of, so that repeated abuses of the system will
  104. result in punitive action?  Does your site even have a security policy?
  105. And of course, the last straw is that most system administrators simply
  106. have too much other work to do than to constantly check
  107. the system for potential security flaws -- let alone to double-check that
  108. any work done by other system programmers has been done correctly.
  109. These are the actions that often get left unsaid and undone.
  110. .PP
  111. A UNIX environment has no special defenses against this kind of
  112. \*Qattack\*U.  Fortunately, a number of these potential problems (unless
  113. catastrophic in scope) are not only correctable, but are
  114. easy to detect with a software toolkit such as COPS.  Even the most
  115. careful UNIX guru will periodically make a mistake; COPS has been
  116. designed to aid in her/his never ending battle against the forces of
  117. darkness.
  118. .PP
  119. 2)  Physical security.  This is perhaps the most frustrating of all 
  120. possible problems because it effects all computer systems and is often the
  121. hardest to safeguard against.  Even if the software is secure, even if 
  122. the system administrators are alert to potential problems, what happens 
  123. if a user walks up to the root console and starts typing?  Does the night
  124. janitorial staff let anyone into the machine room without proper 
  125. identification? Who has access to the key that opens up the computing 
  126. center?  Are terminals that are logged on left unguarded or unlocked?
  127. Are passwords written on or near a users terminal or desk?
  128. No software in the world can help
  129. against human nature or carelessness.  Reiterating to your staff and users
  130. that terminals should not be left alone or unguarded and that passwords
  131. (especially root) should not be typed in front of unfriendly (and in
  132. this case, _everyone_ is your enemy) eyes would be a good start.  A
  133. simple analogy: since you would never give the keys to the company car
  134. away, why on earth would you give away the keys to your computer, which
  135. is certainly worth a hell of a lot more time and money (although it may
  136. not get as good mileage on the interstate.)  Common sense goes a long
  137. ways to help prevent this kind of risk.
  138. .PP
  139. 3)  Authentication.  What is authentication?  All modern computing
  140. systems that have capabilities for multiple users have a means of
  141. identifying who is
  142. using the computer at any given time.  A common means of identification
  143. is by using a password; and since the inception of this idea, poor
  144. passwords have been a perennial problem.  People have a tendency to
  145. use their own name, or their social security number, or some other
  146. common word, name, or phrase for a password.  The problem then arises
  147. when an unauthorized user wants to access clandestine information,
  148. he/she simply tries one of these simple passwords until a successful
  149. match is found.
  150. .PP
  151. Other problems with authentication?  What computer hosts are
  152. \*Qtrusted\*U and allow users to log in from other machines without 
  153. any further authentication?  Are incorrect login attempts kept and/or
  154. monitored so as to allow administrators to keep track of any unusual
  155. activity?  What about \*QTrojan horses\*U -- programs that can steal
  156. passwords and the privileges that a user owns -- is there a program or a
  157. administrative method that detects a potential 'horse?
  158. .PP
  159. Fortunately UNIX systems again have some fairly good tools to aid in
  160. this fight.  Although finding simple passwords is indeed a trivial
  161. task, forcing the users on a system to use passwords that are harder to
  162. guess is also
  163. trivial, by either modifying the mechanism that gets/gives the password
  164. to the user, and/or by having the system administrators run a simple
  165. password detector periodically, and notifying users if their password is
  166. deemed too obvious.  The
  167. .ul
  168. crypt
  169. command, although proven to be insecure for a knowledgeable and
  170. resourceful attacker ([Reed and Weinberger 84], [Baldwin 86]), does
  171. offer an added shield against most unauthorized users.  Logs can be kept
  172. of incorrect login attempts, but as with most security measures, to be
  173. effective someone (usually the site administrator) must take the time to
  174. examine the evidence.
  175. .PP
  176. 4)  Bugs/Features.  Massive software designs (such as an operating system)
  177. are usually the result of a team or of teams of developers working together.
  178. It only takes one programmer to make a mistake, and it will almost always
  179. happen.  \*QBack doors\*U that allow unauthorized entrances are sometimes
  180. purposefully coded in -- for debugging, maintenance, or other reasons.
  181. And there are always 
  182. unexpected side effects when thousands of people using the system start
  183. doing strange (stupid?) things.  The best kind of defense against this
  184. is to report the problems to the developer as they are discovered, and
  185. if possible, to also report a way to fix the problem.  Unfortunately,
  186. in many cases the
  187. source code is needed to make a bug fix, and especially in non-academic
  188. areas, this is simply not available due to the prohibitive costs involved.
  189. Combining this with the reluctance of a (usually) commercial developer
  190. to admit any problems with their product, and the end result is a
  191. security hole that will not be mended unless some kind of financial loss
  192. or gain is at stake -- for the developer of the product, not yours!
  193. .PP
  194. 5)  Ignorance.  Users who don't know or care can be a problem as well.
  195. Even if
  196. someone doesn't care about their own security, they can unwittingly
  197. compromise the entire system -- especially if they are a user with
  198. high privileges.  Administrators and system operators are not immune to
  199. this either, but hopefully are better informed, or at least have access
  200. to a means of combating this dysfunction.  It may also be due to apathy,
  201. an unwillingness to learn a new system, a lack of time to explore all of
  202. the features of a large system, or simply not enough computer savvy to
  203. learn more about a very complex system, and no one willing to
  204. teach it to the user.  This problem is much like illiteracy; it is a
  205. never-ending battle that will never go completely away.  And while a 
  206. software toolkit such as COPS can help combat this problem by calling
  207. attention to neglected or misunderstood critical areas, by far and away
  208. the best weapon against this is education.  An educated user will simply
  209. not make as many mistakes; and while it may seem impractical to teach
  210. _all_ users about (even) the fundamentals of computer security, think of
  211. all the time and resources wasted tracking down the mistakes that keep
  212. recurring time and time again.
  213. .PP
  214. 6)  Unauthorized permissions or privileges.  Are users given _too much_
  215. freedom?  Do new computer accounts have any default security at all, or
  216. are the new users expected to know what to do to protect their programs,
  217. data, and other files.  System files, programs, and data are sometimes
  218. shipped with minimal or no protection when gotten straight from the
  219. manufacturer; someone at the installation site must have enough
  220. knowledge to \*Qtune\*U the system to be effective and safe.  Password,
  221. memory, and log files especially should all be carefully monitored,
  222. but unfortunately an experienced user can often still find out any information
  223. they want with perseverance and a little luck.  This is
  224. where a system such as COPS can really shine.  After a new system is
  225. configured, some basic flaws can be uncovered with just a small amount
  226. of effort.  New system problems that somehow slip through the cracks of
  227. the site installers can be caught and modified before any serious
  228. problems result.  The key here is to prevent your system users from
  229. getting a denial of computer service that they need and deserve.  Service
  230. could mean anything from CPU time, response time, file space, or any
  231. other commodity that a computer has to offer.
  232. .PP
  233. 7)  Crackers/Hackers/Evil twin brothers.  Not much is needed on this
  234. subject, save to say that they are often not the main problem.
  235. Professional evil-users are a rarity; often harmful acts are done 
  236. by users who \*Qjust wanted to see what would happen\*U or had no idea
  237. of the ramifications of their acts.  Someone who is truly experienced is 
  238. very difficult to stop, and is certainly outside the realm of any
  239. software security tool as discussed in this paper.  Fortunately, most
  240. evil-doers are fairly inexperienced and ignorant, and when they make a
  241. mistake, a watchful administrator can deal with a problem before it gets
  242. out of hand.  Sometimes they can even reveal security problems that 
  243. were previously undiscovered.  COPS can help here mostly by reducing an
  244. attacker's options; the less holes to exploit, the better.
  245. .PP
  246. The COPS system attempts to help protect as many of the above
  247. items as possible for a generic UNIX system.  In the proper UNIX spirit,
  248. instead of having a large program that attempts to solve every possible
  249. problem, it is composed of several small programs that each check one
  250. or more potential UNIX security holes.
  251. The COPS system uses a variety of these problems to see if there are any
  252. cracks in a given UNIX security wall.  These methods correspond to some
  253. of the problems discussed above; specifically to administrators, system
  254. programmers, and computer operators; authentication; ignorance;
  255. unauthorized permissions or privileges; and finally crackers/hackers/evil
  256. twin brothers (numbers 1,3,5, and 6.)  It is very difficult, almost a
  257. practical impossibility to give software assistance to problems in
  258. physical security, and finally bugs or features that are present in a
  259. given UNIX system are possible to detect, but are not covered in this
  260. system (yet).  The design of most of the the programs were at least
  261. described if not outlined from the following sources:
  262. .sp
  263. Aho, Kernighan, and Weinberger 88
  264. .sp
  265. Baldwin 87
  266. .sp
  267. Fiedler and Hunter 86
  268. .sp
  269. Grampp and Morris 84
  270. .sp
  271. Wood and Kochran 86
  272. .sp
  273. .PP
  274. Of course with all of the problems listed below, looking at the actual
  275. source code of the program is very instructive -- each numbered section
  276. lists the corresponding program that is used to perform the check.  COPS
  277. checks:
  278. .PP
  279. 1)  \*Qvital\*U system files and directories to see if they
  280. have dangerous permissions (usually either world-writable, or world-readable.)
  281. Files and directories thought to be critical are in a configuration
  282. file
  283. .ul
  284. is_able.lst.
  285. Wildcards are useable like in UNIX; indeed, COPS
  286. passes everything to the shell for expansion.
  287. .sp
  288. The program that performs this task is
  289. .ul
  290. is_able.chk
  291. .PP
  292. 2)  Check devices for file systems to see if they are world-readable/writable,
  293. plus check for any exported NFS file systems with no restrictions.
  294. The file systems are normally found in /etc/fstab.
  295. .sp
  296. The program that performs this task is
  297. .ul
  298. dev.chk
  299. .PP
  300. 3)  Check all files in system for SUID status, notifying the COPS user
  301. of any changes in SUID status, and if any SUID files are world-writable,
  302. shell scripts, or non-executable (program) files.
  303. .sp
  304. The program that performs this task is
  305. .ul
  306. suid.chk
  307. and was written by Prentiss Riddle.
  308. .PP
  309. 4)  Check the /etc/passwd file (and the yellow pages password database, if
  310. applicable) for null passwords, improper # of fields, non-unique user-id's,
  311. non-numeric group id's, blank lines, and non-alphanumeric user-id's.
  312. .sp
  313. The program that performs this task is
  314. .ul
  315. passwd.chk
  316. .PP
  317. 5)  Check the /etc/group file (and the yellow pages database, if
  318. applicable) for groups with passwords, improper # of fields,
  319. duplicate users in groups, blank lines, and non-unique group-id's.
  320. .sp
  321. The program that performs this task is
  322. .ul
  323. group.chk
  324. .PP
  325. 6)  Check passwords of users on system.
  326. .sp
  327. Method -- using the stock \*Qcrypt\*U command, compare the encrypted
  328. password found in the /etc/passwd file against the following
  329. (encrypted) guesses:
  330. .sp
  331. The login id (uid), information in the gecos field, and all single
  332. letter passwords.
  333. .sp
  334. The program that performs this task is
  335. .ul
  336. pass.chk
  337. and was written by Craig Leres and was modified by Seth Alford,
  338. Roger Southwick, Steve Dum, and Rick Lindsley.  Bugs have been reported
  339. and fixed by numerous people.
  340. .PP
  341. 7)  Check the root path, umask, also if root is in /etc/ftpuser and
  342. owns /bin, /etc, /etc/passwd, /.login, /.profile and /.rhosts, and
  343. finally if a \*Q+\*U is in /etc/hosts.equiv.
  344. .sp
  345. The program that performs this task is
  346. .ul
  347. root.chk
  348. .PP
  349. 8)  Examine the commands in /etc/rc* to ensure that none of the
  350. files or paths used are world-writable.
  351. .sp
  352. The program that performs this task is
  353. .ul
  354. rc.chk
  355. .PP
  356. 9)  Examine the commands in /usr/lib/crontab to ensure that none of the
  357. files or paths used are world-writable.
  358. .sp
  359. The program that performs this task is
  360. .ul
  361. cron.chk
  362. .PP
  363. 10)  Check all of the user home directories to ensure they are not
  364. world writable.
  365. .sp
  366. The program that performs this task is
  367. .ul
  368. home.chk
  369. and was written by John Owens.
  370. .PP
  371. 11) Check important user files in user's home directories to ensure
  372. they are not world writable, plus checks netrc files to see if they
  373. are readable.  The files checked (all in the individual
  374. users' home directory, all with the prefix \*Q.\*U):
  375. .sp
  376. rhosts profile login cshrc kshrc tcshr crhost
  377. .sp
  378. netrc forward dbxinit distfile exrc emacsrc logout
  379. .sp
  380. The program that performs this task is
  381. .ul
  382. user.chk
  383. .PP
  384. 12) Checks ftp setup; anononymous ftp setup, if you support it.  This
  385. seems to be fairly site specific; it tries to check for correct ownership,
  386. file/directory permissions, etc.; for a complete description, check the
  387. man page for ftp.chk.
  388. .sp
  389. The program that performs this task is
  390. .ul
  391. ftp.chk [-a]
  392. .PP
  393. 13) Check for unexpected file system corruption or security breaches,
  394. using CRC values that are generated from your system files, then
  395. compared against previously calculated values.  As the author says:
  396. \*QIt's nice to be able to say that you know all your files
  397. are as they should be.\*U
  398. .sp
  399. The program that performs this task is
  400. .ul
  401. crc.chk.
  402. Mark Mendel wrote most of
  403. .ul
  404. crc.c
  405. and Jon Zeef wrote
  406. .ul
  407. crc_check.c
  408. .PP
  409. 14) Checks a few miscellaneous potential security problems that really
  410. don't belong anywhere else.  This includes looking to see if tftp &
  411. rexecd are enabled, to check if the uudecode alias is in the mail
  412. alias file and not commented out, if uudecode is either SUID or can
  413. create SUID files, and if the programs inside the /etc/inetd.conf
  414. or /etc/servers aren't world-writable.
  415. .sp
  416. The program that performs this task is
  417. .ul
  418. misc.chk
  419. .PP
  420. 15) Given a goal to compromise, such as user root, and a list of user
  421. and group id's that can be used in an attempt to achieve the goal, this
  422. security tool will search through the system until it verifies that the
  423. goal is compromisible or not.  The program that performs this tricky task
  424. is part of the
  425. .ul
  426. U-Kuang
  427. (rhymes with \*Qtwang\*U)
  428. system.  Robert Baldwin was kind enough to allow me to include this
  429. security checker (a fine security machine in it's own right)
  430. within this distribution.  For more information on this fascinating
  431. security checker, see kuang.man.ms and [Baldwin 87].  I have rewritten
  432. it in Bourne shell (it was in C-Shell) for further portability; Steve
  433. Romig rewrote it in Perl for speed.
  434. .PP
  435. .PP
  436. None of programs listed above certain cover all of the possible areas
  437. that can harm a system, but if run together they can aid an overworked
  438. administrator to locate some of the potential trouble spots.  The COPS
  439. system is not meant to be a panacea against all UNIX security woes,
  440. but an administrator who examines the security toolbox programs and 
  441. this research paper might reduce the danger of their UNIX system being
  442. compromised -- and that's all any security tool can ever hope to do.
  443. The COPS system could never replace a vigilant administration
  444. staffed with knowledgeable people, but hopefully, as administrators look
  445. into the package, more comprehensive programs will come into being,
  446. covering more of the problems that will continue as the latest versions
  447. of UNIX continue to grow.
  448. .PP
  449. Design Notes:
  450. .PP
  451. The programs that are described here were designed to address the
  452. problems discussed above, but still be usable on as many UNIX
  453. \*Qflavors\*U as possible.  Speed was sacrificed for
  454. simplicity/portability; hopefully the tools here will either be
  455. replaced or modified, as by no means are they the final word or
  456. solution to _any_ of these problems; indeed, it is my hope that
  457. after other programmers/administrators see this report, they will
  458. create newer, better, and more general tools that can be
  459. re-distributed periodically.  None of the programs need to be run by
  460. root to be effective, with the exception of the SUID checker (to
  461. ensure that all files are checked.) Some of the tools were written by
  462. myself, the others were written by other programmers on the network
  463. and (with their permission) presented here.  All of the programs in
  464. this report are in the public domain, with the exception of Robert
  465. Baldwin's U-Kuang system; they all exist solely to be used and
  466. modified to fit your needs.  If they are re-distributed, please 
  467. keep them in their original form unless it is clearly stated that
  468. they were modified.  Any improvements (that might not be too hard :-)),
  469. suggestions, or other security programs that
  470. you would like to see get further distribution can be sent to:
  471. .PP
  472. df@medusa.cs.purdue.edu
  473. .PP
  474. (That's me)
  475. .PP
  476. or
  477. .PP
  478. spaf@uther.cs.purdue.edu
  479. .PP
  480. (Dr. Eugene Spafford)
  481. .PP
  482. .PP
  483. Enhancements I envision include:
  484. .sp
  485. i) Improved speed and portability without sacrificing functionality
  486. (pretty obvious, I guess....)
  487. .sp
  488. ii) A level of severity assigned to each warning; anything that could 
  489. compromise root instantly (root having no password, for example) might
  490. have a level 0 priority, while simply having a user with a writable home
  491. directory might only be level 3.  This way the system could be run at
  492. a certain threshold level, or simply have the set of warnings
  493. prioritized for a less sophisticated administrator.
  494. .sp
  495. iii) The eradication of any design flaws or coding errors that are in
  496. the COPS system.
  497. .PP
  498. The main purpose of creating the COPS system was twofold; the first was
  499. to foster an understanding of the security problems common to most UNIX
  500. systems, and the second was to try to create and apply software tools
  501. that, when run, will inform system administrators of potential problems
  502. present in their system.  No attempt is made by the tools to correct any
  503. problems because a potential security problem at one site may be
  504. standard policy/practice at another.  An emphasis on furthering
  505. education and knowledge about UNIX in general is the key to good
  506. security practices, not following blindly what an unintelligent tool
  507. might say.
  508. .PP
  509. Some of the advantages to using a system such as COPS are:
  510. .sp
  511. i) Nearly Continuous monitoring of traditional problem areas.
  512. .sp
  513. ii) A new system can be checked before being put into production.
  514. .sp
  515. iii) New or inexperienced administrators can not only stop some of their
  516. problems in security they may have, but can also raise their
  517. consciousness about the potential for security dilemmas.
  518. .PP
  519. And a couple of disadvantages:
  520. .sp
  521. i) An administrator could get a false sense of security from running
  522. these programs.  Caveat emptor (ok, they are free, but still beware.)
  523. .sp
  524. ii) A specific path to the elimination of the problem is not presented.
  525. This could also be construed as an advantage, when considering the third
  526. point.
  527. .sp
  528. iii) Badguys can get these tools.  You know -- the guys with black hats.
  529. What happens when they get a copy of this package?  With any sensitive
  530. subject like security, knowledge is zealously guarded.  People are
  531. afraid that absolute knowledge corrupts -- who knows, they may be right.
  532. But I staunchly stand by the tree of knowledge.  Let the bad guys taste
  533. the fruit, and they may see the light, so to speak.  In addition, the
  534. system does not say how to exploit the hole, just that it exists.
  535. .PP
  536. .ul
  537. Results of Running COPS:
  538. .PP
  539. Not surprisingly, the results when COPS was run varied significantly
  540. depending on what system and site it was run on.  Here at Purdue, it was
  541. run on a Sequent Symmetry running DYNIX 3.0.12, on a pair of Suns (a
  542. 3/280 and 3/50) running UNIX 4.2 release 3.4, a VAX 11/780 running 4.3
  543. BSD UNIX, a VAX 8600 running Ultrix 2.2, and finally a NeXT machine
  544. running their 0.9 O/S version of UNIX.  The results of the COPS
  545. system showed a reasonable amount of security concern on all of the
  546. machines; the faculty only machines showed the weakest security, followed
  547. by the machines used by the graduate students, and finally the undergraduate
  548. machines had the strongest security (our administrators _know_ that you
  549. can't trust those (us?) young folks.)  Whether this was showing that
  550. Purdue has a good administration, or that the UNIX vendors have a fairly
  551. good grasp on potential security problems, or if it was merely 
  552. showcasing the shortcomings of this system wasn't clear to me from the
  553. results.
  554. .PP
  555. The security results probably will vary significantly from machine to
  556. machine -- this
  557. is not a fault of UNIX; merely having the same machine and software
  558. does not mean that two sites will not have completely different security
  559. concerns.  In addition, different vendors and administrators have
  560. significantly varying opinions on how a machine should be set up.  There
  561. is no fundamental reason why any system cannot pass all or nearly all of
  562. these tests, but what is standard policy at one sites may be an
  563. unthinkable risk at another, depending upon the nature of the work being
  564. done, the information stored on the computer, and the users of the
  565. system.
  566. .PP
  567. When I first started researching this report, I thought it would be a
  568. fairly easy task.  Go to a few computing sites, read some theoretical
  569. papers, gather all the programs everyone had written, and write a
  570. brief summary paper.  But what I found was an
  571. tremendous lack of communication and concerted effort towards the
  572. subject of security.  AT&T had written a couple of programs ([Kaplilow
  573. and Cherepov 88], as had Hewlett Packard ([Spence 89]), but they were
  574. proprietary.  I heard rumors that the
  575. government was either working on or had such a security system, but they
  576. certainly weren't going to give it to me.
  577. The one book devoted to UNIX security ([Kochran and Wood 86]) was good,
  578. but the programs that they presented were not expansive enough for what
  579. I had in mind, plus the fact that they had written their programs
  580. mostly based on System V.  And while most system administrators I talked
  581. to had written at least a shell script or two that performed a minor
  582. security task (SUID programs seemed the most popular), no one seemed to
  583. exchange ideas or any
  584. their problems with other sites -- possibly afraid that the admission of
  585. a weakness in their site might be an invitation to disaster.  There is
  586. an excellent security discussion group on the network ([Various Authors
  587. 84-]), from which I received some excellent ideas for this project, but
  588. it is very restrictive to whom it allows to participate.  I hope that
  589. with the release of this security system it will not only help stamp
  590. out problems with UNIX security, but would encourage people to exchange
  591. ideas, programs, problems and solutions to the computer community at large.
  592.  
  593. Dan Farmer
  594. September 29, 1989
  595. (latest changes on January 7, 1991)
  596. .PP
  597. .ul
  598. Acknowledgements:
  599. I would like to thank Eugene Spafford for his invaluable help in
  600. the researching, planning, and development of this project.  Without
  601. the writings and programs created by Robert Morris, Matt Bishop, and
  602. other capable UNIX programmers, this project could never have gotten
  603. off the ground.  Thanks also go to Brian Kernighan, Dennis Ritchie,
  604. Donald Knuth, and Ken Thompson, for such inspirational computer work.
  605. And of course without Peg, none of this would have come into being.
  606. Thanks again to all of you.
  607. .bp
  608. .ce
  609. .ul
  610. BIBLIOGRAPHY
  611.  
  612. .sp
  613. _, UNIX Programmers Manual, 4.2 Berkeley Software Distribution,
  614. Computer Science Division, Department of Electrical
  615. Engineering and Computer Science University of California,
  616. Berkeley, CA, August 1983.
  617. .sp
  618. _, DYNIX(R) V3.0.12 System Manuals, Sequent Computer Systems, Inc., 1984.
  619. .sp
  620. Aho, Alfred V., Brian W. Kernighan, and Peter J. Weinberger, The
  621. AWK Programming Language, Addison-Wesley Publishing Company, 1988.
  622. .sp
  623. Authors, Various, UNIX Security Mailing List/Security Digest,
  624. December 1984 -.
  625. .sp
  626. Baldwin, Robert W., Crypt Breakers Workbench, Usenet, October
  627. 1986.
  628. .sp
  629. Baldwin, Robert W., Rule Based Analysis of Computer Security,
  630. Massachusetts Institute of Technology, June 1987.
  631. .sp
  632. Bauer, David S. and Michael E. Koblentz, NIDX - A Real-Time
  633. Intrusion Detection Expert System, Proceedings of the Summer
  634. 1988 USENIX Conference, Summer, 1988.
  635. .sp
  636. Bishop, Matt, Security Problems with the UNIX Operating System,
  637. Department of Computer Sciences, Purdue University, January
  638. 31, 1983.
  639. .sp
  640. Bishop, Matt, How to Write a Setuid Program, April 18, 1985.
  641. .sp
  642. Denning, Dorothy, Cryptography and Data Security, Addison-Wesley
  643. Publishing Company, Inc, 1983.
  644. .sp
  645. Duff, Tom, Viral Attacks On UNIX System Security, Proceedings of
  646. the Winter 1988 USENIX Conference, Winter, 1988.
  647. .sp
  648. Fiedler, David and Bruce Hunter, UNIX System Administration,
  649. Hayden Book Company, 1986.
  650. .sp
  651. Grampp, F. T. and R. H. Morris, "UNIX Operating System Security,"
  652. AT&T Bell Laboratories Technical Journal, October 1984.
  653. .sp
  654. Kaplilow, Sharon A. and Mikhail Cherepov, "Quest -- A Security
  655. Auditing Tool," AT&T Bell Laboratories Technical Journal,
  656. AT&T Bell Laboratories Technical Journal, May/June 1988.
  657. .sp
  658. Morris, Robert and Ken Thompson, "Password Security : A Case
  659. History," Communications of the ACM, November 1979.
  660. .sp
  661. Reed, Brian, "Reflections on Some Recent Widespread Computer
  662. Break-ins," Communications of the ACM, vol. Vol 30, No. 2,
  663. February 1987.
  664. .sp
  665. Reed, J.A. and P.J. Weinberger, File Security and the UNIX System
  666. Crypt Command, Vol 63, No. 8, AT&T Bell Laboratories
  667. Technical Journal, October 1984.
  668. .sp
  669. Smith, Kirk, Tales of the Damned, UNIX Review, February 1988.
  670. .sp
  671. Spafford, Eugene H., The Internet Worm Program: An Analysis,
  672. Purdue Technical Report CSD-TR-823, Nov 28, 1988.
  673. .sp
  674. Spafford, Eugene H., 1989.  Private Communications
  675. .sp
  676. Bruce Spence, spy: A UNIX File System Security Monitor, Workshop
  677. Proceedings of the Large Installation Systems Administration III,
  678. September, 1988.
  679. .sp
  680. Stoll, Clifford, Stalking the Wily Hacker, Volume 31, Number 5,
  681. Communications of the ACM, May 1988.
  682. .sp
  683. Thompson, Ken, Reflections on Trusting Trust, Volume 27, Number
  684. 8, Communications of the ACM, August 1984.
  685. .sp
  686. Wood, Patrick and Stephen Kochran, UNIX System Security, Hayden
  687. Books, 1986.
  688. .sp
  689. Wood, Patrick, A Loss of Innocence, UNIX Review, February 1988.
  690.