I don’t know of any existing add-on (though there may be one), but a pretty simple plugin that’s triggered by the OnBeforeDocFormSave event should do it.
You could put the bad words as a comma delimited list in a chunk and parse them into an array in the plugin, but it would be faster to just put the words in the plugin code, something like this:
<?php
/* BadWords Plugin Code */
global $content;
$badWords = array(
'badword1' => 'badword1-replacement',
'badword2' => 'badword2-replacement',
'badword3' => 'badword3-replacement'
);
$content = str_replace( array_keys($badWords), array_values($badWords), $content);
?>
Note that str_replace() is case sensitive so if the bad words might appear at the beginning of a sentence, you’d need to duplicate them:
'badword' => 'badwordreplacement',
'Badword => 'Badwordreplacement'
str_ireplace() is case insensitive but won’t preserve the original case. You can write your own replacement function that preserves the case, but it will slow things down.
Here’s some great information on how plugins work and how to create one:
http://sottwell.com/how-plugins-work.html
Hope this helps.