553 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			553 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html><head>
 | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8">
 | |
| <link href="sqlite.css" rel="stylesheet">
 | |
| <title>Vulnerabilities</title>
 | |
| <!-- path= -->
 | |
| </head>
 | |
| <body>
 | |
| <div class=nosearch>
 | |
| <a href="index.html">
 | |
| <img class="logo" src="images/sqlite370_banner.gif" alt="SQLite" border="0">
 | |
| </a>
 | |
| <div><!-- IE hack to prevent disappearing logo --></div>
 | |
| <div class="tagline desktoponly">
 | |
| Small. Fast. Reliable.<br>Choose any three.
 | |
| </div>
 | |
| <div class="menu mainmenu">
 | |
| <ul>
 | |
| <li><a href="index.html">Home</a>
 | |
| <li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
 | |
| <li class='wideonly'><a href='about.html'>About</a>
 | |
| <li class='desktoponly'><a href="docs.html">Documentation</a>
 | |
| <li class='desktoponly'><a href="download.html">Download</a>
 | |
| <li class='wideonly'><a href='copyright.html'>License</a>
 | |
| <li class='desktoponly'><a href="support.html">Support</a>
 | |
| <li class='desktoponly'><a href="prosupport.html">Purchase</a>
 | |
| <li class='search' id='search_menubutton'>
 | |
| <a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="menu submenu" id="submenu">
 | |
| <ul>
 | |
| <li><a href='about.html'>About</a>
 | |
| <li><a href='docs.html'>Documentation</a>
 | |
| <li><a href='download.html'>Download</a>
 | |
| <li><a href='support.html'>Support</a>
 | |
| <li><a href='prosupport.html'>Purchase</a>
 | |
| </ul>
 | |
| </div>
 | |
| <div class="searchmenu" id="searchmenu">
 | |
| <form method="GET" action="search">
 | |
| <select name="s" id="searchtype">
 | |
| <option value="d">Search Documentation</option>
 | |
| <option value="c">Search Changelog</option>
 | |
| </select>
 | |
| <input type="text" name="q" id="searchbox" value="">
 | |
| <input type="submit" value="Go">
 | |
| </form>
 | |
| </div>
 | |
| </div>
 | |
| <script>
 | |
| function toggle_div(nm) {
 | |
| var w = document.getElementById(nm);
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| }else{
 | |
| w.style.display = "block";
 | |
| }
 | |
| }
 | |
| function toggle_search() {
 | |
| var w = document.getElementById("searchmenu");
 | |
| if( w.style.display=="block" ){
 | |
| w.style.display = "none";
 | |
| } else {
 | |
| w.style.display = "block";
 | |
| setTimeout(function(){
 | |
| document.getElementById("searchbox").focus()
 | |
| }, 30);
 | |
| }
 | |
| }
 | |
| function div_off(nm){document.getElementById(nm).style.display="none";}
 | |
| window.onbeforeunload = function(e){div_off("submenu");}
 | |
| /* Disable the Search feature if we are not operating from CGI, since */
 | |
| /* Search is accomplished using CGI and will not work without it. */
 | |
| if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
 | |
| document.getElementById("search_menubutton").style.display = "none";
 | |
| }
 | |
| /* Used by the Hide/Show button beside syntax diagrams, to toggle the */
 | |
| function hideorshow(btn,obj){
 | |
| var x = document.getElementById(obj);
 | |
| var b = document.getElementById(btn);
 | |
| if( x.style.display!='none' ){
 | |
| x.style.display = 'none';
 | |
| b.innerHTML='show';
 | |
| }else{
 | |
| x.style.display = '';
 | |
| b.innerHTML='hide';
 | |
| }
 | |
| return false;
 | |
| }
 | |
| </script>
 | |
| </div>
 | |
| <div class=fancy>
 | |
| <div class=nosearch>
 | |
| <div class="fancy_title">
 | |
| Vulnerabilities
 | |
| </div>
 | |
| <div class="fancy_toc">
 | |
| <a onclick="toggle_toc()">
 | |
| <span class="fancy_toc_mark" id="toc_mk">►</span>
 | |
