CVE-2010-1169: Code Injection

Published Apr 15, 2010
·
Updated

A flaw was found in the way the PostgreSQL enforced permission checks on scripts written in PL/Perl. Once the PL/Perl procedural language was registered on particular database, a remote, authenticated user, privileged to create databases, running a specially-crafted PL/Perl script, could use this flaw to bypass intended PL/Perl trusted mode restrictions, allowing them to run arbitrary Perl scripts with the privileges of the database server.

References: [1] PostgreSQL PL/Perl procedural language manual page: http://www.postgresql.org/docs/8.1/interactive/plperl.html [2] PostgreSQL Trusted and Untrusted PL/Perl mode manual page: http://www.postgresql.org/docs/8.1/interactive/plperl-trusted.html

Acknowledgements:

Red Hat would like to thank Tim Bunce for responsibly reporting this issue.

Other sources

PostgreSQL 7.4 before 7.4.29, 8.0 before 8.0.25, 8.1 before 8.1.21, 8.2 before 8.2.17, 8.3 before 8.3.11, 8.4 before 8.4.4, and 9.0 Beta before 9.0 Beta 2 does not properly restrict PL/perl procedures, which allows remote authenticated users, with database-creation privileges, to execute arbitrary Perl code via a crafted script, related to the Safe module (aka Safe.pm) for Perl. NOTE: some sources report that this issue is the same as CVE-2010-1447.

Red Hat

Affected Software

