Web应用中的并发攻击
大家好, 我们是iSEC Partners的Scott Stender和Alex Vidergar,本次BlueHat的主题是“Web应用中的并发攻击”。数据库管理员、计算机架构师和操作系统设计师已经花费数十年时间解决各自技术领域中由并发引发的问题,所以这应该是老生常谈了吧?
如果你是一名Web应用开发者,让我们先来快速回答一个问题:在你的Web应用框架中访问会话变量是线程安全的吗?如果你不能立刻回答出来,别担心——你并不孤单!
Web应用开发者夹在两股强大力量之间:生产力和抽象化。
开发者生产力降低了成本,并被认为消除了编程任务中的繁琐工作。在Web应用领域,对生产力的追求催生了一系列易于使用的Web应用框架。如今的Web开发者不再需要管理连接和线程池,他们可以专注于职业中的创造性方面。现代框架要求程序员使用少量API实现单个函数,瞧,一个完全交互式的网页就诞生了。
然而,为了实现这一点,我们需要抽象化。所有使网页工作所需的“管道”都必须隐藏在Web应用框架和Web服务器中,这意味着普通Web开发者不必担心它,甚至不知道它的存在。此外,这些框架大多以面向对象的方式编写,意味着抽象化不仅仅是一种奢侈,更是编程环境的关键原则。
问题就在这里:当这种资源的抽象化成为编程环境的要求时,我们应该预料到麻烦。由于抽象化,开发者可能不知道跨线程、进程或服务器共享的资源,并且会未能保护它们。
正如你可能已经猜到的,我们已经发现了不少情况下,善意的开发者很容易在他们的Web应用中引入并发缺陷。这些问题本身难以识别、重现,并且可能带来严重的安全影响。我们的目标是为开发者和测试人员提供指导,以识别和解决这类缺陷。而且,面对满屋子负责创建我们正在讨论的技术的人员,我们期待就安全分析师和开发者如何最好地解决这个问题进行健康的讨论。
-Scott Stender和Alex Vidergar, iSEC Partners。