pgsql: Docs: add disclaimer about hazards of using regexps from untrust

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Docs: add disclaimer about hazards of using regexps from untrust
Date: 2015-10-02 17:31:03
Message-ID: E1Zi4Ah-00081Y-AJ@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Docs: add disclaimer about hazards of using regexps from untrusted sources.

It's not terribly hard to devise regular expressions that take large
amounts of time and/or memory to process. Recent testing by Greg Stark has
also shown that machines with small stack limits can be driven to stack
overflow by suitably crafted regexps. While we intend to fix these things
as much as possible, it's probably impossible to eliminate slow-execution
cases altogether. In any case we don't want to treat such things as
security issues. The history of that code should already discourage
prudent DBAs from allowing execution of regexp patterns coming from
possibly-hostile sources, but it seems like a good idea to warn about the
hazard explicitly.

Currently, similar_escape() allows access to enough of the underlying
regexp behavior that the warning has to apply to SIMILAR TO as well.
We might be able to make it safer if we tightened things up to allow only
SQL-mandated capabilities in SIMILAR TO; but that would be a subtly
non-backwards-compatible change, so it requires discussion and probably
could not be back-patched.

Per discussion among pgsql-security list.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/52511fd6243260d826e9fb337d3dcd79811b5f91

Modified Files
--------------
doc/src/sgml/func.sgml | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2015-10-02 17:46:19 pgsql: Add some more query-cancel checks to regular expression matching
Previous Message Tom Lane 2015-10-02 16:20:21 pgsql: Docs: add another example of creating a range type.