Multiple vulnerabilities in Konversation

On 18 and 19 Jan 2005 I discovered 3 security vulnerabilities in Konversation ("A user-friendly IRC-client for KDE").

Affected are version 0.15, CVS until 18-19/01/2005, and some older versions too. They are fixed in 0.15.1.

Problem 1. Quick buttons

The Server::parseWildcards function is buggy: to expand % variables, it does a series of QString.replace's, so the value for one variable can contain another variable, which will then be expanded too. This function is used for the "Quick Buttons" under the nicklist (which is disabled by default)

The only way I found to exploit this from another client, would be to let a user join a channel with such vars in its name, and then let the user press the Part Button. But since channel names cannot have spaces, only very simple things can be done. For example: in #%n/quit%n, he will disconnect. An 'evil' server might be able to do this for other Quick Buttons too.

Problem 2. Included Perl scripts vulnerable to shell command injection

Perl scripts included with Konversation execute a command line similar to:
exec ("dcop $PORT Konversation say $SERVER \"$TARGET\" output");
shell characters in $SERVER or $TARGET aren't escaped.

Joining #`kwrite` and executing a script (for example typing /uptime) will start kwrite. A song with a strange name may also cause command execution with the media script.

Problem 3. Nick and password confused in quick connect dialog

I'll leave the question of whether or not this actually is a security bug open, but at least I can imagine someone could see it as one. Nick and password are confused in the quick connection dialog, so connecting with that dialog and filling in a password, would use that password as nick. If connecting works, you'll show everyone your password that was probably a password for something else (since you could connecting with your nick as password instead). If connecting fails because the server did require a password, it may show an oper watching server notices your password and/or put it in a logfile.

Solution

These problems are fixed in version 0.15.1, which was released 19/01/05.

Individual patches can be downloaded at:

Links