CVE-2016-15035 (JavaScript, published 2023-08-28T04:15Z)
Description: value: A vulnerability was found in Doc2k RE-Chat 1.0. It has been classified as problematic. This affects an unknown part of the file js_on_radio-emergency.de_/re_chat.js. The manipulation leads to cross site scripting. It is possible to initiate the attack remotely. The patch is named bd17d497ddd3bab4ef9c6831c747c37cc016c570. It is recommended to apply a patch to fix this issue. The associated identifier of this vulnerability is VDB-238155.
Severity: nan (CVSS v3 base score: 6.1)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/Doc2k/re-chat
Files changed:
js_on_radio-emergency.de_/re_chat.js
Commit message: XSS #2

Erweiterte Ausgabevalidierung für die normalen Chatfunktionen. Siehe https://www.owasp.org/index.php/XSS
Eventuelle Überlegung die Validierung der Datentelegramme serverseitig durchzuführen.

Vulnerable code:
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') Willkommen '+data.username+' im Radio-Emergency.de Chat'));
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') Willkommen '+data.username+' im Radio-Emergency.de Chat'));
					    alert('Der Benutzername "'+data.username+'" ist bereits in Verwendung');
					    alert('Der Benutzername "'+data.username+'" ist ein geschützter Name des RE-Teams');
		        			jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+msg.sex+'_'+msg.istEinAdmin+'.png" /> '+msg.username+': <span style="color:'+msg.farbe+'; font-weight:'+msg.weight+'; font-style:'+msg.style+'">'+msg.message+'</span>'));
									var mitdemda = msg.username;
										jQuery('#iArt_privChat_'+mitdemda.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+msg.sex+'_'+msg.istEinAdmin+'.png" /> '+iArt_ChangeMarkup(msg.username, false)+': <span style="color:'+msg.farbe+'; font-weight:'+msg.weight+'; font-style:'+msg.style+'">'+iArt_ChangeMarkup(msg.message, true)+'</span>'));
										jQuery('#iArt_privChat_'+msg.fuerden.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+msg.sex+'_'+msg.istEinAdmin+'.png" /> '+iArt_ChangeMarkup(msg.username, false)+': <span style="color:'+msg.farbe+'; font-weight:'+msg.weight+'; font-style:'+msg.style+'">'+iArt_ChangeMarkup(msg.message, true)+'</span>'));
						jQuery('#iArt_privChat_'+data.benutzer.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+data.zeitpunkt+') CHATSYSTEM: <span style="color:#f00; font-weight:bold;">--> Nachricht nicht übermittelt da "'+data.benutzer+'" nicht mehr online ist! <--</span><br /> --> '+data.message+' <--'));
				    		jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') '+data.username+' hat den Chat betreten'));
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') '+data.username+' hat den Chat verlassen'));

Fixed code:
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') Willkommen '+iArt_ChangeMarkup(data.username, false)+' im Radio-Emergency.de Chat'));
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') Willkommen '+iArt_ChangeMarkup(data.username,false)+' im Radio-Emergency.de Chat'));
					    alert('Der Benutzername "'+iArt_ChangeMarkup(data.username, false)+'" ist bereits in Verwendung');
					    alert('Der Benutzername "'+iArt_ChangeMarkup(data.username, false)+'" ist ein geschützter Name des RE-Teams');
		        			jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+msg.sex+'_'+msg.istEinAdmin+'.png" /> '+iArt_ChangeMarkup(msg.username, false)+': <span style="color:'+iArt_ChangeMarkup(msg.farbe, false)+'; font-weight:'+iArt_ChangeMarkup(msg.weight, false)+'; font-style:'+iArt_ChangeMarkup(msg.style, false)+'">'+iArt_ChangeMarkup(msg.message, false)+'</span>'));
									var mitdemda = iArt_ChangeMarkup(msg.username, false);
										jQuery('#iArt_privChat_'+mitdemda.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+iArt_ChangeMarkup(msg.sex, false)+'_'+iArt_ChangeMarkup(msg.istEinAdmin, false)+'.png" /> '+iArt_ChangeMarkup(msg.username, false)+': <span style="color:'+iArt_ChangeMarkup(msg.farbe, false)+'; font-weight:'+iArt_ChangeMarkup(msg.weight, false)+'; font-style:'+iArt_ChangeMarkup(msg.style, false)+'">'+iArt_ChangeMarkup(msg.message, true)+'</span>'));
										jQuery('#iArt_privChat_'+msg.fuerden.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+msg.zeitpunkt+') <img src="http://radio-emergency.de/img/user_'+iArt_ChangeMarkup(msg.sex, false)+'_'+iArt_ChangeMarkup(msg.istEinAdmin, false)+'.png" /> '+iArt_ChangeMarkup(msg.username, false)+': <span style="color:'+iArt_ChangeMarkup(msg.farbe, false)+'; font-weight:'+iArt_ChangeMarkup(msg.weight, false)+'; font-style:'+iArt_ChangeMarkup(msg.style, false)+'">'+iArt_ChangeMarkup(msg.message, true)+'</span>'));
						jQuery('#iArt_privChat_'+data.benutzer.replace(/ /g, '_').replace(/[^a-z0-9A-Z_]/g, '-')).find('.messages').append(jQuery('<div>').addClass('iArtChatMessageItem').html('('+data.zeitpunkt+') CHATSYSTEM: <span style="color:#f00; font-weight:bold;">--> Nachricht nicht übermittelt da "'+iArt_ChangeMarkup(data.benutzer, false)+'" nicht mehr online ist! <--</span><br /> --> '+iArt_ChangeMarkup(data.message, false)+' <--'));
				    		jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') '+iArt_ChangeMarkup(data.username, false)+' hat den Chat betreten'));
							jQuery('#messages').append(jQuery('<div>').addClass('iArtChatMessageItem').addClass('reChatInfo').html('('+data.zeitpunkt+') '+iArt_ChangeMarkup(data.username, false)+' hat den Chat verlassen'));