× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



James H. H. Lampert wrote:
<<SNIP>>

At any rate, I would argue that the ability to disable a trigger
without removing it, precisely because it DOESN'T show up in a
PRTTRGPGM report, makes CHGPFTRG more dangerous than ADDPFTRG or
RMVPFTRG. So much so that I would say that it's the first example
I've ever encountered of an OS revision from IBM that CREATED a
security hole, rather than REMOVING one.

PRTTRGPGM is a feature of the /security component/ for which their reporting intent might purposely not include [maybe not of interest] in the status of the trigger; i.e. perhaps only the existence of its definition might be relevant to the intent of the report.? The help text does suggest that the command only "lists the programs which have been /defined as a trigger program/ for the physical files in the specified library." No mention of active\enabled nor operable\operative. If the output from the security report is in error, not useful [for lack of the trigger status], or for another concern the report is considered problematic, then that concern would best be reported to IBM.

I think in this case the PRTTRGPGM is simply the wrong tool for the job if status is not shown, but is required; full or changed report. I would suggest to use either a database interface such as query of SYSTRIGGERS catalog or the /where used/ interface [DSPFD] to review the trigger status, for details beyond just the definitional aspect of a trigger program being /associated with/ a file.

There is nothing about the existence of CHGPFTRG, by itself, that defeats the security of the database [file\data]. Either RNMM or OVRDBF command could enable some trickery with regard to the outcome of both direct & triggered I/O, just as could the [mis]use of CHGPFTRG. However the existence of any of those other commands also does not /create/ a security hole.

Think about it: you have a trigger program that, instead of just
propagating data, enforces some business rule. Maybe even one
required for compliance with the law. Somebody with a priv'd
account and malicious intentions goes in and quietly disables the
trigger. Suddenly, changes that would ordinarily be vetoed can
sail right through, and yet the only way anybody would notice
that the trigger isn't getting invoked would be if they either
(1) did a WRKOBJLCK on the trigger program, or (2) did a DSPFD on
the file, things they wouldn't do unless they suspected that the
trigger was being bypassed, strongly enough to disbelieve what
the PRTTRGPGM report says.

Think about it, the same issue exists for use of RMVPFTRG & then ADDPFTRG, by\or just replacing the existing trigger program, by the same privileged account, as accessed by the malicious person. The auditing and the file journal both log the /change trigger/ event, as well as logging both remove and add of a trigger. There is no assurance that any malicious actions would be generally preventable by a privileged user; there is only the ability to track the activity [in part, depending on how thorough the super-user was able to cover their tracks]. So if there is fear of misuse of CHGPFTRG, then there is a much bigger problem for both the other way(s) to effectively defeat a trigger and more importantly that the problem is actually for having entrusted nefarious person(s) with too much access.

IIRC CHGPFTRG came in v5r1 along with named triggers [required to enable its use], SQL triggers, and huge increase in the number of allowed triggers. I believe ADDPFTRG was originally limited to six triggers per file, one for each event [i\u\d] and time [before\after], prior to v5r1.

If the CHGPFTRG did not exist, then complaints would have led to the eventual implementation anyhow, for lack of ability to easily /temporarily/ bypass trigger program(s) on a file without having to remove and\or re-add some or all of the trigger(s) [in the proper order]. Typically the trigger bypass would be for batch\mass load or updates of data, from trusted or already validated data [perhaps by the same trigger on another file; merging its data]. If there is a file altered from CHAR(10) to CHAR(12) for an account number, and the account naming changes the first two bytes of the newer\longer field to be prefixed by '00', performing the trigger for each row updated by the statement SET ACCOUNTNO=CONCAT('00',ACCOUNTNO) is probably not very desirable; i.e. such that bypassing the trigger program is best effected by CHGPFTRG STATE(*DISABLED) before issuing that UPDATE statement affecting every row in the altered table.

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.