Flock摄像头充斥着安全漏洞和硬编码凭据

Lobsters Hottest 新闻

摘要

黑客对Flock ALPR摄像头进行了逆向工程,揭示了多个安全漏洞,包括过时的Android版本和硬编码凭据,这对数据隐私和监控系统构成了重大风险。

<p><a href="https://lobste.rs/s/eyg3oe/flock_cameras_are_riddled_with_security">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/09/17 21:42

# Flock摄像头布满安全漏洞与硬编码凭证 来源:https://micahflee.com/flock-cameras-are-riddled-with-security-vulnerabilities-and-hard-coded-credentials/ 今日,DDoSecrets发布(https://ddosecrets.org/article/flock-alpr-camera)了一组令人兴奋的新数据集:正在使用的Flock自动车牌识别摄像头分区的文件系统镜像。404 Media(https://www.404media.co/hackers-stole-flocks-camera-software-revealing-how-the-company-tracks-cars-and-people-2/)和Wired(https://www.wired.com/story/hackers-flock-camera-data-shows-how-system-works/)对此进行了联合调查报道。我下载了该数据集,现在完全被这项研究吸引了。 这些数据由名为stegan0gram的黑客集体收集。其中一位黑客在接受404 Media和Wired采访时表示:“既然能通过逆向工程找出那些监视我们的人的秘密,为何只是破坏[Flock摄像头]?” “我们解放了现场的硬件设备,使其失效,并继续对摄像头及相关太阳能设备进行逆向工程。” 以下是我目前发现的部分秘密。 我利用业余时间处理数据并撰写这些通讯。如果您希望支持我的工作,考虑成为付费支持者。 成为付费支持者 (https://micahflee.com/flock-cameras-are-riddled-with-security-vulnerabilities-and-hard-coded-credentials/#/portal/signup) ## 该摄像头运行着已过时、已终止支持的Android版本 Flock摄像头运行的是定制版Android。该摄像头固件被提取时,其具体构建版本号显示为2025年6月5日。 尽管这是一个相对较新的构建版本,但Flock摄像头运行的是Android 8.1。此版本Android发布于2017年,并于2021年正式停止获得谷歌支持(更多信息请参阅Android生命周期结束(https://endoflife.date/android)页面)。尽管谷歌为Android 8.1发布安全更新直至2021年,但该Android安全补丁级别是2018年6月5日。这意味着该摄像头已经错过最近八年的Android安全更新。 Android运行在Linux内核之上。该Flock摄像头运行的是2017年发布的Linux 3.18.71版本。3.18系列内核维护至2019年5月,最终版本为3.18.140——该摄像头即使与这个版本相比,也还缺少69次发布更新。此内核已过时超过九年。 以下列举了一些该摄像头可能存在的、已公开的漏洞,这些漏洞影响该摄像头所包含的组件。我实际上没有这台Flock摄像头来测试并确认这些漏洞是否有效,但我所知道的是,尽管这些漏洞的补丁已发布多年,这台Flock摄像头的补丁级别却早于所有这些漏洞的修复版本。 - **CVE-2018-9568** (https://github.com/QuestEscape/exploit/tree/master/CVE-2018-9568_WrongZone) **("WrongZone")** — 内核套接字类型混淆。运行在摄像头上的程序可能混淆内核对IPv6套接字的处理,并将自身权限提升至root。于2018年12月修复。(此处有公开的漏洞利用代码 (https://github.com/QuestEscape/exploit/tree/master/CVE-2018-9568_WrongZone)。) - **CVE-2021-1905** (https://googleprojectzero.github.io/0days-in-the-wild/0day-RCAs/2021/CVE-2021-1905.html) **Qualcomm Adreno GPU** – 释放后重用。任何运行在Flock摄像头上的代码,包括非特权应用,都可以通过GPU驱动程序破坏内核内存,从而完全控制设备。于2021年5月修复。 Flock发言人在给404 Media和Wired的声明中表示: > Flock非常重视安全,并维护公开的漏洞披露政策,以便安全研究人员直接向我们报告潜在漏洞。我们未通过该流程收到任何报告,且基于所提供的有限信息,我们没有足够的细节来评估所述主张。如果相关人员发现了合法的漏洞,我们鼓励他们通过我们的漏洞报告流程提交技术发现,以便我们的安全团队进行审查并采取任何适当的行动。 呵呵。 ### 我在数据中如何发现此信息 如果您想自行探索,DDoSecrets在此发布了该数据集(https://data.ddosecrets.org/Flock%20ALPR%20camera/)。 Android版本和补丁级别在多处列出,但最简单的查找位置是在`system`分区中。如果您下载`partitions/24_system.img`(1.5 GB)并解压,会找到一个名为`build.prop`的文件,其中包含以下行: ``` ro.build.version.sdk=27 ro.build.version.release=8.1.0 ro.build.version.security_patch=2018-06-05 ro.build.date=Thu Jun 5 20:05:57 UTC 2025 ``` Linux版本可以在`boot`分区中找到。如果您下载`partitions/21_boot.img`(32 MB)并解压,会在名为`kernel`的文件中找到内核镜像。您可以通过以下命令找到Linux版本: ``` ❯ tail -c +16496 kernel | zcat 2>/dev/null | grep -am1 'Linux version' Linux version 3.18.71-perf-gaf770dc (android@e593ce924ef6) (gcc version 4.8 (GCC) ) #1 SMP PREEMPT Thu Jun 5 20:15:45 UTC 2025 ``` ## **Flock实时生产环境的凭证** 在详细说明之前,我想先强调一点: **未经Flock许可,使用泄露的凭证连接其服务器是违法的。** 该Flock摄像头的Android固件包含20个独立的Flock应用,其中19个共享一个名为`com.flocksafety.android.common.lib`的库。如果您反编译该库,会在`CameraSettings`类中找到一个有趣的方法: ``` public final String getHpnotiqApiKey() { return "HaJ3FgupAm8RrDJW3MHgT9X7Ft27eVaD"; } ``` 这是一个直接硬编码在应用中的API密钥。Flock在`hpnotiq.flocksafety.com`上运行后端服务。当摄像头需要新凭证时,它会向`hpnotiq`发送如下API请求: ``` POST https://hpnotiq.flocksafety.com/api/v3/devices/credentials x-api-key: HaJ3FgupAm8RrDJW3MHgT9X7Ft27eVaD macAddress=F46ADD5746FB ``` 请注意,该特定Flock摄像头的MAC地址是`F4:6A:DD:57:46:FB`。 **据推测,您可以使用此硬编码的API密钥,根据任何Flock摄像头的MAC地址获取其凭证。** 该API似乎返回一个Auth0客户端ID和密钥。Auth0(https://auth0.com/)是一家身份管理公司,隶属于Okta(https://www.okta.com/)。摄像头随后会将这些凭证以明文形式存储。 顺便提一下,这些凭证*可能仍然有效且处于活动状态*(老实说我不确定,因为我没有尝试使用它们): ``` { "clientId":"CPkOAuOKFwNhPavKO01Htxbn6yIwASro", "clientSecret":"ZRExGjbVjBB1wx04RmsMeWKbpMO5zQxLKNZg25D-1LUKbfQbmByajx-8lyB6LwSV" } ``` 然后可以通过将这些凭证发送到`https://device-login.flocksafety.com/oauth/token`来换取Bearer令牌,获得一个短期的`FlockAuth0Token`,从而以该摄像头的身份与Flock后端服务器进行经过身份验证的交互。 ### **我在数据中如何发现此信息** API密钥位于`system`分区。下载`partitions/24_system.img`(1.5 GB),解压后,您会在`app/`下找到19个Flock应用:`flock-sambuca`、`flock-collins`、`flock-phone-home`等,每个应用都包含一个APK。反编译其中任何一个应用,并在`com.flocksafety.android.common.lib`中查找`CameraSettings`。该共享库被捆绑在所有19个应用中,因此密钥存在于每一个应用中。 `flock-sambuca`是使用该密钥进行凭证配置的应用。其`Auth0ServiceManager`类构建凭证请求,而`hpnotiq.flocksafety.com`和`device-login.flocksafety.com`的URL则位于该APK的字符串资源中(`resources/res/values/strings.xml`)。 Auth0客户端ID和密钥位于不同的分区。下载`partitions/27_persist.img`(32 MB)并解压。文件位于`flock/auth0/auth0_cred`。这是摄像头的`/persist`分区,未加密,设计用于在恢复出厂设置后保留数据。 MAC地址和2264次对`hpnotiq`的调用来自摄像头的日志,位于`partitions/53_media.img`(18 GB)中。这些日志存储在一个加密容器中,不过密钥也存储在同一分区的一个名为`expand_1fcdafef903c40cab3aff81bec914d01.key`的文件中,呵呵。解锁后,日志是`media/0/media/crashpack/`下的gzip压缩tar包。 ## 该特定摄像头位于密尔沃基郊区 Flock摄像头的日志中包含155次摄像头位置的GPS坐标,所有坐标都在彼此约100米范围内,我认为这对于一个从不移动的接收器来说是普通的GPS抖动。出现频率最高的坐标是43.10151313, -88.05270186。如果您在谷歌地图上搜索该坐标,最终会到达密尔沃基西北郊的一个地方。 坐标43.10151313, -88.05270186,来自谷歌地图我从未去过密尔沃基地区,但看起来这台Flock摄像头位于一个名为沃瓦托萨的城市,在北梅费尔路(N Mayfair Rd)上,紧邻韦伯斯特公园(Webster Park)。 放大摄像头位置通过谷歌街景视图,我在北梅费尔路周围走动,寻找Flock摄像头。看起来GPS略有偏差,实际上它在街道西侧,靠近公园的一个停车场。 看到那个带有禁停标志的灯柱上的太阳能板了吗?那就是Flock摄像头。Flock摄像头,序列号`23091220026`,MAC地址`F4:6A:DD:57:46:FB`,找到你了! 问题中的Flock摄像头,由谷歌的监控设施捕捉谁能想到,这个整天监视无辜路人的小摄像头,有朝一日会落入stegan0gram集体的黑客手中? ### 我在数据中如何发现此信息 下载`partitions/53_media.img`(18 GB),解压,挂载(轻微)加密的文件系统,然后查看`media/0/media/crashpack/`中的日志。提取任意一个日志文件——哪个都行。里面有许多文件名类似`ciroc.2026-*.log`的日志。用`Location`搜索这些文件,您将看到GPS坐标: ``` ❯ cat ciroc.2026-01-27.3.log | grep Location 01-28 08:22:31.304 INFO [Binder:1584_1] QCamera2: Location: 43.10151313, -88.05270186 01-28 08:32:32.240 INFO [Binder:1584_3] QCamera2: Location: 43.10151313, -88.05270186 --snip-- ``` --- 希望这篇报道能鼓励各地市议会取消与Flock及其他自动车牌识别供应商的合同,并停止以牺牲所有人隐私为代价向警方提供更多监控工具。

相似文章

Flock CEO:“这件事我们搞错了”

The Verge

Flock CEO Garrett Langley 道歉并宣布对其监控工具进行更新,包括强制使用 Audit Assistance、为搜索添加案件代码,以及将 ALPR 数据默认保留时间从 30 天缩短至 7 天。此前有报道称,警察通过其车牌摄像头进行跟踪骚扰。ACLU 对此持怀疑态度,称这些改变更多是公关行为而非实质性改革。

Flock 的辩护者忽略了什么

MIT Technology Review

本文审视了 Flock Safety 对其车牌识别网络被警方滥用的回应,指出了新保障措施中的漏洞以及对大规模监控和公民自由的更广泛关切。