Този въпрос е донякъде продължение на Колко сериозна е тази нова уязвимост на сигурността на ASP.NET и как мога да я заобиколя? Така че, ако изглежда, че въпросът ми е повреден, първо прочетете този въпрос и неговото прието решение и след това вземете това в контекста на моя въпрос.
Може ли някой да обясни защо връщането на същата страница за грешка и същия код на състояние за персонализирани грешки има значение? Намирам това за несъществено, особено ако това се препоръчва като част от работата по него.
Не е ли също толкова лесно за скрипта/приложението да изпълни тази атака и да не се интересува дали ще получи или не http статус код и повече за резултата? Т.е. правейки това 4000 пъти, вие ще бъдете пренасочени към страница за грешка, където на 4001 оставате на същата страница, защото не е обезсилила подложката?
Разбирам защо добавянето на забавянето към страницата за грешка е донякъде уместно, но не добавя ли това също още един слой, за да заблуди скрипта да мисли, че сайтът е невалидна цел?
Какво може да се направи, за да се предотврати това, ако скриптът вземе предвид, че тъй като сайтът е asp.net, той работи с AES криптиране, че игнорира времето на страниците с грешки и наблюдава пренасочването или липсата на пренасочване като вектор на отговор? Ако даден скрипт прави това, това ще означава ли, че НЯМА НАЧИН да го спрете?
Редактиране: Приемам намаляването на тайминг атаката, но частта от страницата с грешки е това, което наистина изглежда фалшиво. Този вектор на атака поставя техните данни в състояние на изглед. Има само 2 случая. Пас. Неуспех.
Или Fail, те са на страница и viewstate не съдържа техните данни. Без значение какво правите тук, няма начин да премахнете случая на грешка, защото страницата просто никога няма да съдържа техните вмъкнати данни, освен ако те успешно не са разбили ключа. Ето защо не мога да обоснова, че използването на персонализирани грешки има ИЗОБЩО НИКАКЪВ ЕФЕКТ.
Или Pass, те са на страница и viewstate съдържа техните вмъкнати данни.
Резюме на тази уязвимост
Ключът за шифроване от WebResoure.axd / ScriptResource.axd се взема и първото предположение на ключа за валидиране се използва за генериране на стойност на потенциален ключ с шифрования текст.
Тази стойност се предава на WebResource.axd / ScriptResource.axd в този момент, ако ключът за декриптиране е познат правилно, техният отговор ще бъде приет, но тъй като данните са боклук, той търси WebResource.axd / ScriptResource.axd ще върне 404 грешка.
Ако ключът за декриптиране не е бил познат успешно, той ще получи грешка 500 за невалидно изключение за подпълване. В този момент приложението за атака знае, че трябва да увеличи потенциалната стойност на ключа за декриптиране и да опита отново, докато не намери първия успешен 404 от WebResource.axd / ScriptResource.axd
След успешно извеждане на ключа за декриптиране, това може да се използва за използване на сайта за намиране на действителния машинен ключ.