| Table Of Contents
 | |
| </a>
 | |
| <div id="toc_sub"><div class="fancy-toc1"><a href="#executive_summary">1. Executive Summary</a></div>
 | |
| <div class="fancy-toc1"><a href="#about_cves">2. About CVEs</a></div>
 | |
| <div class="fancy-toc2"><a href="#a_separate_sql_injection_vulnerability_is_usually_required">2.1. A separate SQL injection vulnerability is usually required</a></div>
 | |
| <div class="fancy-toc2"><a href="#defense_against_dark_arts">2.2. Defense Against Dark Arts</a></div>
 | |
| <div class="fancy-toc2"><a href="#the_sqlite_developer_policy_toward_cves">2.3. The SQLite Developer Policy Toward CVEs</a></div>
 | |
| <div class="fancy-toc1"><a href="#status_of_recent_sqlite_cves">3. Status Of Recent SQLite CVEs</a></div>
 | |
| </div>
 | |
| </div>
 | |
| <script>
 | |
| function toggle_toc(){
 | |
| var sub = document.getElementById("toc_sub")
 | |
| var mk = document.getElementById("toc_mk")
 | |
| if( sub.style.display!="block" ){
 | |
| sub.style.display = "block";
 | |
| mk.innerHTML = "▼";
 | |
| } else {
 | |
| sub.style.display = "none";
 | |
| mk.innerHTML = "►";
 | |
| }
 | |
| }
 | |
| </script>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| <h1 id="executive_summary"><span>1. </span>Executive Summary</h1>
 | |
| 
 | |
| <ul>
 | |
| <li><p>
 | |
| CVEs about SQLite probably do not apply to your use of SQLite.
 | |
| 
 | |
| </p></li><li><p>
 | |
| All historical vulnerabilities reported against SQLite require at least
 | |
| one of these preconditions:
 | |
| </p><ol type="1">
 | |
| <li><p>
 | |
| The attacker can submit and run arbitrary SQL statements.
 | |
| </p></li><li><p>
 | |
| The attacker can submit a maliciously crafted database file to the
 | |
| application that the application will then open and query.
 | |
| </p></li></ol>
 | |
| 
 | |
| </li><li><p>
 | |
| Few real-world applications meet either of these preconditions, and hence
 | |
| few real-world applications are vulnerable, even if they use older
 | |
| and unpatched versions of SQLite.
 | |
| 
 | |
| </p></li><li><p>
 | |
| The SQLite development team fixes bugs promptly,
 | |
| usually within hours of discovery.  New releases of SQLite
 | |
| are issued if the bug seems likely to impact real-world
 | |
| applications.
 | |
| 
 | |
| </p></li><li><p>
 | |
| Grey-hat hackers are rewarded based on the number and severity of 
 | |
| CVEs that they write.  This results in a proliferation of CVEs that
 | |
| have minor impact, or no impact at all, but which make
 | |
| exaggerated impact claims.
 | |
| 
 | |
| </p></li><li><p><a name="notnew"></a>
 | |
| Very few CVEs written about SQLite are real vulnerabilities in the 
 | |
| sense that they do not give any new capabilities to an attacker.
 | |
| Consider:
 | |
| </p><ol type="a">
 | |
| <li><p>
 | |
|     Almost all CVEs written against SQLite require the ability to
 | |
|     inject and run arbitrary SQL.
 | |
| </p></li><li><p>
 | |
|     The advertised consequence of most CVEs is "denial of service",
 | |
|     typically by causing a crash through a NULL pointer dereference or
 | |
|     a division by zero, or similar.
 | |
| </p></li><li><p>
 | |
|     But if an attacker can already run
 | |
|     arbitrary SQL, they do not need a bug to cause a denial of service.
 | |
|     There are plenty of perfectly legal and valid SQL statements
 | |
|     that will consume unlimited CPU, memory, and disk I/O in order
 | |
|     to create a denial-of-service without requiring help from bugs.
 | |
| </p></li><li><p>
 | |
|     Hence, the mere fact that an attacker has a way to inject and run
 | |
