XSS Vulnerability when using struts/ErrorsTool.getMsgs
------------------------------------------------------

                 Key: VELTOOLS-126
                 URL: https://issues.apache.org/jira/browse/VELTOOLS-126
             Project: Velocity Tools
          Issue Type: Bug
          Components: VelocityStruts
    Affects Versions: 1.4, 2.x
         Environment: Identified in velocity-tools 1.4, verified by reading 
code in trunk.
            Reporter: Christopher Schultz


The code for ErrorsTool.getMsgs goes roughly like this:

String message = message("errors.header");

foreach(error) {
  message += message("errors.prefix") + error + message("errors.suffix")

message += message("errors.footer")

return message;

This is easily open to an XSS attack when an error message contains user input.

Honestly, I'm not entirely sure if we should even do anything about this, 
because the ErrorsTool is not strictly for use in an HTML context, so escaping 
the error message itself may not be appropriate. Also, the message itself may 
contain markup which the developer wants to remain, while the user input should 
be escaped.

It's possible that the solution to this problem is to put a big warning on the 
tool that XSS attacks are very easy using this tool.

I've been running with it for years, and didn't notice until today. I replaced 
my use of errors.getMsgs with this:

    $!msg.errors.header
    #foreach($error in $errors.get($fieldName))
    $!msg.errors.prefix#htmlEscape($error)$!msg.errors.suffix
    #end
    $!msg.errors.header

...which is appropriate for my uses, but might not work for everyone.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to