Обмануть SAST анализатор кода
От: Neco  
Дата: 25.02.16 12:10
Оценка: :)
Есть тулза HP Fortify, которая вычисляет всякие потенциальные уязвимости.
Есть код доступа к БД (через EntityFramework), где по сути всё сводится к следующему:
        public Configuration ReadOne(string key)
        {
            CheckReadPermissions();
            using (var db = new EfDbEntities())
            {
                return db.Configurations.Find(key);
            }
        }

HP Fortify ругается на то, что primary key контролируется внешним запросом и потенциально меняя цифирки в урле, можно получить доступ к тем записям, к которым на деле доступа нет.
Но в приложении нет безопасности на уровне строк. Вся безопасность построена на уровне таблиц — т.е. если может читать, то пусть читает всё.

Объяснять это всем инстанциям, которые будут смотреть на отчёт HP Fortify, не хочется. Соответственно, появилась идея кое-где подобмануть его, чтобы избежать вопросов.
При этом как выясняется тул довольно умный и умеет отслеживать ссылки. Попробовал по-простому в нескольких вариациях
        private object[] RefineKey(params object[] ids)
        {
            var dict = new Dictionary<string, object[]>();
            dict["test"] = ids;
            return dict["test1".Substring(0, 4)];
        }

всё равно находит, выдаёт такую вот диаграммку:
http://files.rsdn.org/39431/fort.png

если написать вместо test1 другое слово, всё равно ругается, как на потенциально опасное место, видимо.

Есть у кого-нибудь какие-нибудь идеи как его можно запутать, чтобы ссылка не отслеживалась, при этом конечно, чтобы способ был не очень ресурсоёмкий. Интерес больше спортивный — не думаю, что по факту воспользуюсь.
всю ночь не ем, весь день не сплю — устаю
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.