虹科Vdoo长时间致力于改善物联网和嵌入式设备安全状态的工作,除了我们的内部研究外,虹科Vdoo一直作为第三方机构与信息安全社区密切合作,帮助研究人员与供应商进行沟通,协助供应商以最专业和最安全的方式处理披露的漏洞,尽量减少已部署设备和最终用户的风险。
今天,作为我们与著名安全研究人员bashis合作的一部分,我们披露了多个网络交换机中的漏洞。近年来,bashis在不同的连接设备中发现并发布了多个零日漏洞,主要来自视频监控领域。
通过研究多个网络交换机,bashis 发现并披露了几个关键漏洞——多个导致远程代码执行 (RCE) 的堆栈溢出漏洞,其中一些不需要身份验证;对配置/固件升级CGI的未经身份验证的访问;需要的命令注入漏洞验证。这些漏洞源自Realtek管理开关控制器(RTL83xx)SDK,可能与使用此SDK代码的多个不同供应商的多个网络交换模型有关。
虹科Vdoo联系了bashis列举的所有可能受影响的供应商,并负责任地向做出响应的供应商披露了漏洞。但是从我们于2019年3月首次采取措施以来,我们没有从Realtek收到有关这些问题的任何技术回复。
受影响的供应商/型号列表
Zyxel通信集团公司,型号GS1900-24 v2.40AAHL.120180705- 已确认并修补漏洞。
NETGEAR, 型号GS750E ProSAFE Plus Switch v1.0.0.22, GS728TPv2, GS728TPPv2, GS752TPv2, GS752TPP v6.0.0.45, GS752TPP v6.0.0.37- 已确认并修补漏洞。
Cisco系统股份有限公司,220 系列智能交换机,1.1.4.4 之前的版本 - 已确认并修补漏洞。
Realtek,SDK+型号RTL8380-24GE-4GEC v3.0.0.43126 - 到目前为止没有收到对Vdoo最初方案的回应。
EnGenius技术股份有限公司,型号EGS2110P v1.05.20150810-1754, EWS1200-28TFP v1.07.22c1.9.21181018-0228, EWS1200-28TFP v1.06.21c1.8.77_180906-0716-到目前为止,虹科Vdoo没有收到任何回应。
PLANET技术公司,型号GS-4210-8P2S v1.0b17111、GS-4210-24T2S v2.0b160727-到目前为止,虹科Vdoo没有收到任何回应。
DrayTek公司,型号 VigorSwitch P1100 v2.1.4 - 漏洞尚待供应商确认。
CERIO公司,型号 CS-2424G-24P v1.00.29-到目前为止,虹科Vdoo没有收到任何回应。
ALLNET股份有限公司,型号 ALL-SG8208M v2.2.1 - 漏洞已确认,尚未修补。
Xhome,型号DownLoop-G24M v3.0.0.43126-到目前为止,虹科Vdoo没有收到任何回应。
Abaniact(INABA 的一个品牌),型号 AML2-PS16-17GP L2 v116B00033-到目前为止,虹科Vdoo没有收到任何回应。
Araknis 网络 (SnapAV),型号 AN-310-SW-16-POE v1.2.00_171225-1618 - 漏洞尚未得到供应商的确认。
EDIMAX技术有限公司, 型号 GS-5424PLC v1.1.1.6, GS-5424PLC v1.1.1.5-到目前为止,虹科Vdoo没有收到任何回应。
Open Mesh公司的模型为 OMS24 v01.03.24_180823-1626-到目前为止,虹科Vdoo没有收到任何回应。
Pakedgedevice & Software公司,型号 SX-8P v1.04 - 到目前为止,没有收到对Vdoo 最初方法的回应。
深圳市天网博通科技有限公司,型号 P3026M-24POE (V3) v3.1.1-R1 - 到目前为止没有收到来自Vdoo 的初始方法的回应。
虹科Vdoo将继续进行披露并与受影响的供应商合作。因此,我们鼓励使用 SDK 并且可能存在漏洞的供应商与我们联系,反映新的受影响供应商、修补和披露的当前状态。
对设备制造商的建议
本研究分析的网络交换机中发现的一些不良架构实践使攻击者更容易发现和利用漏洞。我们建议设备制造商考虑以下几点:
输入清除
当从外部接口获取输入时,输入应该从可能导致shell命令注入漏洞的shell特殊字符中清除。
采用外部进程执行任务(例如配置设备或其操作系统),而不是使用编程语言(库函数)的现有 API(如果存在)。
执行外部进程,特别是运行 shell 命令可能会向程序引入命令注入漏洞。
使用安全的函数
strcpy函数是不安全的,应该替换为安全的strncpy函数,它可以限制复制到目标缓冲区的字符数量并避免潜在的缓冲区溢出漏洞。最佳做法不使用这些函数的任何不安全版本。
用户模式ASLR
ASLR已经在设备上运行的Linux操作系统中实现并打开,唯一需要做的更改是通过向GCC添加“-pie -fPIE”标志使主二进制文件与其兼容。使用此功能,攻击者无法猜测他想要跳转到的功能的地址。
堆栈金丝雀
这是一个非常简单且重要的安全功能,可以通过向GCC添加“-fstack-protector-all”标志来开启。使用此功能,可执行文件会在识别出堆栈受到威胁时崩溃。这将短暂地拒绝服务,但至少它不会允许攻击者运行他选择的代码。
需要注意的是,此功能会导致性能下降,因为每个函数都会检查堆栈金丝雀。如果这种性能下降导致无法使用,则可以控制堆栈金丝雀的创建并将它们设置为仅放置在很可能容易受到堆栈缓冲区溢出影响的函数上。如果使用GCC编译器,可以通过使用“-fstack-protector”标志和“–param ssp-buffer-size”来完成。
未进行固件加密
固件加密将提高门槛,使攻击者更难分析固件中的错误,特别是使用最新固件和以前固件之间的二进制差异方法来查找和分析补丁,并通过这种方式 - 发现旧版本中仍然存在的漏洞。
此外,该设备包含带有函数名称等符号的未剥离二进制文件。这有助于我们理解代码的工作原理。另一方面,值得注意的是,固件内容的隐匿性安全方法可能会导致存在问题,但由于固件已正确加密,所以未被发现和修复。通过向社区分发未加密的固件,安全研究人员可以通过负责任的披露流程审查安全性并通过他们的发现来增强安全性。
缺少固件数字签名
这允许攻击者重新打包恶意固件。供应商应考虑签署他们的固件,以防止这种威胁。
附录
虹科Vdoo是端到端的产品安全分析平台,在整个产品生命周期中自动化所以软件安全任务,确保所有安全问题得到优先处理、沟通和缓解。垂直无关的平台使各种行业的设备制造商和部署者能够跨多个业务线扩展其产品安全功能。虹科Vdoo的自动保护连接产品的方法使客户大大缩短了上市时间,减少了资源需求,增加了销售,降低了总体风险。