Три недели назад я проверил маршрут прокси-сервера на стороне сервера в моем собственном продукте и обнаружил, что его код мне лгал. В комментариях уверенно описывалась мера безопасности — проверка каждой цели, удаление учетных данных, ограничение ответов — в то время как...
Три недели назад я проверил маршрут прокси-сервера на стороне сервера в моем собственном продукте и обнаружил, что его код мне лгал. В комментариях уверенно описывалась мера безопасности — проверка каждой цели, удаление учетных данных, ограничение ответов — в то время как реализация незаметно просочилась мимо всего этого. Я исправил ошибки, описал инцидент, а затем понял, что меня интересует вопрос получше:
Если человек-аудитор изначально был обманут самоуверенным кодом, будут ли обмануты и модели ИИ?
Поэтому я превратил этот инцидент в тест Kaggle, протестировал шесть пограничных моделей, и результаты интересным образом опровергли мою гипотезу. Этот пост и есть тот самый эксперимент, созданный и представленный для участия в конкурсе Kaggle Benchmarking Challenge.
Тест: один реальный файл, два варианта
Объектом тестирования является proxy.ts, реальный рабочий файл из ToolVault (сайт инструментов разработчика, локальный в моем браузере — единственный серверный маршрут). Он перенаправляет HTTP-запросы, направляемые пользователем, сторонним целям, что делает его именно тем кодом, для которого важен SSRF.
Я ничего не сажал. Файл содержит семь реальных дефектов, которые позже были подтверждены состязательным аудитом, включая два критических SSRF:
Перенаправить подписку без повторной проверки