Snowdream

I'm awake but my world is half asleep
posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

最近读的两篇paper

Posted on 2008-05-20 20:18 ZelluX 阅读(2116) 评论(1)  编辑  收藏 所属分类: SystemLaboratorySecurity
第一篇是
A World Wide Web Without Walls
MIT CSAIL做的,MIT的Frans大牛上周还跑到邯郸校区做了个相关的讲座Securing the Web With Decentralized Information Flow Control

这篇paper针对安全漏洞日益严重的Web应用,提出了一种全新的Web架构。

传统的Web网站架构是,用户数据和应用逻辑在同一个服务器组上,这样应用逻辑上有任何缺陷都会被人利用攻击(比如SQL注入、跨站脚本漏洞等),从而用户数据泄露。另外用户对自己的信息不具有控制权(保存在Web服务器端),比如我想让校内的同学能够查看我在Google Picasa上的照片,没有最根本的解决方法。

这篇paper提出的架构是,用户数据和应用逻辑完全分离,用户数据贴有一些标签,比如“ZelluX的日志” “Bisu的星际录像”等,不同的应用程序享有不同的权限标签,比如Picasa有对照片访问的权限。

通过对数据流的控制(具体方法可以google这篇paper的标题),最后实现一种更安全的网络架构:
保证客户端、declassifier、数据层安全的情况下,中间的应用逻辑可以是任意甚至恶意的网站、程序。

感觉这个想法很赞,但是实现起来很麻烦,所有的现有应用都得用它提供的API重写一遍,乌托邦?呵呵

第二篇是
Comptibility is Not Transparency: VMM Detection Myths and Realities
由斯坦福、VMWare、UBX/XenSource、卡内基梅隆合作(来头相当大啊)

主要讲了要实现一个完全透明的VMM(Virtual Machine Monitor)是基本不可能的。
从以下几个方面论述:
CPU差异
比如sidt指令,模拟出来的MMU架构等,都和真机下的表现有一定的差别。

片外差异
现代芯片组都很难模拟出来,VMWare为了简化把所以的芯片组都模拟成i440bx,于是虚拟机的硬件配置会很荒谬。
另外I/O虚拟化也很难,基本上要维护一个庞大的模拟各种型号的硬件的驱动库是不可能的。通过这个问题完全可以检测到VMM。
还有就是利用device pass through的设备的DMA,访问物理内存进行探测,当然这个在IOMMU组件推出后就行不通了。

资源差异
比如我写一个程序先占满TLB,然后执行一些在虚拟机中会导致VMM工作的指令,如果有VMM存在的话一部分TLB就会被占用,等控制权回到guest os上我就能探测到这个差异。另外虚拟机也不至于去模拟一个TLB的行为,否则产生的性能差距。。。残念

用时差异
page faults的不一致等时间上的真机与虚拟机的差异也很容易检测到。
另外我可以写两个程序,一个跑1000000遍NOP,另一个跑1000000遍CPUID,求它们的所花时间比例。
真机上 CPUID : NOP 这个比例肯定比虚拟机上的小不少,因为NOP不会被VMM截获,但是CPUID会,会花更多的时间
计时的时候可以借助NTP服务器,或者干脆用秒表 -_-b


最后作者还提到了VMBR:"Why bother?"
所谓的VMBR其实大大降低了反病毒的难度,传统的病毒还是很难检测的,但是VMBR病毒你只要用上述任何一种方法检测下即可。



评论

# re: 最近读的两篇paper  回复  更多评论   

2008-05-20 23:52 by damocles
PDOS的Frans Kaashoek和Robert Morris确实很牛

只有注册用户登录后才能发表评论。


网站导航: