未认证的API端点可能让你损失数百万!请参考Twilio的案例
是一款广泛使用的多因素身份验证应用程序,它提供双因素Linux兼容,并将代码存储在云端,确保用户即使丢失手机也能始终访问他们的2FA。
然而,最近的漏洞暴露了Authy系统中的一个严重安全隐患。威胁行为者可以利用不安全的API端点输入大量电话号码,进而获取与Authy帐户关联的号码及其他敏感信息。这一漏洞导致3300万个电话号码被泄露,给用户带来了极大的安全风险。尽管Authy采取了强有力的安全措施,但此次事件对其声誉造成了严重影响。
什么是未经验证的API端点?
未经身份验证的API路由或URL。这意味着任何人都可以向这些端点发送请求并接收响应,而无需验证其身份。
未经验证的API端点可能带来以下安全风险:
- 未经授权的访问:任何人都可以访问端点,可能导致敏感信息泄露。
- 数据利用:恶意行为者可利用端点收集大量数据,例如Twilio/Authy案例中所示。
- 服务滥用:端点可能被滥用,导致系统请求过载,引发拒绝服务(DoS)攻击。
尽管这些威胁显而易见,但为了简化开发流程,许多开发者在初期阶段往往忽略了安全性,导致未经验证的端点普遍存在。
如何保护未经验证的API端点
为了在不影响开发效率的情况下保护API端点,可以采取以下策略:
1. 实现身份验证和授权
- 身份验证:确保API端点需要正确的身份验证机制,例如OAuth、API密钥或令牌。这样可以确保只有经过验证的用户或系统才能访问API。
- 授权:在身份验证的基础上,进一步确保用户具有访问特定资源或执行操作的权限。
2. 速率限制和节流
3. 使用HTTPS
始终使用HTTPS对传输中的数据进行加密,防止敏感信息被窃听或遭受中间人攻击。
4. 使用API可观测性工具
借助工具(如Treblle),获取API请求和响应的详细日志、指标和跟踪数据,快速监控和调试可疑活动。
5. API网关和Web应用程序防火墙(WAF)
6. 使用强API密钥和令牌
确保API密钥和令牌复杂、唯一且定期轮换。避免在应用程序中硬编码密钥或将其暴露在公共存储库中。
经过身份验证的API端点与未经身份验证的端点的区别
经过身份验证的API端点需要适当的身份验证和授权,而未经身份验证的端点则无需任何验证即可访问。以下是两者的主要区别:
| 特性 | 经过身份验证的端点 | 未经身份验证的端点 |
|---|---|---|
| 访问权限 | 需要身份验证和授权 | 无需身份验证和授权 |
| 安全性 | 高 | 低 |
| 潜在风险 | 较小 | 高 |
保护API的四大工具
以下是保护API安全的四款推荐工具:
1. Graylog用于日志监控
Graylog提供强大的日志管理和警报功能,可通过详细日志实现更高效的威胁检测。
2. OAuth测试工具
专门用于测试OAuth认证的工具,确保身份验证机制的安全性。
3. Datadome用于API端点限制
Datadome通过限制API端点的访问,防止滥用和潜在攻击。
4. Treblle:一体化API管理平台
Treblle提供主动API安全监控功能,对每个API请求执行多达15次安全检查,并根据威胁级别(低、中、高)进行分类。它还通过自动IP信誉检查评估流量峰值时的潜在威胁,有效防止SQL注入等攻击。Treblle可无缝集成到现有工作流程中,提升API管理效率。
结论
Twilio API漏洞事件再次提醒我们,保护API安全至关重要。Twilio的Authy多因素身份验证应用程序因不安全的API端点而导致数百万用户的电话号码泄露,使用户面临短信钓鱼和SIM交换攻击的风险。
数据泄露、未经授权的访问以及严重的声誉损失。
通过使用如Treblle等工具,组织可以主动管理API安全,防止类似Twilio事件的发生,确保数字服务的完整性和可靠性。保护API安全不仅是技术需求,更是维护用户信任的重要环节。
原文链接: https://blog.treblle.com/unauthenticated-api-endpoint-costs-millions-ask-twilio/