summaryrefslogtreecommitdiff
path: root/doc/bug.template
diff options
context:
space:
mode:
authorTom Lane2010-09-30 21:21:04 +0000
committerTom Lane2010-09-30 21:21:04 +0000
commit3b4c327ca8c70a4aef1e128f676c7eb16963466b (patch)
tree8935a668b1e07a966cd411228065d9361cb6d7b9 /doc/bug.template
parent65a192c44f4078a1466a0e156d0f209d2fd74e12 (diff)
Use a separate interpreter for each calling SQL userid in plperl and pltcl.
There are numerous methods by which a Perl or Tcl function can subvert the behavior of another such function executed later; for example, by redefining standard functions or operators called by the target function. If the target function is SECURITY DEFINER, or is called by such a function, this means that any ordinary SQL user with Perl or Tcl language usage rights can do essentially anything with the privileges of the target function's owner. To close this security hole, create a separate Perl or Tcl interpreter for each SQL userid under which plperl or pltcl functions are executed within a session. However, all plperlu or pltclu functions run within a session still share a single interpreter, since they all execute at the trust level of a database superuser anyway. Note: this change results in a functionality loss when libperl has been built without the "multiplicity" option: it's no longer possible to call plperl functions under different userids in one session, since such a libperl can't support multiple interpreters in one process. However, such a libperl already failed to support concurrent use of plperl and plperlu, so it's likely that few people use such versions with Postgres. Security: CVE-2010-3433
Diffstat (limited to 'doc/bug.template')
0 files changed, 0 insertions, 0 deletions