https://blog.fuzzing-project.org/10-Two-invalid-read-errors-heap-overflows-in-SQLite-TFPA-0062015.html
While fuzzing SQLite I discovered two read heap overflow errors. One is in the database file parser, one in the sql command parser. Both issues are present in SQLite 3.8.9 and are fixed in SQLite 3.8.10.1. These bugs can be seen with either valgrind or address sanitizer.
Passing the command ".\" will cause a one byte heap overflow in the function resolve_backslashes().
https://crashes.fuzzing-project.org/TFPA-2015-006-sqlite-heapoverflow-resolve_backslashes.sql
Sample input file (test with sqlite3 < [inputfile])
https://www.sqlite.org/cgi/src/info/e018f4bf1f27f783
Upstream commit / patch
Parsing a malformed database file will cause a heap overflow of several bytes in the function sqlite3VdbeExec(). This only matters if your attack scenario involves parsing untrusted database files.
https://crashes.fuzzing-project.org/TFPA-2015-006-sqlite-heapoverflow-sqlite3VdbeExec.sqlite
Sample input file (test with sqlite3 [inputfile] .dump)
https://www.sqlite.org/cgi/src/info/f71053cf658b3260
Upstream commit / patch
Please also note:
http://lcamtuf.blogspot.de/2015/04/finding-bugs-in-sqlite-easy-way.html
Finding bugs in SQLite, the easy way - Michal Zalewski fuzzed SQLite with a dictionary - most of these were already fixed in 3.8.9, the version I was testing.
https://www.sqlite.org/testing.html#aflfuzz
SQL Fuzz Using The American Fuzzy Lop Fuzzer - SQLite developers themselve now use regular fuzz testing to find further bugs.
https://sqlite.org/releaselog/3_8_10_1.html
SQLite 3.8.10.1 release notes mention fixes for "many obscure problems discovered while SQL fuzzing", so there are likely more fixes than the two I mentioned above.
--
Hanno Böck
http://hboeck.de/