|     arbitrary SQL is in and of itself a denial-of-service attack.  That
 | |
|     the arbitrary SQL might also tickle a bug in SQLite and cause a
 | |
|     crash is not a new vulnerability.
 | |
| </p></li></ol>
 | |
| 
 | |
| </li><li><p>
 | |
| The SQLite developers do not write CVEs.  Any CVEs you find on
 | |
| SQLite are generated by third-parties, often without any input from the
 | |
| core developers.  A common scenario is that someone will report a bug in
 | |
| SQLite, which will promptly be fixed, then weeks later a CVE for that bug will
 | |
| appear, unbeknownst to the developers.
 | |
| 
 | |
| </p></li><li><p>
 | |
| You should not assume that a CVE about
 | |
| SQLite contains authoritative information.
 | |
| CVEs often contain inaccuracies.
 | |
| The SQLite developers have attempted to add clarifications and
 | |
| corrections to CVEs about SQLite, but without success.
 | |
| 
 | |
| </p></li></ul>
 | |
| 
 | |
| <h1 id="about_cves"><span>2. </span>About CVEs</h1>
 | |
| 
 | |
| <p>CVEs ("Common Vulnerabilities and Exposures") are reports of software
 | |
| bugs that might allow a system to be hacked.  The idea
 | |
| behind CVEs is sound.  They provide a common naming scheme whereby 
 | |
| software bugs that might compromise information security can be easily
 | |
| tracked.
 | |
| 
 | |
| </p><p>While the original idea being CVEs is sound, the current processes for
 | |
| creating and managing CVEs are inadequate.  There are countless grey-hat
 | |
| hackers running fuzzers against a wide-variety of open-source software
 | |
| products (SQLite as well as many others) and writing up CVEs against
 | |
| any problems they find.  The grey-hats are rewarded, sometimes with
 | |
| prestige and sometimes financially, by the number and severity of
 | |
| the CVEs they write.  This incentive results in a proliferation
 | |
| of CVEs which are often not well-vetted and which can have exaggerated
 | |
| impact claims.  The quality-control procedures for CVEs are unable
 | |
| to cope with this flood of inputs, making it difficult to correct
 | |
| exaggerated, misleading, omitted, or inaccurate claims.
 | |
| 
 | |
| </p><p>This is not to say that CVEs are useless.  CVEs do still (mostly)
 | |
| report actual bugs.  But in most cases the bugs are not true vulnerabilities,
 | |
| in the sense that they do not contribute to data loss or compromise
 | |
| in and of themselves.
 | |
| It is good that bugs are reported and fixed.  But not every bug is
 | |
| accessible from every application.  In the case of SQLite, most of the
 | |
| bugs reported by CVEs are inaccessible in most applications.  Upgrading
 | |
| to the latest version of SQLite is always a good plan, but it need not
 | |
| be an emergency just because an anonymous grey-hat on the internet
 | |
| wrote up a CVE.
 | |
| 
 | |
| </p><h2 id="a_separate_sql_injection_vulnerability_is_usually_required"><span>2.1. </span>A separate SQL injection vulnerability is usually required</h2>
 | |
| 
 | |
| <p>
 | |
| Other C-libraries that process complex structured inputs will
 | |
| routinely be asked to deal with unvetted inputs from untrusted
 | |
| sources.  Libraries like libjpeg, or libzip, or OpenSSL are
 | |
| handed input streams that come directly from potentially hostile
 | |
| agents.
 | |
| 
 | |
| </p><p>
 | |
| But database engines like SQLite are usually not this way.
 | |
| The SQL scripts that are passed into SQLite come from the
 | |
| (trusted) application itself, not from an attacker.  Sometimes
 | |
| applications contain bugs by which an external attacker can
 | |
| trick the application into sending SQL of the attackers design
 | |
| into the database engine.  This is a separate bug in the
 | |
| application called an
 | |
| <a href="https://en.wikipedia.org/wiki/SQL_injection">SQL Injection
 | |
| vulnerability</a>.  Since SQL text is executable code, an
 | |
