summaryrefslogtreecommitdiffstats
path: root/man.cgi.8
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-07-22 18:14:13 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-07-22 18:14:13 +0000
commit65cb0941933336f1e6502825398c255d1c4d858e (patch)
tree11ee75f6928885dd7b2a288c785cb7d30b23c602 /man.cgi.8
parent8b2475f4e584d019268fec8ade22101de40acada (diff)
downloadmandoc-65cb0941933336f1e6502825398c255d1c4d858e.tar.gz
Security fix to prevent XSS attacks:
Restrict the character set of strings passed into html_alloc(), in particular architecture names that come from the QUERY_STRING, but also SCRIPT_NAME and manpath.conf content for additional safety, and bail out safely on violations. Issue reported by Sebastien Marie <semarie-openbsd at latrappe dot fr>.
Diffstat (limited to 'man.cgi.8')
-rw-r--r--man.cgi.838
1 files changed, 38 insertions, 0 deletions
diff --git a/man.cgi.8 b/man.cgi.8
index 169b2ae2..1f001b01 100644
--- a/man.cgi.8
+++ b/man.cgi.8
@@ -267,6 +267,34 @@ For backward compatibility with the traditional
is supported as an alias for
.Cm sec .
.El
+.Ss Restricted character set
+For security reasons, in particular to prevent cross site scripting
+attacks, some strings used by
+.Nm
+can only contain the following characters:
+.Pp
+.Bl -dash -compact -offset indent
+.It
+lower case and upper case ASCII letters
+.It
+the ten decimal digits
+.It
+the dash
+.Pq Sq -
+.It
+the dot
+.Pq Sq \&.
+.It
+the slash
+.Pq Sq /
+.It
+the underscore
+.Pq Sq _
+.El
+.Pp
+In particular, this applies to the
+.Ev SCRIPT_NAME ,
+to all manpaths, and to all architecture names.
.Sh ENVIRONMENT
The web server may pass the following CGI variables to
.Nm :
@@ -293,6 +321,10 @@ binary relative to the server root, usually
.Pa /cgi-bin/man.cgi .
This is used for generating URIs to be embedded
in generated HTML code and HTTP headers.
+If this contains any character not contained in the
+.Sx Restricted character set ,
+.Nm
+reports an internal server error and exits without doing anything.
.El
.Sh FILES
.Bl -tag -width Ds
@@ -332,6 +364,12 @@ Manual pages documenting
itself, linked from the index page.
.It Pa /man/manpath.conf
The list of available manpaths, one per line.
+If any of the lines in this file contains a slash
+.Pq Sq /
+or any character not contained in the
+.Sx Restricted character set ,
+.Nm
+reports an internal server error and exits without doing anything.
.It Pa /man/OpenBSD-current/man1/mandoc.1
An example
.Xr mdoc 7