113 affected componentsFixes available
redhat/postgresql<0:7.4.29-1.el4_8.1
0:7.4.29-1.el4_8.1
redhat/postgresql<0:8.1.21-1.el5_5.1
0:8.1.21-1.el5_5.1
redhat/postgresql84<0:8.4.4-1.el5_5.1
0:8.4.4-1.el5_5.1
PostgreSQL postgresql=7.4.16
PostgreSQL postgresql=7.4.24
PostgreSQL postgresql=7.4.22
PostgreSQL postgresql=7.4.21
PostgreSQL postgresql=7.4.19
PostgreSQL postgresql=7.4.15
PostgreSQL postgresql=7.4.1
PostgreSQL postgresql=7.4.14
PostgreSQL postgresql=7.4.26
PostgreSQL postgresql=7.4.6
PostgreSQL postgresql=7.4.23
PostgreSQL postgresql=7.4.11
PostgreSQL postgresql=7.4.7
PostgreSQL postgresql=7.4.17
PostgreSQL postgresql=7.4.3
PostgreSQL postgresql=7.4.25
PostgreSQL postgresql=7.4.9
PostgreSQL postgresql=7.4.5
PostgreSQL postgresql=7.4.18
PostgreSQL postgresql=7.4.8
PostgreSQL postgresql=7.4
PostgreSQL postgresql=7.4.4
PostgreSQL postgresql=7.4.28
PostgreSQL postgresql=7.4.12
PostgreSQL postgresql=7.4.27
PostgreSQL postgresql=7.4.10
PostgreSQL postgresql=7.4.20
PostgreSQL postgresql=7.4.2
PostgreSQL postgresql=7.4.13
PostgreSQL postgresql=8.0.7
PostgreSQL postgresql=8.0.2
PostgreSQL postgresql=8.0.22
PostgreSQL postgresql=8.0.17
PostgreSQL postgresql=8.0.10
PostgreSQL postgresql=8.0.12
PostgreSQL postgresql=8.0.9
PostgreSQL postgresql=8.0.15
PostgreSQL postgresql=8.0.0
PostgreSQL postgresql=8.0.18
PostgreSQL postgresql=8.0.3
PostgreSQL postgresql=8.0.24
PostgreSQL postgresql=8.0.20
PostgreSQL postgresql=8.0.8
PostgreSQL postgresql=8.0.6
PostgreSQL postgresql=8.0.16
PostgreSQL postgresql=8.0.13
PostgreSQL postgresql=8.0.1
PostgreSQL postgresql=8.0.19
PostgreSQL postgresql=8.0.21
PostgreSQL postgresql=8.0.23
PostgreSQL postgresql=8.0.4
PostgreSQL postgresql=8.0.5
PostgreSQL postgresql=8.0.14
PostgreSQL postgresql=8.0.11
PostgreSQL postgresql=8.0
PostgreSQL postgresql=8.1.10
PostgreSQL postgresql=8.1.6
PostgreSQL postgresql=8.1.15
PostgreSQL postgresql=8.1.7
PostgreSQL postgresql=8.1.20
PostgreSQL postgresql=8.1
PostgreSQL postgresql=8.1.19
PostgreSQL postgresql=8.1.13
PostgreSQL postgresql=8.1.0
PostgreSQL postgresql=8.1.3
PostgreSQL postgresql=8.1.9
PostgreSQL postgresql=8.1.14
PostgreSQL postgresql=8.1.11
PostgreSQL postgresql=8.1.17
PostgreSQL postgresql=8.1.18
PostgreSQL postgresql=8.1.4
PostgreSQL postgresql=8.1.8
PostgreSQL postgresql=8.1.1
PostgreSQL postgresql=8.1.12
PostgreSQL postgresql=8.1.5
PostgreSQL postgresql=8.1.16
PostgreSQL postgresql=8.1.2
PostgreSQL postgresql=8.2.9
PostgreSQL postgresql=8.2.10
PostgreSQL postgresql=8.2.15
PostgreSQL postgresql=8.2.4
PostgreSQL postgresql=8.2.11
PostgreSQL postgresql=8.2.12
PostgreSQL postgresql=8.2.2
PostgreSQL postgresql=8.2.5
PostgreSQL postgresql=8.2.1
PostgreSQL postgresql=8.2.7
PostgreSQL postgresql=8.2.6
PostgreSQL postgresql=8.2.3
PostgreSQL postgresql=8.2.16
PostgreSQL postgresql=8.2.8
PostgreSQL postgresql=8.2.13
PostgreSQL postgresql=8.2
PostgreSQL postgresql=8.2.14
PostgreSQL postgresql=8.3.6
PostgreSQL postgresql=8.3.3
PostgreSQL postgresql=8.3.2
PostgreSQL postgresql=8.3.1
PostgreSQL postgresql=8.3.5
PostgreSQL postgresql=8.3.8
PostgreSQL postgresql=8.3.7
PostgreSQL postgresql=8.3.10
PostgreSQL postgresql=8.3
PostgreSQL postgresql=8.3.4
PostgreSQL postgresql=8.3.9
PostgreSQL postgresql=8.4.1
PostgreSQL postgresql=8.4.3
PostgreSQL postgresql=8.4
PostgreSQL postgresql=8.4.2
PostgreSQL postgresql=9.0.0-beta1

Event History

Apr 15, 2010
Data Sourced
via Red Hat·12:49 PM
DescriptionSeverityAffected Software
May 17, 2010
CVE Published
via Red Hat·12:00 AM
May 19, 2010
CVE Published
via MITRE·06:13 PM
Data Sourced
via MITRE·06:13 PM
Description
Data Sourced
via NVD·06:30 PM
RemedyDescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

What is the severity of CVE-2010-1169?

CVE-2010-1169 is classified as a medium severity vulnerability.

2

How do I fix CVE-2010-1169?

The fix for CVE-2010-1169 involves upgrading PostgreSQL to the latest version that is not affected, such as 7.4.29 or later versions.

3

What are the affected versions of PostgreSQL for CVE-2010-1169?

Affected versions of PostgreSQL for CVE-2010-1169 include 7.4 before 7.4.29, 8.0 before 8.0.25, and several others up to 9.0 Beta before 9.0 Beta 2.

4

Who is impacted by CVE-2010-1169?

Remote authenticated users with database creation privileges are impacted by CVE-2010-1169.

5

What type of vulnerability is CVE-2010-1169?

CVE-2010-1169 is a code execution vulnerability that arises from improper restrictions on PL/perl procedures.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203