| SQL Injection vulnerability is actually a special case of a
 | |
| <a href="https://en.wikipedia.org/wiki/Arbitrary_code_execution">Remote
 | |
| Code Execution (RCE) vulnerability</a>.  An SQL Injection is perhaps not
 | |
| quite as bad as other kinds of RCEs because,
 | |
| while SQL is a powerful language, it is not as convenient
 | |
| for crafting an exploit as Python or shell script or raw machine code.
 | |
| Nevertheless, an SQL Injection is a serious problem.
 | |
| 
 | |
| </p><p>
 | |
| Most CVEs written about SQLite assume that the attacker is
 | |
| able to run arbitrary SQL scripts in SQLite.  In most applications,
 | |
| this means that there must first be an SQL Injection vulnerability
 | |
| that allows the attacker to inject the malicious SQL.
 | |
| 
 | |
| </p><p>
 | |
| A few applications do allow untrusted SQL scripts received from
 | |
| potentially hostile agents to be run direct in SQLite.  The main
 | |
| example of this is the Chrome and Safari web browsers, which allow
 | |
| an anonymous web page to run SQL using the WebSQL feature of Javascript.
 | |
| This is done inside a sandbox with tightly controlled constraints on
 | |
| resources, lest the SQL script try to soak up all available memory
 | |
| or CPU cycles in a denial-of-service attack.  Chrome and Safari
 | |
| have the infrastructure in place to allow a hostile agent to run
 | |
| code which does not harm or compromise the rest of the machine.
 | |
| They have to, as they also run Javascript which could, if not
 | |
| tightly controlled, do even more damage than unrestrained SQL.
 | |
| Apart from Chrome and Safari, no applications known to the
 | |
| SQLite developers deliberately allows an anonymous remote agent
 | |
| to run arbitrary SQL text.
 | |
| 
 | |
| </p><p>However, most CVEs written against SQLite flippantly assume
 | |
| that an attacker is free to run any arbitrary SQL in the database
 | |
| engine.  So to a good approximation, this means most CVEs
 | |
| written against SQLite really only apply to SQLite as it is
 | |
| used in Chrome and Safari.  Or, in other words, most CVEs
 | |
| for SQLite do not apply to you unless you are one of the
 | |
| developers of Chrome or Safari.
 | |
| 
 | |
| </p><h2 id="defense_against_dark_arts"><span>2.2. </span>Defense Against Dark Arts</h2>
 | |
| 
 | |
| <p>
 | |
| Most applications can use SQLite without having to worry about
 | |
| bugs in obscure SQL inputs.  If the application controls
 | |
| the SQL, and the application is not deliberately trying to break
 | |
| SQLite, then everything should just work.
 | |
| It is not necessary to have the latest patched version of SQLite.
 | |
| Any older version should work just fine.
 | |
| 
 | |
| </p><p>
 | |
| However, there are some occasions where an application does need
 | |
| to be able to safely run untrusted SQL. The SQLite developers work hard
 | |
| to make SQLite safe for this purpose, though there are occasional
 | |
| slip-ups.  It is good to keep up-to-date with the latest patches
 | |
| in this case.  The separate <a href="security.html">defense against dark arts</a> document
 | |
| contains additional suggestions that can help prevent zero-day
 | |
| attacks in cases where SQLite is given inputs that come directly
 | |
| from untrusted sources. 
 | |
| 
 | |
| </p><h2 id="the_sqlite_developer_policy_toward_cves"><span>2.3. </span>The SQLite Developer Policy Toward CVEs</h2>
 | |
| 
 | |
| <p>SQLite developers fix all bugs in SQLite as soon as they are reported,
 | |
| usually within a few hours.  The fixes are immediately available on the
 | |
| <a href="https://sqlite.org/src/timeline">public SQLite source tree</a>.
 | |
| If a bug seems like it might cause problems for existing applications,
 | |
| a new patch release for SQLite will be issued.
 | |
| 
 | |
| </p><p>However, the SQLite developers do not track CVEs.  There are 
 | |
| various reasons for this:
 | |
| 
 | |
| </p><ol>
 | |
