It's only possible to automate what can be formally described.

Unless a programmer conveniently comments his sections of "malicious" code as such, I can think of no criteria that would make "malicious" COBOL code (or code in any other language) readily distinguishable by manual or automatic scanning from normal complex business logic. Some coding practices jump out visually as "bad" because they are highly unstructured and and difficult to maintain, or because of repeated use of constructs that are known to be inefficient; but this only relates to programming competence, not malicious intent.

If the original program requirements specifications were so precise and complete as to leave nothing to the discretion of the programmer, then there might be some hope of verifying that everything in the actual code had a one-to-one relationship with the specifications - but then you would simply move the search for malicious intent from the source code to the design specifications, and in effect have the same problem.

Your best bet for catching malicious code is for 3rd-party review/testing/auditing of code by someone familiar with the intended function of the code and who understands what result fields and related manipulation are especially sensitive and deserve special close examination. It goes without saying that an application should not be accessing files or database tables that are unrelated to the functional specifications of the application, but that requires an understanding of the explicit and implicit requirements of the design, not just an examination of the code. Application design, implementation, and code analysis continue to be complex tasks requiring both art and science. There are good philosophical and logical reasons why after many decades of interest in automated programming it continues to prove impossible to eliminate humans from the programming design and implementation process.

Automation for detection of "malicious" code in the PC world - and we all know this malware detection is imperfect - is only possible because the definition has been narrowed considerably to (1) detection of code signatures unique to programs that have been found by empirical evidence to do bad things; (2)heuristic detection of programs that modify or access files and/or system data to which they should not have access. Security systems on MVS pretty well shut the door on these generic kinds of attacks.
   JC Ewing

Itschak Mugzach wrote:
I've tried iehiball many times in the past ;-)  There must be a way to
automate it.

On 8/11/08, Chase, John <[EMAIL PROTECTED]> wrote:
-----Original Message-----
From: IBM Mainframe Discussion List On Behalf Of Itschak Mugzach

I know some products that checks program complexity, and even
those who look into specific command usage. But this time I
am looking for a product to analyse mainframe traditional
language (Cobol, PLI, etc) for malicious code.
I have some ideas like the usage of string command, Input
that come outside a file record, etc.

What are you using to analyse your code?
IEHIBALL.

   -jc-
...


--
Joel C. Ewing, Fort Smith, AR        [EMAIL PROTECTED]

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to