It's best to avoid RACF exits, but if you must have them, mitigate their risk.
Editor's note: This article is an excerpt from Chapter 16 of IBM Mainframe Security.
A RACF exit is an optional facility provided in RACF to perform special RACF processing, above and beyond what is offered in standard RACF. RACF exits can overrule decisions made by standard RACF processing. They provide a means for an installation to tailor RACF processing to suit its own unique needs.
Not all installations have special processing requirements. For most, the standard RACF facilities provided are sufficient. In that case, the question of implementing RACF exits does not arise. Some installations, however, need non-standard security features, in which case they would need to implement RACF exits. Here are two examples:
- The installation wants to implement more stringent password controls, above and beyond what RACF provides.
- The installation wants to pre-process (or post-process) the decision taken by RACF, whether to grant or deny an access.
While IBM provides the RACF exit provision, it is up to the installation to write and implement these exits.
What Is the Risk?
RACF exits are double-edged swords. Used properly, they can enhance security at an installation. If they are misused or if proper safeguards are not instituted, however, the repercussions can be costly. For example, the RACF pre-processing and post-processing exits mentioned above can override most of the controls you have put in place by means of RACF profiles.
Sometimes RACF exits are written to provide a short-term solution to a problem, but when the need is gone, they might still remain in place.
The biggest problem with RACF exits is that, if they are not properly implemented, they can give you a false sense of security. You might look at your RACF profiles and think your business data is adequately protected, while unknown to you, the RACF exits could be negating some or all aspects of your security specifications.
All the security you've defined in RACF profiles might mean nothing if an exit is programmed to bypass some aspect of security-checking.
Exits are usually written by system programmers in Assembler language, a language not well-known to security practitioners. Exits are also maintained by system programmers. This often means that the security department is left out of the loop when it comes to RACF exits.
How Do You Mitigate This Risk?
To mitigate this risk, you first need to find out whether your installation has any RACF exits in place. To do this, run the DSMON RACF Exits report. For more information about DSMON, refer to chapter 3, "The Data Security Monitor (DSMON)."
Here is a partial sample DSMON RACF Exits report:
RACF EXITS REPORT
EXIT MODULE MODULE
Here we see that the exit ichnxo0 is in place.
If you find any RACF exits in this report, you need to do the following for each exit to mitigate the risk factors:
- Find out from the system programmers what the exit does. Make sure it is in line with corporate security policy and practices.
- Periodically re-evaluate the need for having the exit. Ask yourself whether the exit is still relevant. It is possible that at one time it played a useful security role, but now the functions provided by it are available in standard RACF. The exit might have outlived its usefulness.
For example, you might find that some of the stringent password controls your installation requires were not available by normal RACF means at one time. So, your installation might have written an exit to provide those additional features. Those features might now be available in RACF, however, making the exit obsolete.
Another possibility is that an exit might have been meant to be on the system temporarily, but it is still in place. As an example, if the installation has converted from some other security software to RACF, the installation might have had to implement a temporary bypass to make security work under RACF. Over time, the staff might have overlooked re-examining the temporary aspect of this exit, and you might still have it.
In such cases, removing this exit will remove the risk associated with its misuse.
- If the exit is relevant, periodically compare the length, or "size," of the exit between two runs of the DSMON report to ensure that the module length hasn't changed without your knowledge. A change in the module length generally indicates the exit has changed. That is why the report above shows the length. Note that the length is given in hexadecimal.
- Make sure management is aware of what is modified (or enhanced) over and above what RACF provides.
- Document what the exit does. Make sure changes to the exit are made only after management approval.
Ideally, you should not have any RACF exits in place. Try to implement whatever security you desire using RACF's normal capabilities. RACF exits, once they are entrenched, are difficult to remove. It is best not to introduce them in the first place. If you must have them, however, do not neglect to mitigate their risk factors, as discussed in this chapter.