Защита скрипта от взлома (чтение каталогов, изменение файлов) - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь написать скрипт, который будет запускать все мои тесты автоматически и проверять наличие сбоев, что-то вроде этого (просто запустите тестирование с "ruby file.rb" и разбором вывода):

def failures?(test_file)
  io = IO.popen("ruby #{test_file}")
  log = io.readlines
  io.close

  # parsing output for failures "1 tests, 1 assertions, 0 failures, 0 errors"
  log.last.split(',').select{ |s| s =~ /failures/ }.first[/\d+/] != "0"
end

puts failures?("test.rb")

Но кто-то может легко поместить вредоносный код в «test_file» и уничтожить все:

Dir.glob("*")
Dir.mkdir("HACK_DIR")
File.delete("some_file")

Как защитить скрипт ruby ​​от такого взлома?

1 Ответ

0 голосов
/ 04 марта 2012

Я сделал нечто похожее на это, но использовал концепцию «песочницы».

Сначала вы создаете тестового пользователя, у которого нет прав ни на один из ваших файлов ОС (конечно, на ваши тестовые файлы тоже нет).

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

Итак, создание / изменение / удаление файла выполнения тестов ограничено этой песочницей. Кроме того, вы можете проанализировать все последующие данные тестов, оставленные в этой изолированной программной среде.

Я легко сделал это в linux, создав папки в / tmp dir и используя специального пользователя под названием "tester".

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...