Возможные уязвимости в этом коде?
Банальный запрос socket.emit('register');уронит ваш сервер с ошибкой, так как data будет undefined (null и undefined не могут иметь свойств)
Аналогично для data.login
Метод replace есть только у строк, вызов не функции так же выкинет ошибку
Правильно как то так:const LOGIN_REGEX = /[^a-zA-Z0-9]/; //скомпилим регулярку заранее, дабы не компилить при каждом запросе
socket.on('register', function(data){
  if(!data || typeof data.login !== 'string') { return; } //проверка на наличие и правильный тип
  if(data.login.length < 4 || data.login.length > 12) { return; } //проверка на допустимую длину, числа ставьте свои
  if(LOGIN_REGEX.test(data.login)) { return; } // такая проверка в 18 раз быстрее чем у Вас
  new User({login: data.login}).save();
});
Вообще в целом это же не sql, где можно нагадить изменив строку.
Но могут быть проблемы если допустим login в дальнейшем где-то выводится без использования шаблонизаторов и т.п.
Там может быть банальный <script>
Т.е. xss.
Ну с таким фильтром вроде не пролезет.
Больше я не вижу вариантов для каких-то уязвимостей.
Единственное что здесь можно сделать это заспамить.
Наemitить в этот кусок >9000 фреймов и будет создано столько же пользователей.
Поэтому лучше такие вещи типа регистрации оставить на "обычном бекенде", с возможностью каптчу добавить и т.п.
Хотя и здесь наверно можно все это сделать.