Are all BSDs created equally — 一次关于BSD内核漏洞的调查

Are all BSDs created equally — 一次关于BSD内核漏洞的调查

在今年(2017)的defcon大会上,Ilja van Sprundel做了一个名为 “所有的BSD生来是平等的吗?”(Are all BSDs created equally? ),副标题: 一次关于BSD系统内核漏洞的调查(A survey of BSD kernel vulnerabilities)。我在youtube上搜了一下,目前还没有视频。   浏览了一下pdf文件。主要内容如下: 作者花了三个月时间检查了OBSD/FBSD/NBSD的内核代码,主要涉及系统调用、驱动程序、TCP/IP栈、trap handler、文件系统以及用于兼容其他系统(如Linux)的代码,截止报告期,共发现bug或漏洞约115个,其中: FBSD: ~30 OBSD: 25 NBSD: ~60   作者列出的OpenBSD相关的bug有:   Unbound malloc and out of bound read (could panic or info leak) OpenBSD 6.1 Been there since OpenBSD 4.0 Fri Apr 28 08:34:31 2006 getcwd syscall when taking data from fuse / userland   mbuf mishandling, leading to crash Doesn’t guarantee it pulls up enough mbuf data OpenBSD…

Read More

bzero.c源码注释

bzero.c源码注释

bzero函数的作用是向一个字符串写入某个指定字节的空字符’\0’,一般用于把一个字符串置0。类似memset。函数原型为:

DESCRIPTION The bzero() function writes len zero bytes to the string b. If len is zero, bzero() does nothing. 源代码:

只有短短的三行,实现的非常简洁。 bzero的介绍中提到,如果指定的字节数为0,那么bzero什么也不做。对于这个条件的判断隐含中for循环当中:如果length变量为0,则length–返回0(而不是-1),那么循环退出,什么也不做。 读懂这一段代码需要了解: 1. for循环的执行过程 2. –和++操作符以及length–和–length的差别 3. *p++的作用(其中包括*运算符和++运算符的优先级,*p++的返回值,指针的递增运算 对于1,大家可以参看”C programming language (K&R C)”这本书,对于2和3,可以参考“Pointers on C”第六章(如果我没记错的话),讲的很透彻,我就不再这里罗嗦了(讲了可能会越说越乱 :-~)。

Read More

read CAT source file

read CAT source file

我学习cat命令的源码及注释。

 

Read More

mbr.S

mbr.S

更新: 还有一个更正的注释版本,里面有流程图,不适合这里展示。放在网盘上供大家下载: https://pan.baidu.com/s/1jGQGifs

 

Read More