Докато изпълнявам сканиране на HP Fortify, получавам следното несигурно предупреждение за случайност:
The random number generator implemented by value() cannot withstand a cryptographic attack.
Въпросният ред е в T-SQL съхранена процедура, използвайки value()
метод за извличане на стойност от XML:
SELECT t.c.value("@RequestId[1]", "BIGINT") AS RequestId
Доколкото мога да разбера от документация, няма причина това да се използвагенератор на произволни стойности, освен ако не е дълбоко в реализацията. Някой знае ли къде се използва това и дали това е истински проблем със сигурността или фалшив положителен?
Отговори:
0 за отговор № 1Виждал съм същия този проблем няколко пътиУкрепете и вярвам, че е фалшив положителен. Fortify някак си мисли, че value () в t-sql връща случайна стойност и аз не открих доказателства за това (както и вие не).
Ако греша (не мисля, че съм), тогава можетепопитайте дали приложението ви се нуждае от сигурна случайност за това изявление, защото може да не е така. Fortify е инструмент, който не разбира контекста, така че всичко, което може да направи, е да вдигне флаг, когато види несигурна случайност, без да разбира дали е необходима сигурна случайност. Квалифициран рецензент на код, който знае достатъчно контекст за приложението и какво се случва тук, трябва да може да каже дали е необходима сигурна случайност или не тук (ако случайността е въобще замесена - това е съмнение).
Имайте предвид, че Fortify, подобно на всеки другинструмент за сигурност, не е перфектен. Дори да извадим контекста от уравнението, това не е единственият пример за проблем, повдигнат от инструмента, който според мен просто не е истински проблем.