Я работаю над песочницей в Linux, и я хочу перехватить системные вызовы и вернуть имитированное значение или изменить регистры / указатели и выполнить системный вызов с измененным значением.
Я хотел бы добиться этого с помощью того же процесса, мой код уже введен в целевой процесс во время запуска.
Можно ли с seccomp сделать?
Если у вас есть полезный пример или какие-либо другие рекомендации, возможно, есть лучший способ добиться того же
Вероятно, стоит упомянуть, что попытка перехвата системных вызовов как форма изолированной программной среды из того же адресного пространства, что и процесс, который помещается в песочницу, будет подвержена неудачам. Вредоносное приложение может найти способ обнаружить, что оно находится в изолированной программной среде, и принять меры против кода изолированной программной среды, запущенного в его адресном пространстве.
Лучшим вариантом было бы использовать более традиционный статический фильтр системных вызовов, как это делается с помощью большого количества инструментов песочницы, или создать процесс супервизора для отслеживания и перехвата системных вызовов с использованием возможностей уведомления, добавленных в seccomp / libseccomp.
Я новичок в seccomp, накануне даже не знал о его существовании, если я правильно понял, недавнее добавление уведомлений дает нам возможность обрабатывать системные вызовы из пользовательского режима.
У вас есть код, который я могу использовать в качестве справочника для этой задачи (уведомление seccomp для перехвата системных вызовов)?
Вы всегда можете проверить приведенный ниже тест, он довольно простой, но должен дать вам общее представление о том, как его использовать:
Я собираюсь закрыть этот вопрос, так как думаю, что вопрос решен, но если вы не согласны, не стесняйтесь открывать его повторно / оставлять комментарии.
Самый полезный комментарий
Вы всегда можете проверить приведенный ниже тест, он довольно простой, но должен дать вам общее представление о том, как его использовать:
Я собираюсь закрыть этот вопрос, так как думаю, что вопрос решен, но если вы не согласны, не стесняйтесь открывать его повторно / оставлять комментарии.