/ / HP Fortify анализ на резултатите, система () команда инжекция - C + +, Linux, сигурност

HP Fortify анализ на резултатите, система () команда инжекция - C + +, Linux, сигурност

Опитвам се да напиша C ++ код, който извиква aкоманда в командния ред на linux и използвам HP Fortify за проверка на exploits в кода. Може ли някой, който е запознат с анализатора на източника на HP Fortify, да ми каже дали е възможно да се използва системен () linux разговор в C ++ код, без да се получава предупреждение за ниска заплаха от HP Fortify (ниско: Command Injection: semantic)? Все още ли има опасност от внедряване на команда, ако кодирам трудно входа на системата (), докато записвам пълен пътеки към програмите и / или файловете в обаждането? Не разбирам по-сигурен начин да го дам, отколкото да го кодирам твърдо. Трябва ли да пренебрегвам функцията на системата () и да намеря друг начин да се обадя команди от моя c ++ код към командния ред на linux?

Редактиране: Опитах се да използвам execv () вместо система (), за да се обадя на програма, но все пак ми дава предупреждението за команда за инжектиране на командата execv ().

Отговори:

1 за отговор № 1

С една дума "Не".

Семитичният анализатор HP Fortify откривапотенциално опасно използване на функции и приложни програмни интерфейси на вътрешно-процедурно ниво. По принцип е умен GREP. Така че по същество просто търси думите "system ()" и "execv ()" във вашия код. Тя ги оценява като "ниска", защото не намира път, в който нападател може да повлияе на командата низ, която системата () ще използва.

Ако обаче кодът е въвел потребителски вход в низ, предаван на система (), анализаторът на потока от данни трябва да го вземе като инжектиране на критична команда.

Помислете за ниските семантични констатации като "сигурност за манекени" ;-)