第11章
我的答案:
web表单请用户输入数据,被输入的数据传到一台服务器上,这台服务器将输入的数据写入可以容纳N个字符的缓冲区中。如果服务器软件没有去验证以确保输入的数据的长度至多为N个字符的话就会发生一次缓冲区溢出,任何溢出的数据可能会覆盖掉某些重要的数据,进而导致系统崩溃或者是线程吊死。
a.这个过程不是原子的,这个值是先读取再写。
b. 一次攻击是有两张卡片,比如说一张里面有一美元,另一张里1000美元。将卡片插入读卡机,以便读取x=1000。然后放入5美元,然后在按下确认按钮前拔出$1000卡。如果能做到这一点,价值1005美元将写到卡的刚刚一美元的卡中,而$1000的卡仍然值$1000。
另一种攻击是插入卡,从卡中读取值x,然后在帐户上进行交易,然后输入y美元并按Enter。以这种方式,即使在x美元被花掉之后,x+y还会被写到卡片上。请注意,此攻击仅适用于不需要借记卡的交易(例如,在线资金转移)。
c. 在写之前读一下这个值。
我的答案:
a.代码的不同实例执行相同的功能,但是内部的结构不一样。
b.如果变异足够多的话,这样的蠕虫就有可能躲过任何基于特征的检测系统。
c.如果代码的内部结构不同,对一个实例的攻击就不会发生。
我的答案:
a.消除现在和未来的竞争。
b. 小心未经授权的病毒扫描等。
a.腊肠攻击可以被设计成截断每次汇款的任何一小部分,并将其记入攻击者的帐户。
b.假设每次攻击产生1/2美分,因此1000笔交易就能得到500美分,每天攻击者就会得5美元,每一个星期攻击者就会得到35美元,而每年大约是1820美元。
c.有一个小数点放错了位置,所以一分钱的小数实际上是一大块腊肠,最终就会被发现。
第12章
我的答案:
a.可能,但是会变得很难,分析代码和了解它怎么工作是很重要的
b.可能,但是会变得困难,因为将失去汇编代码提供的“大图”视图。
我的答案:
a.好孩子们只找到1/1000的bug,所以Trudy找到的bug没被好孩子们找出来的概率是99.9%
b.全都没被好孩子找出的概率是
至少有一个被好孩子找到的概率是
我的答案:
封闭源项目的MTBF值也是t/K。
我的答案:
a.假设加了100bug前共有x个bug,得等式
,x=300,留存的bug数量为300-120=180
b.插入的 bug 可能不代表未知 bug。
第13章
我的答案:
a.强制性访问控制(mandatory access control)也可以称为MAC,是一种不受对象所有者控制的访问策略。
自主性访问控制(discretionary access control),也可以称为DAC,是指由对象所有者决定的访问控制型。
b.如果将DAC和MAC都应用到对象上,那么MAC则相对更“强势”。另一方面,如果DAC施加的访问控制要比MAC更加严格,那么将由DAC策略决定访问控制的结果。
c.强制性包括MLS或任何类型的系统范围保护,例如
1.阻止用户访问某些数据的防火墙
2.Alice并不会决定谁拥有TOP SECRET 级别的权限空间,所以在这个层面行,她无法完全控制我对文档的访问分级。
自由性将包括 ACL 和功能。例如在UNIX文件的保护体系中,由文件的所有者来控制读(read)、写(write)y以及执行(excute)权限。
我的答案:
操作系统是访问控制最终的执行者。
如果Trudy“拥有”操作系统,她可以破坏核心安全流程,这将使她能够破坏几乎任何应用程序的安全性。
我的答案:
NBSCG中的TCB由可信操作系统(Nexus)和NCA组成。没有TCB,NGSCB就没有意义。NGSCB的目的是保护隐藏在受保护内存中的秘文/密钥,而TCB是我们实现这一目标所依赖的NGSCB的一部分。