Санитарный ввод от IRC - PullRequest
3 голосов
/ 25 июля 2010

Итак, я подумал о написании расширения для ботов / ботов irc, которое позволит пользователям играть в определенные текстовые игры, запустив игру,

отправка частей определенных строк, которые они вводят (регулярное выражение соответствует игровому сигналу, если нет в канале ботов, например, имя робота rbot войти в лес. Посылает "войти в лес) на стандартный вход игры,

в то время как стандартный вне игры кешируется ботом и передается по каналу (напр. «Давайте радоваться за утка была побеждена получает в кэш строки внутри бота, а затем бот отправляет его на соответствующий канал как

gamename: давайте радоваться за

gamename: утка побеждена )

Но я немного беспокоюсь о хитрости, которую могут делать люди из irc, будет ли достаточно раздевать всех непечатаемых символов для безопасности? Если программа завершает работу (скажем, они вводят команду выхода для игры), что происходит, когда вы пытаетесь записать в дескриптор файла для этой программы стандартный ввод (ошибка)? Есть еще потенциальные проблемы? Обратите внимание, что я собираюсь запустить это на Linux или * BSD, так что мне не нужно беспокоиться о конкретных вещей для Windows.

Ответы [ 3 ]

2 голосов
/ 25 июля 2010

Некоторые основы, которые вы можете рассмотреть:

  • Гораздо безопаснее пропустить текст, который, как вы знаете, безопаснее, чем пытаться отфильтровать текст, который, по вашему мнению, может быть небезопасным. Игры, вероятно, принимают только буквенно-цифровые символы, поэтому проверьте, содержат ли входные данные только эти значения, и запретите что-либо еще.
  • Запустите бота под учетной записью, которая имеет минимально возможные разрешения и максимально ограниченный доступ к остальной части машины. Если вы можете полностью изолировать или полностью виртуализировать ее, даже лучше.
  • Вы должны наблюдать за завершением PID дочернего процесса и решать, что делать, если он завершается, перезапускает или не выполняет дальнейшие команды, выходит из бота и т. Д.

При раскрытии сервисов в сети возможны любые проблемы с безопасностью, вам лучше почитать общие темы по безопасному программированию, например, при быстром поиске в Google вы найдете , например,

Это платит, чтобы быть параноиком. Без соблюдения надлежащих методов безопасного программирования самое большее, на что вы можете надеяться, это то, что никто честно не попытается его сломать.

1 голос
/ 25 июля 2010

Неважно, откуда поступает пользовательский ввод, важно, как он используется.

Единственная атака, которая влияет на IRC: CRLF инъекция .Это всплывет вам, если вы вернете ввод пользователя через IRC.Злоумышленник может попытаться ввести перевод строки (\ r) (\ n).Этот тип внедрения влияет на многие протоколы, включая HTTP и SMTP .В случае IRC злоумышленник сможет заставить вашего бота отправить команду на IRCD (например, / join или / kick или / ban :).Обязательно посмотрите таблицу ASCII и отфильтруйте все 0x0A (\ n) и 0x0D (\ r).В большинстве случаев новой строки достаточно, поэтому убедитесь, что вы отфильтровали оба.

Обязательно прочитайте OWASP A1: Инъекция .Особенно, если вы используете пользовательский ввод в SQL-запрос или вызываете процесс из командной строки.

1 голос
/ 25 июля 2010

экранирование кавычек и трубка защитит вас от большинства вещей

" ' |
...