Флаги компилятора не имеют большого значения. Программа C ++ с этими флагами может делать то же самое, что и программа C ++, скомпилированная с любым другим набором флагов. В частности, существуют десятки способов справиться с неопределенным поведением и, возможно, использовать любые уязвимости безопасности, которые могут существовать в ОС.
Вы выполняете ненадежный код, конец истории. Вы можете надеяться, что ОС не будет скомпрометирована, что код не сможет получить новые разрешения или даже работать от имени пользователя root или иным образом испортить систему.
И вы можете надеяться, что если это произойдет, оно все равно будет содержаться в виртуальной машине и не сможет повлиять на хост.
Но это все еще ненадежный код, и он может делать все, что мог бы сделать ненадежный код. Лучшее, что вы можете сделать, - убедиться, что он работает с минимумом привилегий и что ОС и программное обеспечение для виртуализации исправлены на 100%.
Конечно, с учетом упомянутых вами ограничений, мой первый вопрос: "Есть ли что-нибудь, что мешает мне заполнить жесткий диск барахлом?" Хорошо, поэтому я не могу писать вне рабочего каталога, но я все равно могу заставить диск не заполняться. Или есть дисковая квота или что-то принудительное? Как насчет ограничения количества процессорного времени, которое я использую? Смогу ли я использовать все ресурсы компьютера, чтобы он не отвечал на запросы?