home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 1 / HACKER1.ISO / misc / v05i017.txt < prev    next >
Internet Message Format  |  1992-09-27  |  32KB

  1. From:       Kenneth R. van Wyk (The Moderator) <krvw@CERT.SEI.CMU.EDU>
  2. Errors-To: krvw@CERT.SEI.CMU.EDU
  3. To:       VIRUS-L@IBM1.CC.LEHIGH.EDU
  4. Path:      cert.sei.cmu.edu!krvw
  5. Subject:   VIRUS-L Digest V5 #17
  6. Reply-To:  VIRUS-L@IBM1.CC.LEHIGH.EDU
  7. --------
  8. VIRUS-L Digest   Thursday, 30 Jan 1992    Volume 5 : Issue 17
  9.  
  10. Today's Topics:
  11.  
  12. Stoned on SafeMBR?? Say it ain't so! (PC)
  13. Re: Stoned on SafeMBR drive (PC)
  14. Help! Ghost Virus! (PC)
  15. Stoned (PC)
  16. CHKDSK and Viruses (PC)
  17. Michelangelo Virus from Verbatim Disks (PC)
  18. Re: QEMM386's LOADHI with VSHIELD1 and/or VIRSTOP (PC)
  19. Boot Sectors Nomenclature (PC)
  20. AUX "file" (PC)
  21. Aircop & Laser? (PC)
  22. Virus, typing '- -' (PC)
  23. Re: Trojan program collects passwords
  24. Re: New Antivirus Organization Announced
  25. Updated FPROT202 on BEACH (PC)
  26. "Commercial safety" myth
  27. Cohen's error
  28.  
  29. VIRUS-L is a moderated, digested mail forum for discussing computer
  30. virus issues; comp.virus is a non-digested Usenet counterpart.
  31. Discussions are not limited to any one hardware/software platform -
  32. diversity is welcomed.  Contributions should be relevant, concise,
  33. polite, etc.  (The complete set of posting guidelines is available by
  34. FTP on cert.sei.cmu.edu or upon request.)  Please sign submissions
  35. with your real name.  Send contributions to VIRUS-L@IBM1.CC.LEHIGH.EDU
  36. (that's equivalent to VIRUS-L at LEHIIBM1 for you BITNET folks).
  37. Information on accessing anti-virus, documentation, and back-issue
  38. archives is distributed periodically on the list.  Administrative mail
  39. (comments, suggestions, and so forth) should be sent to me at:
  40. krvw@CERT.SEI.CMU.EDU.
  41.  
  42.    Ken van Wyk
  43.  
  44. ----------------------------------------------------------------------
  45.  
  46. Date:    27 Jan 92 09:38:30 -0500
  47. From:    "Don Medal" <MEDAL@mail.crk.umn.edu>
  48. Subject: Stoned on SafeMBR?? Say it ain't so! (PC)
  49.  
  50. My computer lab attendants report seeing our old nemisis STONED
  51. reappearing on lab machines (XTs) previously protected with SAFEMBR.
  52.  
  53. Frankly I don't know whether staff is right or freaking out from to
  54. many virus worries during the night hours.  The instances to date have
  55. been "fixed" with CLEAN before I could look at them, and I wonder if
  56. they were not really floppy disk based cases.
  57.  
  58. Could this be so? (that STONED can infect a SafeMBR protected drive?)
  59. eGad, will this never stop?
  60.  
  61. [Moderator's Note: See follow-up below.]
  62.  
  63. Don
  64. - -------------------------------------------------------
  65. Don Medal                          internet: medal@mail.crk.umn.edu
  66. UMC Computing Services             BITNET:  dmedal@UMNACVX.BITNET
  67. Univ of Minnesota Crookston        voice: (218) 281-6510  ext 432
  68. - -------------------------------------------------------
  69.  
  70. ------------------------------
  71.  
  72. Date:    Tue, 28 Jan 92 15:47:34 -0500
  73. From:    padgett%tccslr.dnet@uvs1.orl.mmc.com (A. Padgett Peterson)
  74. Subject: Re: Stoned on SafeMBR drive (PC)
  75.  
  76. Don:
  77.      Sure, STONED can infect a SafeMBR protected drive - SafeMBR
  78. cannot stop someone from booting from a floppy, not can it stop a
  79. booted floppy from writing to the disk. What SafeMBR does is DETECT
  80. the infection and hang the boot if its integrity check fails.
  81.  
  82.      Similarly, you can't prevent a virus from removing SafeMBR by
  83. replacing the entire MBR with itself - AZUSA does this - but then my
  84. logo won't display.  What you can do is to put CHKSMBR in the
  85. autoexec.bat - it will return errorlevels depending on whether SafeMBR
  86. is still there you can use in a .BAT file (see the .DOC).
  87.  
  88.     I am sending a uuencoded ZIP of the entire new Fix, Chk, & NoFBoot
  89. package for you to try.
  90.  
  91.                     Warmly,
  92.  
  93.                         Padgett
  94.  
  95. ps if you have something that can get by SafeMBR, then it is not the
  96.    vanilla STONED - please send me a copy. - app
  97.  
  98. ------------------------------
  99.  
  100. Date:    Mon, 27 Jan 92 15:54:36 +0000
  101. From:    smasilam@uokmax.ecn.uoknor.edu (Senthilamudhan Masilamani)
  102. Subject: Help! Ghost Virus! (PC)
  103.  
  104. I found jeru -A , jeru, and 15xx spread accross a few diskette
  105. originals and on thus on my system. When I put the diskettes(procomm
  106. and MTEZ) into another older model pc and scanned them using the lates
  107. Virusscan(Scan85 i think) , the same version i used earlier to find
  108. the viruses, The viruses were no longer there!! The scan reports the
  109. disks to be clean ! Whats goin on???
  110.         Thanks,
  111.         smasilam@uokmax.ecn.uoknor.edu
  112.  
  113. ------------------------------
  114.  
  115. Date:    27 Jan 92 10:50:00 -0500
  116. From:    "V70D::HUNTRESS" <HUNTRESS%V70D.decnet@npt.nusc.navy.mil>
  117. Subject: Stoned (PC)
  118.  
  119. Hi,
  120.  
  121. I found and cleaned Stoned from my system this weekend (f-prot is
  122. *GREAT*).  I have no idea how long it had been resident, and since I
  123. never saw it trigger (never got the message "You have been stoned"), I
  124. started to wonder what causes it to trigger.  A date?  A number of
  125. boots?  Random?
  126.  
  127. Gary Huntress
  128. huntress@npt.nusc.navy.mil
  129.  
  130. ------------------------------
  131.  
  132. Date:    Mon, 27 Jan 92 15:44:08 -0500
  133. From:    padgett%tccslr.dnet@mmc.com (A. Padgett Peterson)
  134. Subject: CHKDSK and Viruses (PC)
  135.  
  136. From:    Josep Fortiana Gregori <UBAESQ01@EBCESCA1.BITNET>
  137.  
  138. >    After reading the note by Padgett Peterson about the
  139. >    Michelangelo virus, I checked my machines and found
  140. >    that one of them (a 486/33MHz clone AT with 8M ram)
  141. >    reports total memory = 654336 = 655360 - 1024 when
  142. >    booted from drive C: and 655360 when booted from A:
  143.  
  144. Actually, there are quite a few things that can cause CHKDSK to return
  145. less than "655,360".
  146.  
  147. Return of 654336 (note: the memory from 9fc0:0 to 9fc0:3ff will be mostly
  148.   nulls (zeros). If full of code not recognized, I become very suspicious).
  149.  
  150.   a) DOS 4.x (ROM BIOS data extension - not used with DOS 5.0)
  151.   b) Older Compaqs (buffer for Compaq mouse - 1k can be returned by moving
  152.      jumper on motherboard - no, I do not know which one)
  153.   c) My DISKSECURE program (not SafeMBR though)
  154.   d) A small number of non-stealth (so far) viruses e.g. AIRCOP
  155.  
  156. Return of 653,312 or less
  157.  
  158.   a) many MBR viruses
  159.   b) H/P Vectra (651,264 as I recall)
  160.   c) many resident access control programs that promise "no booting from
  161.      floppy"
  162.  
  163. Return of 524,288
  164.  
  165.   PC with 512k memory
  166.  
  167. Any combination of the above.
  168.  
  169. Additionally, there are a small number of systems that will report in
  170. excess of 655,360 normally. See "BEST" below.
  171.  
  172. In short, if I see 655360 on a plain-jane PC, there is a very good chance
  173. that the system does not have a MBR virus - certainly not Aircop, Brain,
  174. Alameda, Azusa, Joshi, Michelangelo, Empire, etc. If less, I want to know
  175. why but there often may be innocent reasons, some of which I have listed
  176. above. The BEST way to use CHKDSK returns is to make a note of what it is
  177. for the PC when known to be clean and to watch for any change.
  178.  
  179. One way is with my FREEWARE (worth every penny) CHKMEM.COM program. Invoked
  180. with the known size (e.g. CHKMEM 640) it will fall through if ok and halt with
  181. a message if there is a problem. It will not find 100% of all known and
  182. unknown viruses, it will not even find all MBR infections, but it will
  183. find the popular ones that have spread widely. Look it in CHK.ZIP or
  184. FixUtil.ZIP.
  185.  
  186.                     Warmly, "back home agaaaaain..."
  187.                         Padgett
  188.         <padgett%tccslr.dnet@mmc.com>
  189.  
  190. ------------------------------
  191.  
  192. Date:    Mon, 27 Jan 92 21:36:23 +0000
  193. From:    brabec@pysgjb.physics.ncsu.edu (Charles Brabec)
  194. Subject: Michelangelo Virus from Verbatim Disks (PC)
  195.  
  196. A friend of mine says his computers at work got infected from a batch
  197. of brand-new Pre-formated Verbatim 1.44Mb disks. I don't have the lot
  198. number, but I figured people ought to know. It would probably be a
  199. good idea to check out ALL preformated disks before using them.
  200.  
  201. Charles
  202.  
  203. - -- 
  204. - --------------------------------------------------------------
  205. Charles Brabec                     304 Cox Hall
  206. brabec@pysgjb.physics.ncsu.edu            (919) 515-7228
  207.  
  208. ------------------------------
  209.  
  210. Date:    28 Jan 92 00:58:11 -0500
  211. From:    heinicke@uwovax.uwo.ca (Allan Heinicke)
  212. Subject: Re: QEMM386's LOADHI with VSHIELD1 and/or VIRSTOP (PC)
  213.  
  214. hendee%3338.span@Sdsc.Edu (Jim Hendee) writes:
  215. > I've noticed that you can use Quarterdeck's QEMM386 and LOADHI to load
  216. > VSHIELD1.EXE in high memory, as well as FPROT's VIRSTOP.EXE, but you
  217. > can't load VSHIELD.EXE high (so far as I'm aware).  My questions are:
  218. > 1)  When you load these two small anti-viral programs high, do they still
  219. > work?
  220.  
  221. Virstop loads high using QEMM (v.5.12 anyway) and detects the F-CHK
  222. virus simulator from the old F-Prot package. Fortunately, I haven't
  223. had a real virus that I know of so I cannot attest that it works.
  224.  
  225. Be aware however that if you are using Desqview, virstop is not working
  226. inside the DOS windows: to quote from the F-Prot documentation--
  227.  
  228. VIRSTOP.EXE is not effective if run before a program which totally
  229. takes over the "Load-and-Execute" function.  This includes Novell
  230. Netware and PC-NFS, and as explained elsewhere, VIRSTOP should be run
  231. after those programs.  However, this also applies to DesqView - which
  232. means that VIRSTOP is not effective inside a DOS window in DesqView.
  233.  
  234. ------------------------------
  235.  
  236. Date:    28 Jan 92 11:15:14 -0500
  237. From:    "Otto.Stolz" <RZOTTO@DKNKURZ1.BITNET>
  238. Subject: Boot Sectors Nomenclature (PC)
  239.  
  240. Hello,
  241.  
  242. In contributions to this forum and in various anti-virus software, I
  243. found differing technical terms for the two sorts of boot sectors
  244. found on MS-DOS hard disks. As some of these technical terms may be
  245. regarded misleading, I suggest that we all agree on particular terms
  246. (I'll present below) and try to avoid the misleading terms,
  247. henceforth.
  248.  
  249. Let me recall the technical facts, first. If you know them already,
  250. you may want to skip to the Summary, below.
  251.  
  252. If a PC is booted with no diskette in drive A, the BIOS (after some
  253. preliminaries) will read the 1st physical sector from the hard disk into
  254. a fixed location in memory and execute it. This sector contains a boot-
  255. strap program and is only found once on the whole disk; hence it is
  256. widely known as "Master Boot Record (MBR)".
  257.  
  258. The MBR (after some simple checks) loads another boot sector from the HD
  259. and executes it. This second boot sector is located at the beginning of
  260. the "active partition". If a HD is partitioned into several partitions,
  261. every partition starts with a boot sector, but only one partition can be
  262. the "active" one at any moment, hence only one of those bootstrap pro-
  263. grams is executed during the bootup process. As every partition
  264. contains such boot sector as its 1st (logical) block, we could term them
  265. "Partition Boot Sectors" (I'll explain shortly why I think this is not
  266. a good idea, though).
  267.  
  268. How does the MBR know where the partions are on the HD and which one
  269. is the active one? Very simple: there is a Partition Table built into
  270. it (somewhere towards its end). Now some authors call the MBR imprecisely
  271. "Partition Table" (and some even "Partition Record"). I suggest to avoid
  272. this terminology for two reasons:
  273. 1. It is imprecise:  the PT is only part of the MBR.
  274. 2. It is misleading: the term PT could all too easy be confused with
  275.    the term Partition Boot Record.
  276.  
  277. Now we even have a /MBR option in an official DOS command, I suggest
  278. everybody should use the term Master Boot Record (MBR) and cease using
  279. any other term for the 1st physical sector of a HD.
  280.  
  281. After "Partition Table" has been used widely for the MBR (and still
  282. will and should be used to refer to that part of the MBR), I think the
  283. term "Partition Boot Sector" for the 1st logical sector of a partition
  284. (though precise) is too confusing to be regarded as a good term. I
  285. suggest to use the term "DOS Boot Sector" instead, as this sector looks
  286. pretty much the same as the only boot sector on a DOS diskette.
  287.  
  288. To boot an operating system other than DOS (e.g. Unix or Novell) from a
  289. HD, the active partition contains a "Unix Boot Sector" or a "Novell Boot
  290. Sector" instead of the DOS Boot Sector, while the MBR does not look any
  291. different than on a genuine DOS hard disk. So we could use those terms
  292. for particular operating systems; however, I cannot imagine a suitable
  293. term (other than "Partition Boot Sector") in case you want to avoid
  294. being specific about the particular operating system. Any suggestions?
  295.  
  296. Summary of the terms suggested:
  297.  
  298. Master Boot Record (MBR) : The 1st physical sector on a hard disk
  299.                            **Cease calling it Partition Table|**
  300.  
  301. DOS Boot Sector          : The 1st (logical) sector of a DOS partition on
  302.                            a hard disk, or the 1st (physical and logical)
  303.                            sector of a DOS diskette.
  304.                            (Similar terms to be coined for other
  305.                            operating systems)
  306.  
  307. Partition Table          : A particular part of the MBR.
  308.                            **Use this term only when particularaly
  309.                            referring to this part of the MBR, as opposed
  310.                            to other parts**
  311.  
  312. I'd rather see a better term for the following one (suggestions?):
  313.  
  314. Partition Boot Sector    : A genuine term for the 1st (logical) sector of
  315.                            a partition on a HD, if you do not want to
  316.                            refer to a particular operating system.
  317.                            **Try to avoid this term, as some readers will
  318.                            confuse it with the PT (or even with the MBR,
  319.                            due to sloppy language in the past)**
  320.  
  321. Best regards,
  322.                     Otto Stolz <RZOTTO@DKNKURZ1.Bitnet>
  323.                                <RZOTTO@nyx.uni-konstanz.de>
  324.  
  325. ------------------------------
  326.  
  327. Date:    28 Jan 92 17:41:57 -0500
  328. From:    Leonard Erickson <70524.2603@CompuServe.COM>
  329. Subject: AUX "file" (PC)
  330.  
  331. In VIRUS-L V5#15, diaz@leland.stanford.edu (Kathy Diaz) writes:
  332.  
  333. >I have a question it seems that I have come across some sort of virus.
  334. >My Dos Machine has in every directory a file called aux. It seems also
  335. >that you can't find it by normal means. I guess the best way to find
  336. >it is to use any editor(edlin, edit, vi, etc..) to look at it, but
  337. >what you actually get is a computer freeze.
  338. >
  339. >You could also try to rename a file to aux and you will some sort of
  340. >duplicate file error.
  341. >
  342. >Each aux file is about 112 bytes long.
  343.  
  344. >It doesn't seem to be malicious aside from taking up space but I can't
  345. >even look in the file and try to dump the contents onto a file or
  346. >something. And scanv85 doesn't find it.  Same thing with CPAV. If
  347. >anybody knows something about this all your help will be greatly
  348. >appreciated.
  349.  
  350. AUX is one of the default *devices* in MS-DOS. It is usually mapped to
  351. COM1:. Like all devices it can be *addressed* as if it were a file. (ie
  352. COPY XYZ AUX)
  353.  
  354. The 112 bytes (how'd you get that?) is probably the buffer size for AUX.
  355.  
  356. The list of standard MS-DOS devices follows:
  357. device    Input    Output
  358. CON    yes    yes    input=keyboard/output=screen
  359. PRN    no    yes    mapped to LPT1
  360. AUX    yes    yes    mapped to COM1
  361. NUL    yes    yes
  362. LPT1    no    yes
  363. LPT2    no    yes
  364. LPT3    no    yes
  365. LPT4    no    yes    only exists in recent DOS versions
  366. COM1    yes    yes
  367. COM2    yes    yes
  368. COM3    yes    yes
  369. COM4    yes    yes
  370. ...
  371.  
  372. The LPT and COM devices only "exist" if the appropriate hardware exists.
  373.  
  374. Another surprise is that DOS has a fake *directory* called "dev" (for
  375. device). Try copying some files to \dev\prn for example...
  376.  
  377.  
  378.  
  379. ------------------------------
  380.  
  381. Date:    Tue, 28 Jan 92 19:50:51 -0600
  382. From:    be215645@uwspmail.uwsp.edu
  383. Subject: Aircop & Laser? (PC)
  384.  
  385. Greetings,
  386.   I recently found the Aircop virus on a friend's computer.  She can't
  387. remember using any boot disks except for the ones that came with it.  When I
  388. checked it, I only found the virus on 3 disks.
  389.   It's a Laser 286/2 VTS that was bought from a discount store around
  390. Sept.-Oct. 1990.  Laser included the PC Tools Deluxe program with the
  391. package.  I found the virus on these disks:
  392.     Laser - Utilities
  393.     Laser - DSK HD FORMAT UTILITY (ST)
  394.     Central Point/Laser - PC Tools Deluxe Version 6
  395.                           Disk 1 - PC Setup
  396.  
  397.   Could this have come from Laser?  It could have also come from the
  398. discount store.  Comments anyone?
  399.   Thanks.
  400.  
  401. =====================================================================
  402. Andy Berkvam                      | be215645@uwspmail.uwsp.edu
  403. 414 Neale Hall                    | The only thing necessary for the
  404. University of Wisconsin           | triumph of evil is for good men
  405. Stevens Point, WI 54481           | to do nothing.
  406. (715) 346-3153                    |                     -Edmund Burke
  407. ================================\\//_================================
  408.  
  409. ------------------------------
  410.  
  411. Date:    Tue, 28 Jan 92 20:10:18 -0600
  412. From:    <rmikke@mimuw.edu.pl>
  413. Subject: Virus, typing '- -' (PC)
  414.  
  415. Has anyone heard of the virus on PC, that blanks the screen, and then
  416. starts to type '- -' all over it? Or maybe it writes '_ _' - I
  417. couldn't make sure on the blank screen. It has also crashed a few .EXE
  418. files.  I have diskduped suspected diskettes, if anyone wants to have
  419. a look at the beast.
  420.                Waiting for any help
  421.                                      Rysiek.
  422. - ------------------------------------------
  423. Ryszard Korwin-Mikke.  Internet: rmikke@mimuw.edu.pl
  424.                          Bitnet: rmikke@plearn
  425.  
  426. ------------------------------
  427.  
  428. Date:    Tue, 28 Jan 92 01:13:00 +0100
  429. From:    "Olivier M.J. Crepin-Leblond" <UMEEB37@VAXA.CC.IMPERIAL.AC.UK>
  430. Subject: Re: Trojan program collects passwords
  431.  
  432. This is quite an old trick - but very successful for the hacker.  I
  433. recall a similar story about three years ago in a London University.
  434. In 2 days, the hackers managed to get passwords for over 100 accounts.
  435. Fortunately, word got round, and users were asked to press <break> or
  436. ctrl-c before calling a host. The error trapping of the
  437. password-catching program was not behaving in a similar manner as the
  438. PAD (Packet Assembler- Disassembler) was.
  439.  
  440. Olivier M.J. Crepin-Leblond, Electrical Engineering Dept.,
  441. Imperial College of Science, Technology and Medicine, London, UK.
  442.  
  443. ------------------------------
  444.  
  445. Date:    28 Jan 92 15:41:43 +0000
  446. From:    spaf@cs.purdue.edu (Gene Spafford)
  447. Subject: Re: New Antivirus Organization Announced
  448.  
  449. The "Reply-to" header got stripped out of my posting, so I have been
  450. getting mail from people wanting more info on the Antivirus Methods
  451. Congress. 
  452.  
  453. [Moderator's Note: Sorry, the reply-to: was lost due to the mechanics
  454. of how the list gets distributed.  I'm looking into alternative ways
  455. of distributing the two groups.]
  456.  
  457. I am not (currently) associated with the AMC.  If you want more
  458. information, or you want to join, contact Dick Lefkon directly at
  459. dklefkon@well.sf.ca.us
  460.  
  461. - -- 
  462. Gene Spafford
  463. NSF/Purdue/U of Florida  Software Engineering Research Center,
  464. Dept. of Computer Sciences, Purdue University, W. Lafayette IN 47907-1398
  465. Internet:  spaf@cs.purdue.edu    phone:  (317) 494-7825
  466.  
  467. ------------------------------
  468.  
  469. Date:    Wed, 29 Jan 92 10:08:33 -0600
  470. From:    PERRY@beach.gal.utexas.edu (John Perry KG5RG)
  471. Subject: Updated FPROT202 on BEACH (PC)
  472.  
  473. To All Concerned:
  474.  
  475.     An updated version of FPROT202.ZIP is now available on
  476. beach.gal.utexas.edu (129.109.1.207).
  477.  
  478. Note to all users: I have received numerous mail messages indicating
  479. difficulty with using the ftp archive on beach. Beach is a VMS
  480. machine, not a UNIX machine. Therefore the file naming conventions are
  481. a little different from what you are used to. When FTP'ing to beach,
  482. changing directories is accomplished as follows:
  483. cd [anonymous.pub.virus.pc]
  484. instead of
  485. cd pub/virus/pc
  486.  
  487. If you still have trouble, please feel free to contact
  488. perry@beach.gal.utexas.edu.
  489.  
  490.  John Perry KG5RG                    | perry@beach.gal.utexas.edu - Internet
  491.  University of Texas Medical Branch  | PERRY@UTMBEACH             - BITnet
  492.  Galveston, Texas  77550-2772
  493.  
  494. ------------------------------
  495.  
  496. Date:    Wed, 29 Jan 92 15:37:11 -0800
  497. From:    p1@arkham.wimsey.bc.ca (Rob Slade)
  498. Subject: "Commercial safety" myth
  499.  
  500. p1@arkham.wimsey.bc.ca (Rob Slade) writes:
  501.  
  502. > survey of 600,000 PCs indicated that 63% had been hit with an infection.
  503. > Why?  Easy.  Only 25% had any kind of protection against viri.  (Note -
  504. > even more disturbing - *at least* 48% *have been hit and STILL HAVE NOT
  505.  
  506. In which we prove that Rob Slade is not so very clever after all.
  507.  
  508. Sufficient numbers have now pointed out to me that 63 - 25 = 38, and
  509. not 48.
  510.  
  511. Thank you.  (At least it proves people read the post!  :-)
  512.  
  513. ==============
  514. Vancouver      p1@arkham.wimsey.bc.ca   | "A ship in a harbour
  515. Institute for  Robert_Slade@sfu.ca      |  is safe, but that is
  516. Research into  CyberStore Dpac 85301030 |  not what ships are
  517. User           rslade@cue.bc.ca         |  built for."
  518. Security       Canada V7K 2G6           |           John Parks
  519.  
  520. ------------------------------
  521.  
  522. Date:    24 Jan 92 21:43:59 +0000
  523. From:    bontchev@fbihh.informatik.uni-hamburg.de (Vesselin Bontchev)
  524. Subject: Cohen's error
  525.  
  526. Hello, everybody!
  527.  
  528. As I mentioned in one of my postings some time ago, it is possible to
  529. find errors even in Fred Cohen's papers... :-) In his first and most
  530. often quoted paper [1], where he gives a definition to the term
  531. "computer virus", there are two serious errors.
  532.  
  533. The first one is in his sample program, which represents a computer
  534. virus. The program is as follows:
  535.  
  536. Program V :=
  537. {1234567;
  538. Subroutine infect-executable:=
  539.  {loop: file=random-executable;
  540.  if (first-line of file = 1234567)
  541.    then goto loop;
  542.    else prepend V to file;}
  543.  
  544. Subroutine do-damage:=
  545.  {whatever damage you can program}
  546.  
  547. Subroutine trigger-pulled:=
  548.  {whatever trigger you want here}
  549.  
  550. Main-program-of-virus:=
  551.  {infect-executable;
  552.  if (trigger-pulled) then do-damage;
  553.  goto next;}
  554.  
  555. next:
  556. }
  557.  
  558. As Cohen himself notices in his textbook [2], thousands of people have
  559. looked at the above program and nobody has noticed that the program is
  560. not correct and contains an error. To see the error, consider for a
  561. moment that the above virus has infected -all- the available executable
  562. files in the system. It is obvious that the next time you run a program,
  563. the routine in the virus, which looks for an uninfected executable, will
  564. loop forever! But, as I already mentioned, Cohen has found this error
  565. himself.
  566.  
  567. The second error in his paper is much more important. It is in his proof
  568. that the problem of recognizing a computer virus by its appearance is
  569. undecidable. I'll explain the error in detail here.
  570.  
  571. DISCLAIMER: The following ideas are not mine. The error has been first
  572. noticed by Dr. Franz X. Steinparz from Johannes Kepler Universitaet
  573. Linz, Technisch-Naturwissenschaftliche Fakultaet, Forschungsinstitut
  574. fuer Mikroprozessortechnik, A-4040 Linz/Auhof, Altenbergerstrasse 69,
  575. Austria. I saw a pre-release version of his paper, entiteled "A 
  576. Comment on Cohen's Theorem About Undecidability of Viral
  577. Dedection" and decided that the matter is quite important and
  578. should be discussed here. Also, in the paper the error has been just
  579. pointed out in two sentences; I'm giving here a more detailed
  580. explanation.
  581.  
  582. First of all, I'll explain here the proof which Cohen gives. It is
  583. probably well-known to most of you, but we need it for the explanation.
  584.  
  585. The proof is based on the well-known proof of undecidability of the
  586. so-called halting problem. Cohen himself does not state this explicitely
  587. in his paper, but the analogy is obvious. So, let's begin with the
  588. halting problem.
  589.  
  590. The problem consists in the following. It is impossible to write a
  591. program (or more exactly, to construct an algorithm), which accepts
  592. another program as an input and outputs a boolean result (false or
  593. true), indicating whether the program in question will stop after a
  594. finite number of steps or not, respectively, and which is able to
  595. produce correct results in -all- possible cases. The proof is as
  596. follows.
  597.  
  598. - -------cut here------
  599.  
  600. Let's assume that such an algorithm exists and it has been implemented
  601. in the function D(P), which gets the program P as input and returns a
  602. boolean result, indicating whether the program P will not stop after a
  603. finite number of steps. Let's also construct the following program P1:
  604.  
  605. program P1;
  606.  
  607.   function D (prog P) : boolean;
  608.   begin
  609.     .
  610.     .
  611.     .
  612.   end;
  613.  
  614.   procedure dont_stop;
  615.   begin
  616.     repeat
  617.     until false
  618.   end;
  619.  
  620. begin
  621.   if D (P1)
  622.   then halt
  623.   else dont_stop
  624. end.
  625.  
  626. It is obvious that the function D is unable to give a correct result in
  627. this case. If it returns true (which means that the program P1 will not
  628. stop), then the program P1 will stop (if D (P1) then halt). If it
  629. returns false (which means that the program P1 will stop), then the
  630. program P1 will never stop (the dont_stop procedure will be executed,
  631. which consists of an endless loop). Therefore the algorithm D is unable
  632. to give a correct result at least in this one case. Therefore no such
  633. algorithm exists, since we assumed that it will work in all cases.
  634.  
  635. There is no contradiction, however, if the function D itself does not
  636. stop after a finite number of steps. Therefore, we just proved that an
  637. algorithm, which is able to recognize whether a program will not stop
  638. after a finite number of steps, does not exist, or will run forever in
  639. some cases.
  640.  
  641. - -------cut here------
  642.  
  643. In fact, the above is just a particular case of the Rice theorem, which
  644. states that all non-trivial properties of the Turing machines are
  645. undecidable. (A property is considered trivial, if either all Turing
  646. machines have it, or no Turing machine has it.) Note that the proof
  647. holds only for Turing machines, not for real computers, but I'll
  648. consider this later.
  649.  
  650. Now, let's see the problem of recognizing a virus by its appearance.
  651. First, we need a definition of what a computer virus is. Cohen gives
  652. such a definition in his paper: "A computer virus is a program, which
  653. has the ability to infect other programs by modifying them in such a
  654. way, that they will include a possibly evolved copy of itself". In
  655. short, a virus is a program, which infects other programs.
  656.  
  657. The problem consists in the following. It is impossible to write a
  658. program (or more exactly, to construct an algorithm), which accepts
  659. another program as an input and outputs a boolean result (true or
  660. false), indicating whether the program in question will infect other
  661. programs or not, respectively, and which is able to produce correct
  662. results in -all- possible cases. The proof is as follows.
  663.  
  664. - -------cut here------
  665.  
  666. Let's assume that such an algorithm exists and it has been implemented
  667. in the function D(P), which gets the program P as input and returns a
  668. boolean result, indicating whether the program P will infect other
  669. programs. Let's also construct the following program P1:
  670.  
  671. program P1;
  672.  
  673.   function D (prog P) : boolean;
  674.   begin
  675.     .
  676.     .
  677.     .
  678.   end;
  679.  
  680.   procedure infect;
  681.   begin
  682.     .
  683.     . { Not shown for security reasons :-) }
  684.     .
  685.   end;
  686.  
  687. begin
  688.   if D (P1)
  689.   then halt
  690.   else infect
  691. end.
  692.  
  693. It is obvious that the function D is unable to give a correct result in
  694. this case. If it returns true (which means that the program P1 will
  695. infect other programs), then the program P1 will not infect other
  696. programs (if D (P1) then halt). If it returns false (which means that
  697. the program P1 will not infect other programs), then the program P1 will
  698. infect other programs (the infect procedure will be executed, which will
  699. do it). Therefore the algorithm D is unable to give a correct result at
  700. least in this one case. Therefore no such algorithm exists, since we
  701. assumed that it will work in all cases.
  702.  
  703. There is no contradiction, however, if the function D itself does not
  704. stop after a finite number of steps. Therefore, we just proved that an
  705. algorithm, which is able to recognize whether a program will infect
  706. other programs, does not exist, or will run forever in some cases.
  707.  
  708. - -------cut here------
  709.  
  710. Well, the above is the proof, which Cohen gives. Have you noticed how
  711. similar it is to the proof of the halting problem? We just replaced
  712. "does not stop after a finite number of steps" with "will infect other
  713. programs" and did some other cosmetic changes... Cohen himself does not
  714. mention explicitely in his paper that his proof is constructed after the
  715. one of the halting problem, but the analogy is obvious.
  716.  
  717. But wait! Look at the two proofs again. Did we do the replacement
  718. everywhere? No! In the last paragraph of the second proof we are still
  719. speaking about programs, which to not stop after a finite number of
  720. steps... While assuming that the function D will not stop after a finite
  721. number of steps in some cases indeed removes the contradiction, a
  722. correct replacement will require that we assume that the function D
  723. itself has the side-effect to infect file, i.e. that it is a virus!
  724.  
  725. So, Fred Cohen's proof does not prove that detecting a virus by its
  726. appearance is undecidable! It only proves that if a universal virus
  727. detector exists, it will either run forever in some cases, or will be
  728. itself a virus...
  729.  
  730. Well, so what? Does this mean that we have to allow everybody to 
  731. write viruses, in hope that they'll found one, which is the universal 
  732. virus detector? Fortunately, no! The problem whether a program is a 
  733. virus or not, is still undecidable. However, proving it is a bit 
  734. more tricky...
  735.  
  736. In fact, Fred Cohen himself supplies a correct proof in his paper [3],
  737. without mentioning, however, that his first proof is wrong. In this
  738. paper he proves that the class of computer viruses is equivalent to the
  739. class of Turing machines, which always stop after a finite number of
  740. steps. And, since recognizing those by their appearance is undecidable
  741. (the halting problem), therefore, the recognition of computer viruses in
  742. the general case is undecidable either. However, everybody, who makes
  743. the effort to read and understand [3], will see that proving that is
  744. not that trivial at all...
  745.  
  746. Well, as I said, all the above proofs hold only for Turing machines.
  747. Solving the halting problem for finite automata is trivial, since they
  748. all stop after a finite number of steps by definition. Writing an
  749. universal virus detector for a finite automate should be just as
  750. trivial. It is obvious that the real computers are not Turing machines,
  751. since they have only a finite number of memory (the Turing machine has
  752. an endless from both sides tape, which can be used as memory).
  753.  
  754. I thought that the finite number of memory cells in the real computers
  755. implies that they are in fact finite automata. However, as Yisrael Radai
  756. has pointed to me in our private correspondence, if we have a
  757. civilization, which generates programs and supplies it to a computer
  758. with a finite number of memory cells, you still can get a computer with
  759. infinite number of programs... The question turned out to be of
  760. philosophycal matter.
  761.  
  762. I consulted a specialist in computational theory and here is what I was
  763. told. It seems that there are three kinds of infinity.
  764.  
  765. The first kind is the practical infinity - say a number like 10^100.
  766. Such number is infinite in practice, since it cannot exist - it is
  767. much, much larger than the estimated number of elementary particles in
  768. the Universe. Of course, the mathematics does not consider this as
  769. infinity at all. :-)
  770.  
  771. The second kind of infinity is e.g. a class, which has an infinite
  772. number of elements, but for which you have a determined rule or set of
  773. rules how to obtain the next element. A typical example is the class of
  774. natural numbers. There is infinite number of natural numbers, but you
  775. can always obtain the next element. It seems that the computer with
  776. finite munber of memory cells, combined with a civilization, which
  777. produces programs is an infinite computer of this class.
  778.  
  779. And, at last, there is the in
  780. Downloaded From P-80 International Information Systems 304-744-2253
  781.