Thirty-four vulnerabilities -- the majority of them critical -- have been identified in multiple versions of Oracle's database server.
"Most of the flaws are critical," said David Litchfield, a researcher at UK-based NGSSoftware, whose company discovered the flaws. "One allows an attacker to gain control of the database server without a userID or password. Others allow low-privileged users (i.e. those that do have a userID and password) to gain complete control of the database server."
Litchfield discussed the vulnerabilities in very broad terms at last week's Black Hat Briefings in Las Vegas. He refused to provide specific detail on the flaws because Oracle hasn't released patches yet. Generally, the flaws have to do with the Procedural Language/Structured Query Language and its triggers.
PL/SQL is Oracle's extension to standard SQL and is programmable like T-SQL in the Microsoft world, said Litchfield. It's used to create stored procedures, functions, packages (collections of procedures and functions), triggers and objects, and extends external procedure functionality.
PL/SQL executes with the privileges of the definer; a procedure owned by SYS executes with SYS privileges. A procedure owned by SYS but called by SCOTT executes with the privileges of SCOTT (analogous to Suid programs in the *nix world). It acts as a proxy, passing requests to the database server and allowing PL/SQL to execute inside the database server.
To protect against PL/SQL injection, Litchfield recommends using BIND variables and validating input.
"10g, 8i and 9i are all vulnerable so anyone running any of these versions of Oracle should pay attention when the patches come out," Litchfield said. "Oracle 7 is also vulnerable but is no longer supported by Oracle so no patches for this version will be made available."