| <li><p>
 | |
| The developers often do not find out about CVEs until long after the
 | |
| bug is fixed.  You can see this by the fact that many CVEs reference the
 | |
| bug fix in their initial report.
 | |
| 
 | |
| </p></li><li><p>
 | |
| CVEs are a low-quality source of information about bugs in SQLite
 | |
| that are likely to affect most applications.
 | |
| 
 | |
| </p></li><li><p>
 | |
| Almost all bugs reported by CVEs are just bugs and not
 | |
| true vulnerabilities.  Claiming that they are vulnerabilities is
 | |
| stretching the meaning of the word "vulnerability" and the SQLite
 | |
| developers do not wish to participate in that deception.
 | |
| 
 | |
| </p></li><li><p>
 | |
| The developers have no editorial influence on the content of CVEs,
 | |
| and they do not like to be controlled by groups in which they have
 | |
| no voice.
 | |
| </p></li></ol>
 | |
| 
 | |
| 
 | |
| <a name="cvetab"></a>
 | |
| 
 | |
| <h1 id="status_of_recent_sqlite_cves"><span>3. </span>Status Of Recent SQLite CVEs</h1>
 | |
| 
 | |
| <p>Though the SQLite developers do not consider CVEs to be a reliable
 | |
| source of information about bugs in SQLite, they recognize that many
 | |
| groups, and especially small teams working at the bottom of tall
 | |
| bureaucracies, sometimes need to track CVEs, whether they are useful
 | |
| or not.  To aid in this chore, the following table of recent CVEs
 | |
| affecting SQLite is provided.
 | |
| 
 | |
| </p><p>If you notice new CVEs associated with SQLite that are not in
 | |
| the table below, please bring them to the attention of the developers
 | |
| on the <a href="https://sqlite.org/forum/about">SQLite Forum</a> so they can
 | |
| be added.
 | |
| 
 | |
| </p><table border="1" cellpadding="5" cellspacing="0" style="margin-left:5ex;">
 | |
| <thead>
 | |
| <tr>
 | |
| <th valign="bottom">CVE Number</th>
 | |
| <th valign="bottom">Fix</th>
 | |
| <th valign="bottom">Comments</th>
 | |
| </tr>
 | |
| </thead>
 | |
| <tbody>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-15358'>CVE-2020-15358</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_3.html">3.32.3</a><br>(2020-06-18)</td>
 | |
| <td valign='top'>Malicious SQL statement causes an read past the end of a heap buffer.
 | |
| <a href='https://sqlite.org/src/info/8f157e8010b22af0'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13871'>CVE-2020-13871</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_3.html">3.32.3</a><br>(2020-06-18)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read-only use-after-free memory error.
 | |
| <a href='https://sqlite.org/src/info/c8d3b9f0a750a529'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13632'>CVE-2020-13632</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read of a NULL pointer in the
 | |
|   <a href="fts3.html#matchinfo">matchinfo()</a> SQL function of the <a href="fts3.html">FTS3</a> extension, resulting in
 | |
|   denial of service.
 | |
| <a href='https://sqlite.org/src/info/a4dd148928ea65bd'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13631'>CVE-2020-13631</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement (an ALTER TABLE that tries to rename a
 | |
|   <a href="vtab.html">virtual table</a> into one of its own <a href="vtab.html#xshadowname">shadow tables</a>)
 | |
|   causes an infinite loop and denial of service.
 | |
| <a href='https://sqlite.org/src/info/eca0ba2cf4c0fdf7'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13630'>CVE-2020-13630</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read-only use-after-free,
 | |
|   possibly resulting in a incorrect output from the <a href="fts3.html#snippet">snippet()</a>
 | |
|   SQL function of the <a href="fts3.html">FTS3</a> extension.  There is no known
 | |
|   way to exfiltrate data or crash the application using this bug.
 | |
| <a href='https://sqlite.org/src/info/0d69f76f0865f962'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13435'>CVE-2020-13435</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_1.html">3.32.1</a><br>(2020-05-25)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read access to a NULL pointer and
 | |
|   denial of service.
 | |
