[mapserver-users] Dynamin SQL with mapserver CGI?

umn-ms at hydrotec.de umn-ms at hydrotec.de
Tue Jan 27 00:14:27 PST 2009


I think validation patterns are a real solution to the problem and 
minimizing access-priviliges is not.

When filter with URL-substitution is used without validation patterns, one 
relies on the security-system of postgres. 
This is acceptable in most intranets but hazardous in the internet.
Look for example at http://www.postgresql.org/support/security.html what 
can be done with even a minimal-postgres-login

Ciao
Benedikt

Extract of the http://www.postgresql.org/support/security.html
* Three vulnearbilities in the regular expression handling libraries can 
be exploited to cause a backend crash, infinite loops or memory 
exhaustion. This vulnearbility can be exploited through frontend 
applications that allow unfiltered regular expressions to be passed in 
queries. 
* A bug in the handling of SET ROLE allows escalation of privileges to any 
other database user, including superuser. A valid login is required to 
exploit this vulnerability 
* Calling COALESCE() with two NULL parameters would cause the current 
backend to crash, causing a denial of service. A valid login is required 
to exploit this vulnerability. 
* Public EXECUTE access is given to certain character conversion functions 
that are not designed to be safe against malicious arguments. This can 
cause at least a denial of service. A valid login is required to exploit 
this vulnerability 


"Steve Lime" <Steve.Lime at dnr.state.mn.us> schrieb am 26.01.2009 21:29:52:

> In addition, one can and should apply validation patterns to variables
> used in SQL. That way MapServer
> can test the input data before handing off to PostGIS or whatever.
> 
> These patterns are set in LAYER metadata. For example:
> 
> LAYER
>   ...
>   DATA"'the_geom FROM (SELECT the_geom FROM my_table WHERE ID = '%id%')
> as foo USING UNIQUE OID" 
>   METADATA
>     id_validation_pattern '^[0-9]{3}$'
>   END
> END
> 
> This tells the CGI to test the request parameter against the regex
> '^[1-9]{3}$'. The regex says that the value
> of the id variable must be an number exactly 3 digits long with no
> zeros. Any attempt to send a value other
> than that will generate an error message. The CGI code does not force
> the use of validation.
> 
> Validation like this will be further expanded in 5.4 with the addition
> of a new validation object. So you'd see 
> something like:
> 
> LAYER
>   ...
>   VALIDATION
>     'id'  '^[0-9]{3}$
>   END
> END
> 
> Steve
> 
> >>> On 1/26/2009 at 8:47 AM, in message
> <6246727221874A4FB8D3F9BBC37D9BD5056DA174 at s-sp22.pca.state.mn.us>,
> "Fawcett,
> David" <David.Fawcett at state.mn.us> wrote:
> > Of course, part of security is also having your application hit your
> database 
> > as a user that only has the rights that it needs.  If your user only
> has 
> > select rights on only the data that you want to expose, that should
> help 
> > limit some of these issues.
> > 
> >    -----Original Message-----
> >    From: mapserver-users-bounces at lists.osgeo.org 
> > [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of 
> > umn-ms at hydrotec.de 
> >    Sent: Monday, January 26, 2009 4:43 AM
> >    To: MapServer
> >    Subject: Re: [mapserver-users] Dynamin SQL with mapserver CGI?
> > 
> > 
> > 
> >    > Not any great hazard, I believe, ... 
> > 
> >    Mmh. I'd be cautious. 
> > 
> >    Example: 
> >    * Mapfile: 
> >       DATA "the_geom from buildings"
> > 
> >    * Set Filter via URL to this: 
> >      1=1);DELETE FROM OTHERTABLE; DECLARE X BINARY CURSOR FOR
> SELECT * from 
> > buildings WHERE (1=1 
> > 
> >    I think Mapserver will create the following statements: (I've
> added 
> > newlines) 
> >    DECLARE mycursor BINARY CURSOR FOR SELECT the_geom from
> buildings WHERE 
> > (1=1); 
> >    DELETE FROM OTHERTABLE; 
> >    DECLARE X BINARY CURSOR FOR SELECT * from buildings WHERE (1=1)
> and (%s && 
> > setSRID( ...) ) 
> > 
> >    Mapserver calls PQExec with these statements. PQExec will
> execute every 
> > statement and will return 
> >    the results of the last one. 
> > 
> >    Bye 
> >    Benedikt Rothe 
> > 
> > 
> >    "Rahkonen Jukka" <Jukka.Rahkonen at mmmtike.fi> schrieb am
> 26.01.2009 09:34:31:
> > 
> >    > Hi, 
> >    > 
> >    > Not any great hazard, I believe, if it means that user can
> normally 
> >    > get all the features, but only a subset when filter is set. 
> It is 
> >    > different case if DATA clause is manipulated, and therefore
> that 
> >    > must be connected to DATAPATTERN. 
> >    > 
> >    > -Jukka Rahkonen- 
> >    > 
> >    > Lähettäjä: mapserver-users-bounces at lists.osgeo.org [mailto:
> >    > mapserver-users-bounces at lists.osgeo.org] Puolesta
> umn-ms at hydrotec.de 
> >    > Lähetetty: 26. tammikuuta 2009 10:03
> >    > Vastaanottaja: MapServer
> >    > Aihe: Re: [mapserver-users] Dynamin SQL with mapserver CGI?
> > 
> >    > 
> >    > Hi 
> >    > 
> >    > > You can use a replaceable parameter in the FILTER clause if
> all you ... 
> >    > This introduces the hazard of SQL-Injection, doesn't it? 
> >    > 
> >    > Bye 
> >    > Benedikt Rothe 
> >    > 
> >    > mapserver-users-bounces at lists.osgeo.org schrieb am 24.01.2009
> 14:04:42:
> >    > 
> >    > > On Sat, Jan 24, 2009 at 3:18 AM, Saka Royban
> <srph124 at yahoo.com> wrote:
> >    > > > Hi all
> >    > > > I'm looking for a way to change SQL dynamically via URL
> parameters. it
> >    > > > sounds from doc that changing DATA element in map file is
> impossible. Is
> >    > > > there any other way?
> >    > > 
> >    > > You can use a replaceable parameter in the FILTER clause if
> all you
> >    > > want to do is alter the WHERE clause. So for example:
> >    > >    FILTER "%criteria%"
> >    > > and
> >    > >   criteria=id='value'
> >    > > would work with a database like Postgres.
> >    > > 
> >    > > When working with a database you put the whole SQL WHERE
> clause in the
> >    > > FILTER, whereas with shapefiles or ORG data sources you use
> the
> >    > > FILTERITEM and FILTER.
> >    > > 
> >    > > -- 
> >    > > Richard Greenwood
> >    > > richard.greenwood at gmail.com 
> >    > > www.greenwoodmap.com 
> >    > > _______________________________________________
> >    > > mapserver-users mailing list
> >    > > mapserver-users at lists.osgeo.org 
> >    > > http://lists.osgeo.org/mailman/listinfo/mapserver-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20090127/b0d3db7b/attachment.htm>


More information about the MapServer-users mailing list