如果他们的产品允许访问其他用户的位置信息,我应该联系制造商吗?

信息安全 披露 地理位置 网址 设计缺陷
2021-09-03 00:40:57

我最近购买了一个卫星通讯器,当我在荒野中徒步旅行时,它可以让我将我的位置地图发送给朋友和家人。

在测试我的产品时,我注意到 url 是这样构造的:

http://www.example.com/mylocation/?id=YYYYY/XX.XXXXN/XX.XXXXW

其中Xs 是作为物理纬度/经度一部分的数字,Ys 是 5 个字符的字母数字 ID 的一部分。

出于好奇,我截断了 URL 的纬度/经度部分,并将 ID 更改了一个字符。

http://www.example.com/mylocation/?id=YYYYZ

通过这样做,我可以看到不同的用户:

  • 地图上的物理纬度/经度位置
  • 设备名称(无论他们选择如何称呼它;大多数人都有“Harry's GPS”之类的名称)
  • 发送他们的位置时使用的自定义预设消息,如果他们有一组(例如:“登记入住 - 我很安全。”)

我的问题是,这是否存在安全漏洞,是否应该提醒公司?

我联系该公司的理由是,查看其他用户的实际位置是一个明显的缺陷。然而,这就是产品的全部意义——轻松与家人/朋友分享您的位置。我也看不到设备实际属于谁(姓名、电话号码、用户名、电子邮件等),所以据我所知,位置数据是匿名的。

4个回答

是的,您应该将问题通知公司 - 请谨慎行事。

更新: @crovers提供了一个更简短、非常完整的答案但如果你有耐心...

...这里的问题不仅仅是跟踪 J. Random Stranger 的可能性,而是:

  • 一旦您的 ID 被提供给某人,显然您无法收回它并且它不会过期。那个人现在可以到处跟着你(想想“过度依恋的女朋友”)。此外,该 ID 可能会泄漏。电子邮件被错误地转发,有时...邮件程序中的小而容易监督的字形包含大量敏感信息。

  • 你甚至不需要我。如果 ID 是连续的 [正如@crovers 评论的那样],我可以在很短的时间内将所有这些 ID 制成表格,检查它们的位置,并轻松挑选出足够接近我知道你可能所处的位置的那五个或六个。明天,其他五六个人将足够接近你现在所在的不同地方;在这五个中,可能有两个在原来的五个中,所以你必须是这两个中的一个。在相对较短的时间内,我将我的候选人范围缩小到一个:我现在有你的身份证,可以跟踪你,而你一点也不聪明

  • 我什至可能不认识你。该 ID 可用于恶作剧陌生人。我只是在谷歌上搜索了一下,发现有几千个 Facebook 用户吹嘘他们的新产品(GPS 相关小工具的名称)。我使用了一个非常知名的品牌,所以你的小工具可能只有一百个人,我可以很容易地发现。我有信心,其中有一半会定期发布有关他们所在位置的图片(Facebook 会清除 EXIF GPS 信息吗?)。很快,其中一个引起我兴趣的人可能会收到一条消息,上面写着“Old Nowhereville 的天气怎么样?” 即使他(或她)从未对任何人说过他(或她)在哪里,甚至没有在任何地方发布任何内容。这样的恶作剧——而且知道某个完全陌生的人显然对你感兴趣,似乎总是知道你在哪里——这会彻底毁掉你的一天。如果一些被恶作剧的人确信他们的 GPS 可以以某种方式被“远程入侵”,他们可能会彻底毁掉公司的一天,即使在这种情况下,这根本不是发生的事情。是的,我有病 - 但我不是唯一一个,所以你可能想将公司的人指向这个页面 - 并且,为了重申 @crovers 和 Arminius 提出的另一个非常好的观点,请匿名这样做对他们的潜在损害是巨大的,你把这个指向他们是在帮他们一个大忙. 但是有些公司可能会有(下意识的)反应,并试图欺负你让你保持沉默,相信这可以解决一些问题(甚至完全解决问题);诺贝尔奖理查德 P. 费曼的“漏洞披露”故事读起来很有趣(“这是他的解决方案:是危险! ”)

你实际上是在帮助他们。

  • 相信我,当在 URL 中看到“id=XXXXX”时,很多人都会做你所做的事情。 会做到的。根据小工具的受欢迎程度,我敢打赌许多其他人已经这样做了。所以这并不是说你对一个本来可以保持安全的人发动了一场僵尸末日——你很可能只是第一个有良心告诉他们他们根本不安全的人因为这比改变ID的好奇心要难得多。

完全不应该是这样的。

从公司的角度来看,通过允许每个用户在他们选择的任何时间按需重新生成不同的秘密 ID 来解决这个问题非常简单。甚至设置有效期。而他们现在仍然可以做到

一个非常快速的解决方法可能是通过与数据库连接的简单过滤器代理他们的网站。

例如,您的新网址是http://www.example.com/mylocation/?id=22b255b332474ae3e7f008cc50ebe3e0& ..。

或者可以将其翻译为“true.pony.pile.main.jazz.call.mine.soft.pink.rake.jane”,以便通过电话更容易记住或口述某些内容。

前四个字与“正确的马电池主食”有些联系

代理检查数据库并发现这22b255b332474ae3e7f008cc50ebe3e0 一个有效的 ID,并且与“真实”(或“旧”)id 相关联12345,因此它通过简单地将 ID 替换为 12345 来转换 URL,将请求发送到真实的隐藏网站,取回页面,用原始22b2...内容重写任何 12345,嘿,快!,外部用户可以看到你在哪里,和以前一样,但他无法知道真实 ID 是 12345(即使他知道,他也无法将其传递给系统,现在只接受哈希)。

但是现在,用户 12345 可以拥有公司想要(或出售!)任意数量的活跃​​ ID,并将一个给他的妈妈,一个给他的 SO,等等。一个 ID 泄露,或者他与他的朋友分手 - 他使那个 ID 无效。还可以知道每个 ID 有多少次访问,因此窥探可以是双向的。可能仅适用于高级用户:-D。对于某些 ID,网站甚至可能会发布随机信息或低精度 GPS 坐标。

如果你想随机猜测一个有效的 ID - 好吧,其中有大约 2 128个。如果每个客户有 100 个一次性 ID(例如 2 7),而公司有 10 亿客户(例如 2 30 ),那么通过随机尝试获得有效 ID 的可能性仍然约为 2 90 。如果这太少(或者如果我的数学恰好有点歪斜),那么还有更大的哈希值。

并且旧 ID 不再有效,因为如果您提供的 ID 没有经过哈希处理,您将无法访问原始服务器。

考虑到合理的实施成本(一名开发人员和一名 QA 工程师需要几天的时间,而且我正在大量补充),我有点困惑,这不是从一开始就设计的。

是的。他们应该使用长的、不可猜测的字符串,而不是可预测的短字符串。

我认为这是一个安全漏洞,他们修复起来相对简单。

但是,我要提醒你——有些公司不能很好地处理这种情况。有些人争辩(在我看来是错误的)更改该 ID 构成黑客攻击,他们可能威胁要起诉或指控您。这很愚蠢,但我建议您匿名或通过中介联系他们。

检查他们是否有赏金计划 - (谷歌公司名称和漏洞赏金)。如果他们不这样做,您可能需要考虑使用中介 -零日倡议就是其中之一。

要添加其他答案 - 请 注意自己报告问题的风险

如果您没有报告安全问题的经验,您可能会认为它们是狡猾的并且可能是恶意的。没有处理安全问题经验的公司可能会将您的报告转发给公司律师而不是 IT 部门。显然,您只是想提供帮助,但对他们来说,您主要是在制造麻烦。很有可能,他们不希望问题公开(这可能会对他们的商业声誉造成极大损害),因此他们可能会以法律后果威胁您。在最坏的情况下,他们会联系执法部门,恕不另行通知。

出于好奇,我截断了 URL 的 lat/lon 部分,并将 id 更改了一个字符。

所以你不是偶然发现的。从公司的角度来看,您可以通过操纵 URL 来访问其他客户的数据——对他们来说这并不重要,您这样做是“出于好奇”。他们可能仍将您视为威胁并做出不专业的反应。

您应该了解这种可能的解释,并仔细决定是否值得冒险。如果您在没有合同或鼓励寻找漏洞的公共政策的情况下处理安全漏洞,那么您就处于法律灰色地带

如果我是你,我会说类似的话

Hello,
I have mistyped my ID (e.g. 12345) and pressed enter instead of backspace,
and I was dumbfounded to find that the page loaded and found 
the location of a stranger who has the ID next to mine (e.g. 12346).
Being able to track someone without their permission
seems to be a security problem, as someone that knows me on Facebook 
with a small bit of IT knowledge would be able to guess my ID without me knowing.

基本上,假设您不是出于好奇而是偶然发现它。还可以匿名发送(例如,不要使用您的真实身份,并使用 jon.doe@gmail.com 之类的邮件)。

在发送之前检查你的邮件,也许让你认识的人校对它。

把它当作愤怒的化身来阅读,这可能会帮助你平息它,这样你就不会让一个以脚趾敲床柱开始他的一天的人把他的愤怒发泄在你身上。

如果他们不回答,或者在一段时间内不做任何事情,请说(可能在一两个月后,因为这是一个中等安全问题)你希望他们对此做些什么,或者你会尝试警告其他用户有关此问题。如果他们仍然什么都不做,那就去做,但要被警告,他们可能不喜欢它。看到这个 zamfoo 案例

坚持认为,如果您发现它像这样微不足道,那么更糟糕的人可能正在将其用于邪恶目的,而其他用户可能会偶然发现并担心。

使用常识,让您看起来像一个偶然发现奇怪事物的关注用户或该用户的朋友,这也有效。一点“不真实”,大量的冷静和礼貌对试水大有帮助。如果他们看起来足够友好,你可能会说你有能力(如果你是的话)并且可以帮助他们跟踪问题。

如果您帮助他们,并且他们很友好,您可能想问他们是否希望您积极检查其他潜在问题。(如果他们对您有丰富的经验,可能会帮助您找到工作(他们可以谈论您,您有多好(友好但专业)等等。其他可能需要您的人。或者只是作为参考),或一些朋友。)

这也是他们获得免费广告的机会,如果他们反应良好,您可能会倾向于与可能感兴趣的人谈论他们。

无论您和他们做什么,保持冷静,不要迅速升级,了解他们的观点,不要以威胁的形式出现(1)

如果您看起来对他们造成的伤害超过了您所能提供的帮助,那么这是让他们处于防御状态的最快方法,如果您做了一些愚蠢的事情并且没有掩饰自己的理由,就会受到律师的威胁/一个真实的案例。

(1) 这在大多数情况下都有效,不仅在谈论安全性时,而且对于或多或少愤怒的人(同事、老板)也是如此。

题外话:你唯一可能希望出现威胁的情况是,如果你受到某人/某事的威胁,确信没有任何东西会反对他们(例如一只非常生气的狗),冷静地走向他们,不要表现出恐惧(即使你把裤子弄脏了),它们可能会开始吠叫更多,但它们会慢慢后退,让你通过(或杀死/殴打你,但如果你逃跑了,那也是一样)。

ps:批评我说的话,我是一个愚蠢的人,我不拥有绝对真理,如果有更好的东西,思考想法,做看起来最好的事情,看看会发生什么,学习。

(如果这看起来太非结构化/冗长/杂乱无章,也可以随意提出修改,我不咬人。)