5.1.1.5 Ensure 'EXECUTE' is revoked from 'PUBLIC' on 'Job Scheduler' Packages

Information

As described below, Oracle Database PL/SQL 'Job Scheduler' packages - DBMS_SCHEDULER and DBMS_JOB - provide APIs to schedule jobs. The user PUBLIC should not be able to execute these packages.

The Oracle database DBMS_SCHEDULER package schedules and manages the database and operating system jobs. The user PUBLIC should not be able to execute DBMS_SCHEDULER.

The Oracle database DBMS_JOB package schedules and manages the jobs sent to the job queue and has been superseded by the DBMS_SCHEDULER package, even though DBMS_JOB has been retained for backwards compatibility. The user PUBLIC should not be able to execute DBMS_JOB.

Rationale:

As described below, Oracle Database PL/SQL 'Job Scheduler' packages - DBMS_SCHEDULER and DBMS_JOB - should not be granted to the user PUBLIC.

Use of the DBMS_SCHEDULER package could allow an unauthorized user to run database or operating system jobs.

Use of the DBMS_JOB package could allow an unauthorized user to disable or overload the job queue. It has been superseded by the DBMS_SCHEDULER package.

Solution

To remediate this setting, execute the following SQL statement, keeping in mind if this is granted in both container and pluggable database, you must connect to both places to revoke.

REVOKE EXECUTE ON DBMS_JOB FROM PUBLIC;
REVOKE EXECUTE ON DBMS_SCHEDULER FROM PUBLIC;

See Also

https://workbench.cisecurity.org/files/2741