【已评审】IPMI标准命令Set User Password按标准实现校验密码数据长度

背景

当前IPMI标准命令Set User Password的实现中按照标准校验接收到的密码数据长度,不满足规范要求。

规范原文:

关联ISSUE

【问题单】ipmi带外下发设置用户密码长度错误,预期失败实际成功-account-GitCode

整体方案

按标准规范实现,

  1. password size0operation10b11b时,校验接收到的密码数据长度必须为16字节
  2. password size1operation10b11b时,校验接收到的密码数据长度必须为20字节

评审点

进行IPMI接口变更,设置和测试密码子命令时校验接收到的密码数据字节长度,以满足IPMI规范。

变更影响评估

1. 使用ipmitool user set password <user id> [<password> <16|20>]ipmitool user test <user id> <16|20> [<password]> 命令不受影响,工具会自动补齐00到16或20位字节

2. 使用raw命令受影响,不满足长度时,必须待传输的密码数据长度补齐到16位或20位字节,否则执行失败。示例:

a. 设置密码(16字节)

raw 0x06 0x47 0x03 0x02 0x56 0x55 0x66 0x67 =>
raw 0x06 0x47 0x03 0x02 0x56 0x55 0x66 0x67 00 00 00 00 00 00 00 00 00 00 00 00

b. 设置密码(20字节)

raw 0x06 0x47 0x83 0x02 0x56 0x55 0x66 0x67 =>
raw 0x06 0x47 0x83 0x02 0x56 0x55 0x66 0x67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

c. 测试密码(16字节)

raw 0x06 0x47 0x03 0x03 0x56 0x55 0x66 0x67 =>
raw 0x06 0x47 0x03 0x03 0x56 0x55 0x66 0x67 00 00 00 00 00 00 00 00 00 00 00 00

d. 测试密码(20字节)

raw 0x06 0x47 0x83 0x03 0x56 0x55 0x66 0x67 =>
raw 0x06 0x47 0x83 0x03 0x56 0x55 0x66 0x67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

评审结论

  1. 同意变更,按照IPMI规范实现,当使用设置或测试密码操作命令时,校验接收到的密码数据长度必须为16字节(password size = 0)或 20字节(password size = 1)。
  2. 鉴于客户的规范一般要求支持ipmitool封装过的user set passworduser test命令,使用raw命令设置密码的场景比较少,因此raw命令约束变更影响较小,不需要发布变更声明。

遗留问题