服务器选择了暴力

主要观点:Hubris 是一个独特的系统,其设计决策中“REPLY_FAULT”系统调用最为奇特,它能让服务器向客户端发送故障信号使客户端任务终止,以此避免不必要的错误处理,还可定义和实现新的应用特定错误,如访问控制规则等,此机制结合其他系统特性使 Hubris 对恶意程序具有较强的抵御性,但也导致系统难以进行模糊测试。
关键信息

  • Hubris 用独立编译的隔离任务通过跨任务消息系统通信,有“RECV”“SEND”“REPLY”等核心操作。
  • 在正常程序中,Hubris 的 IPC 不会出现特定错误,但跨任务边界时需小心。
  • Hubris 内核对违反系统调用前提条件的任务立即销毁,不允许可恢复故障。
  • “REPLY_FAULT”与“REPLY”类似,只是发送故障信号使任务终止,可处理多种 IPC 错误。
  • 此机制能让服务器在客户端生成跨进程“panic!”,使系统对恶意程序更具抵御性,但导致系统难以模糊测试。
    重要细节
  • 任务通过构建系统配置连接,客户端和服务器角色可互换,如“LED Blinker”任务可作为“GPIO driver”任务的客户端,也可作为监督任务的服务器。
  • 内核会为违反其规则的任务发送合成故障,如“SEND”时传递错误的接收者索引或消息指针。
  • 应用的监督任务可决定对故障任务的处理方式,如删除并重启。
  • 系统现在用“REPLY_FAULT”处理特定 IPC 错误,如错误的操作码、 corrupt 消息等,还可定义新的应用特定错误。
  • 新开发者认为“REPLY_FAULT”是 Hubris 开发中令人惊喜的部分。
  • 系统的“chaos”任务因易触发立即重置而难以进行模糊测试,但“REPLY_FAULT”可让服务器随机杀死客户端。
阅读 25
0 条评论