Только свободные. Если программа свободная, то её исходный код открыт, и кто угодно может проверить есть ли в программе вредоносные функции.
Иногда можно использовать несвободные программы, но только если у них открыт исходный код.
Идеальный вариант - свободная программа, разрабатывается независимыми людьми, существует достаточно долгое время, получает обновления безопасности и у программы был проведён аудит.
Смотри также: https://bitcheese.net/opensource-faq