| <a href='https://www.sqlite.org/src/info/7a5279a25c57adf1'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-13434'>CVE-2020-13434</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_1.html">3.32.1</a><br>(2020-05-25)</td>
 | |
| <td valign='top'>Malicious SQL statement involving the printf() SQL function results
 | |
|   in an integer overflow which can overwrite the stack with over 2
 | |
|   billion bytes of 0x30 or 0x20 (ASCII '0' or ' ').
 | |
|   Even though this is a stack overwrite, there is no known way to
 | |
|   redirect control or otherwise escalate the level of harm.
 | |
|   This is a denial-of-service attack only.
 | |
| <a href='https://www.sqlite.org/src/info/23439ea582241138'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-11656'>CVE-2020-11656</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes read-only use-after-free of memory allocation
 | |
|   if SQLite is compile with -DSQLITE_DEBUG.  Does not affect release
 | |
|   builds.
 | |
| <a href='https://www.sqlite.org/src/info/4722bdab08cb1'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-11655'>CVE-2020-11655</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read using an uninitialized pointer
 | |
|   and denial-of-service.
 | |
| <a href='https://www.sqlite.org/src/info/af4556bb5c285c08'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-9327'>CVE-2020-9327</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_32_0.html">3.32.0</a><br>(2020-05-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a read using an uninitialized pointer
 | |
|   and denial-of-service
 | |
| <a href='https://www.sqlite.org/src/info/4374860b29383380'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2020-6405'>CVE-2020-6405</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a NULL pointer dereference and
 | |
|   denial-of-service
 | |
| <a href='https://www.sqlite.org/src/info/1bc783da63d58b05'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-20218'>CVE-2019-20218</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes an uninitialized pointer read and
 | |
|   denial-of-service.
 | |
| <a href='https://www.sqlite.org/src/timeline?r=better-error-handling-1'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19959'>CVE-2019-19959</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a NULL pointer dereference
 | |
|   in the <a href="zipfile.html">Zipfile virtual table</a> extension and
 | |
|   denial-of-service.  This is only possible when the optional
 | |
|   <a href="zipfile.html">Zipfile virtual table</a> extension is deployed, which is not
 | |
|   the case in default builds.
 | |
| <a href='https://www.sqlite.org/src/info/cc0fb00a128fd077'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19926'>CVE-2019-19926</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes an uninitialized pointer read and
 | |
|   denial-of-service.
 | |
| <a href='https://www.sqlite.org/src/info/cba2a2a44cdf138a'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19925'>CVE-2019-19925</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a NULL pointer dereference and
 | |
|   in the <a href="zipfile.html">Zipfile virtual table</a> extension and
 | |
|   denial-of-service.  This is only possible when the optional
 | |
|   <a href="zipfile.html">Zipfile virtual table</a> extension is deployed, which is not
 | |
|   the case in default builds.
 | |
| <a href='https://www.sqlite.org/src/info/a80f84b511231204'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19924'>CVE-2019-19924</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a uninitialized pointer reference and
 | |
|   denial-of-service.
 | |
| <a href='https://www.sqlite.org/src/info/e2bddcd4c55ba3cb'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19923'>CVE-2019-19923</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>Malicious SQL statement causes a NULL pointer dereference and
 | |
|   denial-of-service.
 | |
| <a href='https://www.sqlite.org/src/info/862974312edf00e9'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| <tr><td valign='top'>
 | |
| <a href='https://nvd.nist.gov/vuln/detail/CVE-2019-19317'>CVE-2019-19317</a>
 | |
| </td>
 | |
| <td valign='top'><a href="releaselog/3_31_0.html">3.31.0</a><br>(2020-01-22)</td>
 | |
| <td valign='top'>This CVE identifies a bug in a development check-in of
 | |
|   SQLite.  The bug never appeared in any official SQLite release.
 | |
| <a href='https://www.sqlite.org/src/info/6601da58032d18ae'>(details)</a></td>
 | |
| </tr>
 | |
| 
 | |
| 
 | |
| </tbody>
 | |
| </table>
 | |
| 
 |