博文

目前显示的是 一月, 2009的博文

freebsd这个月还发不发snapshot了?

这都已经22号了啊!!!!
等出了这个版本,就可以用gptzfsboot了

因为locale为中文导致编译失败

今天尝试在linux下编译xen 3.3.1。到stubdom下面的时候编译newlib失败,找不到stddef.h。何解?自然,我的/usr/include下是有这个文件的,但是由于newlib在编译的时候加了参数-nostdinc,于是在后面采用-isystem include的方式去寻找/usr/include目录。但是出错在于GCC_INSTALL这个变量是空,它是在 stubdom/Makefile 中设置的:GCC_INSTALL = $(shell LANG=C gcc -print-search-dirs | sed -n -e 's/install: \(.*\)/\1/p') 而实际上,默认情况下我的 gcc -print-search-dirs 输出如下:安装:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/ 程序:=/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/libexec/gcc/x86_64-redhat-linux/4.1.2/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../x86_64-redhat-linux/bin/ 库:=/usr/lib/gcc/x86_64-redhat-linux/4.1.2/:/usr/lib/gcc/x86_64-redh…

quartz.dll中的整数溢出漏洞

网上流传一个错误的midi文件,一打开,就会导致windows media player/realplayer死掉。http://www.sunchangming.com/music/my.wav。quartz.dll中会抛出一个未处理的异常: Integer overflow。这个会让ie/播放器 挂掉,但是微软说这并不是一个网上所说的可用于执行任意代码的漏洞。
bug的原始报告:
http://www.milw0rm.com/exploits/7585
cve:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5745
微软的解释:
http://blogs.technet.com/swi/archive/2008/12/29/windows-media-player-crash-not-exploitable-for-code-execution.aspx
据我看,的确仅仅是在执行div操作的时候cpu抛出了一个异常而已。唉……害我白跟踪了好久
但是mcafee已经把这样的wav/midi文件标记为木马了

续:段权限保护

今天继续往下看,大概是这样,freebsd/windows/linux/solaris都没有使用intel的分段保护功能,因为分段是必须的(while paging is optional),于是采用的是intel手册中所说的"all the code, data, and stack modules can be mapped to one"的方式,且完全不使用LDT或者所有的进程(甚至包括kernel)使用同一个LDT。在intel的手册中给出了一种建议的模式是让每一个段对应一个page table,不知道为什么没有人采纳。我想,如果是这样的话,那么在传统的32位模式下(4k per page),每个page table最多容纳512个page也就是2M内存,每个地址空间将会由很多很多个段组成。
但是不知道paging为什么没有采用rwx这样的权限保护模式,而仅仅是rw,直到最近几年的产品才加了“EXECUTE-DISABLE BIT”
好多不明白的地方。求路过的高人指点

段权限保护与buffer overflow

"buffer overflow... possibly execute arbitrary code",安全公告中这样的话语简直就像“Ladies and Gentlemen"一样成了必备的开场白。但是我最近读intel手册的时候发现
1、intel强制程序必须分段
2、在GDT/LDT中,每个段都有rwx的访问权限控制。
我在看freebsd的loader的btx kernel代码时发现,所有的数据段都是不可执行的,而所有的代码段都是不可写的。于是,即便发生了溢出(不管是stack还是heap),那都不会导致执行攻击者的任意代码。
但貌似微软根本就没有在windows中使用这个功能,而是通过页面来进行权限管理。但是至少据我测试,从堆上执行代码是完全可以的。why?

freebsd 7.1发布了

对,就是今天,大概是这个新年最好的礼物了。
不过我倒没有什么兴奋的,我把freebsd格了,装在vmware中当玩具,于是就放心大胆的用svn中的最新的current代码了。
freebsdchina.org论坛上的关于为什么不用C++写kernel的帖子被锁了。去它的,别闹了。我就是要用C++写,不管写成啥样,总之我就是要告诉别人,I can do that!