Serious Oracle Flaw Revealed; Patch Coming
GMGruman writes "A bug in Oracle Database that could take down large databases — or let a hacker do so — has been found, and Oracle promises a patch later today. When InfoWorld first heard of the bug two months ago, its investigation revealed how dangerous this bug could be, and after convincing Oracle to address the issue, InfoWorld held the news until a patch was available, so hackers could not exploit the bug in the meantime. Paul Venezia details just how this bug exposes companies to the possibility of databases going offline, and Eric Knorr asks Oracle users to help test the patch in their complex environments. (InfoWorld's tests in simpler environments show the patch works there.)"
...brought to you by InfoWorld! Submitted by InfoWorld! Seriously, how much is /. getting behind the scenes from the various IT rags that plaster the front page?
I'm sure "SlashdotMedia" will improve on all the wonders that Dice Holdings blessed us all with
That sounds kind of ominous.
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
I assume they're referring to:
http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
My mystification is what is the venn diagram intersection of mysql server, virtualbox, and oracle 11G? Without any details I'm guessing a package signing key got owned?
"Science flies us to the moon. Religion flies us into buildings." - Victor Stenger
oops
The only reason Oracle has this flaw is because Microsoft's DB lineup hardly forces them to compete from a security perspective.
I wonder why nowadays they use an incrementing limited integer number (SCN), subject to the described bugs, instead of a worldwide consistent and unlimited number like the TIME. The synchronization of the databases respective times can always occur with the NTP service (http://en.wikipedia.org/wiki/Network_Time_Protocol).
Who exposes their Oracle DB server to the outside world anyway? Surely its just accessible from the servers that need it. Anyone know any public Oracle DB servers? Lemme just scan the interwebs...
Of course if your front-end gets pwned then you don't want your DB server getting rooted, but hey, they got your front end server... Hopefully that will only have restricted access to the databases it needs, so an Oracle remote exploit here could let an attacker get to anything on the server...
Either way up, not a good thing... Has Larry sold his MiG yet?
"So hackers could not exploit the bug in the meantime." Only the hackers (crackers?) that don't already know about it, and have no way of learning from their black-hat friends.
Lets take down all corporate databases on the planet! Winner gets a ...
The issue seems to be fundamentally down to someone with DBA rights on a database issuing "ALTER DATABASE BEGIN BACKUP" which then causes an "interlinked" database to also increment its SCN; anyone know what the "interlinking" is? I'm guessing DB links but it's a bit vague on details and high on the scaremongering... FWIW, the ALTER DATABASE command will require DBA rights to implement, so I'm not seeing the apocalypse that Infoworld is punting; if you've got DBA rights, you can do lots of stuff like drop user, drop table etc, etc, etc...
Spent thousands of dollars per CPU to Oracle for its *BUGGY* Database Manager Oracle.
And now, my DDBB-based services are in risk of security's menaces!!!.
My DDBB-based DATA maybe hacked! erased! corrupt! incomplete! or partially destroyed!
My DATA is financial, many millions of dollars could be lost!!!.
What deception!!!
JCPM
As usual with Oracle, the patch will be a 4GB download. Considering how much they charge for that junk, it's amazing those morons haven't figured out how to just simply use rpm/yum or apt.
Ca 1997 I did telnet oracleserver.myemployer.com 1521. Then typed some random characters. That ceased the connection but made the telephone ring with the DBA asking me what I did to Oracle, as it crashed. Of couse, I have zero knowledge of Oracle's binary protocol nor did I enter any passwords. Maybe the Ora listener is now a bit more robust, but then it was utter shite.
We have been battling this since many a months now. Oracle's solution? set "_max_reasonable_scn_rate"=16384
No Sig for you.!
Information on the System Change Number (SCN) and how it is used in the Oracle Database [ID 1376995.1]
Modified 17-JAN-2012 Type BULLETIN Status PUBLISHED
Applies to:
Oracle Server - Enterprise Edition - Version: 10.1.0.5 to 11.2.0.3 - Release: 10.1 to 11.2
Information in this document applies to any platform.
Purpose
Read this article to get a high level overview of how a logical timestamp, called the System Change Number (SCN), is used to order database events, and how the advance of this logical timestamp is constrained.
Scope and Application
This document is intended for Oracle DBAs.
Information on the System Change Number (SCN) and how it is used in the Oracle Database
The system change number (SCN) is a logical, internal timestamp used by the Oracle Database. SCNs order events that occur within the database, which is necessary to satisfy the ACID properties of a transaction.
The database uses SCNs to query and track changes. For example, if a transaction updates a row, then the database records the SCN at which this update occurred. Other modifications in this transaction typically have the same SCN. When a transaction commits, the database records an SCN for this commit. Multiple transactions that commit at the same time may share the same SCN.
SCNs occur in a monotonically increasing sequence, and there is a very large upper limit to how many SCNs an Oracle Database can use - that limit is currently 281 trillion, or specifically 281,474,976,710,656 SCN values.
Given that there is an upper limit, it is important that any given Oracle Database does not run out of available SCNs. The Oracle Database uses a time based rationing system to ensure that this does not happen.
At any point in time, the Oracle Database calculates a "not to exceed" limit for the number of SCNs a database can have used, based on the number of seconds elapsed since 1988, multiplied by 16,384. This is known as the database's current maximum SCN limit. Doing this ensures that Oracle Databases will ration SCNs over time, allowing over 500 years of data processing for any Oracle Database.
The difference between the current SCN the database is using, and the "not to exceed" upper limit, is known as the SCN headroom. For almost all Oracle Databases, this headroom is constantly increasing every second.
However, Oracle has determined that some software bugs could cause the database to attempt to exceed the current maximum SCN value (or get closer to the limit than was warranted).
Generally if the database does try to exceed the current maximum SCN value, the transaction that caused this event would be cancelled by the database, and the application would see an error. The next second the limit increases, so typically the application then continues with a slight hiccough in processing. However, in some very rare cases, the database does need to shut down to preserve its integrity. In no cases is data lost or corrupted.
Similar to how clocks are kept synchronized in a computer network, when two databases communicate with each other over a database link, they synchronize their SCNs by picking the largest SCN in use by the two. So in some cases, databases experienced rapidly decreasing SCN headroom not because of a bug in that specific database, but because the bug was active in one or more of the databases that database was connected to. Since the database always rejects SCNs that exceed the current maximum SCN, the provision of being able to run Oracle Databases for more than 500 years was not affected in any of the cases.
All the associated bugs have been fixed in the January 2012 CPU (and associated PSU). The same fixes are also available in the database Patchset Update (PSU) and the latest Oracle Exadata and Windows bundled patches.
Some customers expressed concerns that they may be getting closer to the current maximum SCN limit faster than the data processing they are
But that's just the point. Third normal form requires just one basket for all the eggs! Any DBA worth their salt knows this.
I'm old enough to remember when discussions on Slashdot were well informed.
This has the smell of Lamport's bakery algorithm.
The problem with the bakery algorithm is its assumption that you have unbounded integers.
From Lamport's comment about "On Self-stabilizing Systems":
A distributed ratcheting attack against the backery algorithm is very interesting to nerds in the know. Someday I'd like to sue someone who interrupted me with a nuisance phone call for the value of what I was just about to write down. Lamport could argue for 8 figures.
Or, actually, a family of them and at the level of basic architecture.
Get into a low level database via some poorly secured login (or conceivably a SQL injection. Maybe. Not clear if that's possible) and take down any DBs that are linked just by snapshots.
And the recovery can be so bad as rebuilding every single linked instance (and don't miss one, or you fail.) and reimporting the data.
Ouch, ouch, ouch. I can think of all sorts of mayhem that could be done with this by someone with destructive intent.
They say it's only a problem for large installs, but let me assure you there are a lot of places with 3 or 4 linked instances that can't easily withstand the downtime for complete rebuilds of everything.
Let alone that have DBAs cluefull enough to immediately figure out the drastic steps need to recover without several failed first tries.
And, the kicker, if you have ancient legacy systems hooked up, they're still vulnerable as there won't be patches for it. And, though the headroom gets increased by the fix, the basic flaw is still there if you have linked unpatched systems.
Now the question is if there's any way to unlink the SCNs and still have it do the same function. Or at least make it so one DB can't lie about what its SCN is.
So at this moment I've scanned through all of the comments and haven't seen anyone who actually works with a sizable Oracle deployment make any sort of informative comment. So, Oracle DBA's, is this silly InfoWorld fear mongering or something you and your organization (or a larger org) should actually be seriously concerned about? To me it seems like under the right conditions this could bring an entire org's OracleDB structure down, but then again, I've never actually worked with it in production....
AT&T had a related problem in 1999: http://www.askmaclean.com/scn-may-jump-in-a-distributed-transaction-with-dblink.html
you kidding right? Hah Oracle is
swiss cheese compared to MS SQL
If you're worried... then check out your SCN with this SQL:
su - oracle
. oraenv
sqlplus "/ as sysdba"
column GET_SYSTEM_CHANGE_NUMBER format 999,999,999,999,999,999,999
select DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER from dual;
Millions or Billions... no problem.
If you're starting to get close to 281 Trillion (actually 281,474,976,710,656)... time to panic. Remember, that's a US Trillion... not a UK Trillion:
Scott/tiger
nfoWorld is a publisher.
Oracle is a Business ... with people who know how to code, i.e. program in the old days addage.
So, lets get this straight. InforWorld ... a publisher with no known ability or abilities of its employees as actual programmers now asserts that Oracle has a "Bug" and heafty one at that!
Oh .. Now I get it! The InforWorld "Scientists" discovered a "Typo" in one of the schema of Oracle DB! Oh ... and this ... Type ... wreaks all havoc on all things Oracle.
Hardy har har.
Me thinks the "response" from Oracle to InfoWorld will be an attonery with papers in hand explaining the Oracle lawsuite against InforWorld.
At which point InfoWorld Execs will shit in their pants and cry like babies at the throught of having their pinus' cut off!
Ta Ta
Can't break it. Can't break in.
SCN is a number that gets increased *per transaction*, so is in a way related to time, but never in a 1-on-1 relation.
Coz eternity my friend, is a long *ing time.
MongoDB is web scale! :P