A nuclear bomb has gone off in security land.
SQLite is a free, public domain relational database management system which is contained in a C programming library. It is widely used across the computing spectrum, including apps and the underlying operating systems that these applications run on such as Unix flavors, macOS and Android.
The database ends up part of the resultant program, and is not the kind that works by client-server interactions.
Now, the Tencent Blade Team from China has found a massive bug within SQLite. The bug can cause remote code execution, leaks of program memory and program crashes.
The Tencent researchers note:
Magellan is a remote code execution vulnerability […] that exists in SQLite. As a well-known database, SQLite is widely used in all modern mainstream operating systems and software, so this vulnerability has a wide range of influence. […] We will not disclose any details of the vulnerability at this time, and we are pushing other vendors to fix this vulnerability as soon as possible.
One good thing: Tencent researchers note that they have not yet seen exploitation of this bug in the wild.
The possible attack surface is enormous. The library has been used in Internet of Things devices -- such as Google Home -- desktop software, web browsers -- Google Chrome, Vivaldi, Opera, Brave -- and many other apps and programs.
Tencent notes that the vulnerability can be triggered remotely by something comparable to accessing a particular web page in a browser. It can crash Chrome 70s renderer, according to a demo.
Dr. D. Richard Hipp, the developer of SQLite, is more reserved in how the bug will affect things. He noted in a post on the Hacker News blog: "The vulnerability only exists in applications that allow a potential at-tacker to run arbitrary SQL. If an application allows that, it is usually called an 'SQL Injection' vulnerability and is the fault of the application, not the database engine. The one notable exception to this rule is WebSQL in Chrome."
Notably, Hipp does not dispute the existence of the problem itself -- only what to call it.
It appears from first reports that the WebSQL API is involved in the vulnerability. Neither Firefox or Edge support this API, and it seems to be SQLite-query specific. That means that one would need to access internal tables to activate the bug. However, Firefox has an external SQLite database associated with it, so perhaps a wily researcher will find some way to make Firefox vulnerable. But, so far Firefox has made no mention of this bug, and and it has revised things since the new version of SQLite came out.
The Safari browser doesn't have the API enabled, so it is not vulnerable.
SQLite 3.26.0 and Chrome 71 do fix the underlying problem -- along with an updated Chromium -- since Tencent told these vendors about the problem in November. But that revision to SQLite has not yet been incorporated in current apps or systems. (See Google Chrome 71: Bugs Squashed & New Ways to Block 'Abusive Experiences'.)
Doing this kind of library revision to a program can cause other sorts of problems, and it is usually undertaken only when absolutely necessary. In this case, it will need to be.
Security researchers have already begun to try and reverse-engineer the bug, from the information SQLite released when it fixed the problem. Full exploits will not be that long in coming.
The effect of this bug will force many kinds of differing programs to need maintenance. Anything that allows arbitrary SQLite execution within the program is at risk.
— Larry Loeb has written for many of the last century's major "dead tree" computer magazines, having been, among other things, a consulting editor for BYTE magazine and senior editor for the launch of WebWeek.