在 MI 之下 - 针对黑客的 IBM i

主要观点:IBM i 是垂直集成系统,供应商对从操作系统到 CPU 的硬件和软件有完全控制权,通过 Machine Interface(MI)实现应用与底层硬件的独立和向后兼容,文中提供评估 IBM i 程序中内存安全问题的技术信息总结。
关键信息

  • IBM i 基于 POWER CPU,实现 64 位大端存储模型,使用 128 位指针。
  • 操作系统可在多种安全模式运行,重点关注 40 级安全,50 级安全虽满足 NCSC 标准但不常用。
  • IBM i 采用单级存储(SLS)模型,虚拟地址由 40 位段标识符和 24 位段内偏移组成,所有进程可访问 SLS 所有虚拟地址,增加内存安全违规影响。
  • 程序序列化方面,介绍字符串常量加载、调用约定(包括函数序言和尾声、寄存器使用等)、内存安全(MI 不提供内存安全,通过指针标记、段边界检查、类型指针等保障安全)、安全特性(如指针标记、段边界检查、类型指针等)。
  • 还给出数据仅利用 - 上下文外调用的可利用样本程序代码及相关演示链接。
    重要细节
  • POWER 实现 PowerPC ISA 并扩展,CPU 寄存器 64 位宽,IBM i 使用 128 位指针,各字长有不同定义。
  • 安全级别 40 是推荐最低级别,50 级引入但因与第三方软件不兼容未广泛使用。
  • SLS 中虚拟地址结构及 PowerPC 段表,低于 50 级安全时翻译机制未使用。
  • 程序序列化中字符串常量加载方式、不同调用约定下寄存器使用及函数参数传递方式等。
  • 内存安全方面,MI 不提供安全,通过多种安全特性保障,如指针标记防止指针被随意写入,段边界检查防止指针越界,类型指针关联类型元数据防止指针误用等。
  • 数据仅利用示例中通过数组越界调用栈上的指针实现命令执行。
阅读 15
0 条评论