一条新的 SMS 消息如何覆盖之前的一条?

信息安全 移动的 短信
2021-09-03 20:05:03

在与供应商的谈话中,演讲者提到他们的产品使用了 SMS 的“鲜为人知的功能”来覆盖从他们那里收到的最后一条短信。此功能用于发送一次性令牌,因此非常有用。他当时没有演示,但我最近注意到我的手机提供商对特价令牌做了同样的事情。每次我收到一个新令牌时,它都会覆盖旧的 SMS 消息。我已经证实这适用于其他手机 - 甚至是非常旧的手机。

我可以看到这构成了安全风险。例如,有人可能向我发送威胁,然后让第二个 SMS 删除(编辑)消息,让我没有证据。还有社会工程学的含义。

SMS 的什么功能允许这种覆盖?采取了哪些安全措施来防止此功能被滥用,尤其是与 SMS 欺骗结合使用时?

1个回答

这是内置在 SMS 中并在协议标识符 ( TP-PID ) 中实现:

对于 MT 短消息,在收到来自 SC 的短消息时,MS 应检查相关的协议标识符是否包含替换短消息类型代码。

如果存在这样的代码,MS 将检查始发地址并用新的短消息和其他参数值替换任何现有的具有相同协议标识符代码和始发地址的存储消息。如果没有要替换的消息,MS 将按正常方式存储该消息。MS 还可以检查 SC 地址以及发起地址。然而,在有多个 SC 的网络中,一个 SM 的 Replace Message 类型可能会通过不同的 SC 发送,因此建议 MS 不应检查 SC 地址,除非应用程序特别需要这样一个查看。

如果不存在替换短消息类型代码,则 MS 将以正常方式存储消息。

SMPP协议规范中,这是REPLACE_SM

此命令由 ESME 发出以替换先前提交的仍等待传递的短消息。匹配机制是基于原始消息的message_id和源地址。如果原始submit_sm'源地址'默认为NULL,那么replace_sm命令中的源地址也应该为NULL

EMI中,这是服务类型 08,代码 01

这种类型的服务请求替换以前提交的消息。它仅在请求更新时出现。默认情况下,一条消息被假定为一条新消息。

存在这种情况的原因是,发送大量 SMS 消息的服务可以避免消耗手机的内存。据我所知,没有内置安全性;如果您可以欺骗源 ID,那么您可以告诉手机覆盖来自同一来源的先前消息。