CWE-307: Improper Restriction of Excessive Authentication Attempts
View customized information:
该表显示了与该弱点相关的弱点和高级类别。这些关系定义为childof,parentof,ementof,并深入了解可能存在于较高和较低抽象水平的类似项目。此外,定义了诸如Peerof和Canalsobe之类的关系,以显示用户可能想要探索的类似弱点。
Relevant to the view "Research Concepts" (CWE-1000)
Relevant to the view "Software Development" (CWE-699)
Relevant to the view "Weaknesses for Simplified Mapping of Published Vulnerabilities" (CWE-1003)
与“建筑概念”(CWE-1008)有关
引言的不同模式提供了有关如何以及何时引入这种弱点的信息。该阶段识别可能发生介绍的生命周期中的一个点,而音符提供了与给定阶段中引言有关的典型情况。
该清单显示了可能出现的弱点的可能区域。这些可能适用于特定的命名语言,操作系统,体系结构,范式,技术或一类此类平台。该平台与给定弱点出现在该实例的频率一起列出。
语言 Class: Not Language-Specific(Undetermined Prevalence)
该表指定与弱点相关的不同个人后果。该范围确定了违反的应用程序安全区域,而影响描述了如果对手成功利用这一弱点,就会产生负面的技术影响。其可能性提供了有关预期相对于列表中其他后果的特定后果的可能性的信息。例如,可能会利用弱点来实现一定的影响,但很可能会利用它来实现不同的影响。
Example 1 在2009年1月,攻击者能够获得管理员访问Twitter服务器,因为该服务器没有限制登录尝试的数量[REF-236]。攻击者针对Twitter支持团队的成员,并能够通过猜测大量常用单词来成功猜测成员的密码。作为支持人员的成员获得访问权后,攻击者使用管理员小组来访问属于名人和政客的33个帐户。最终,似乎发送了来自折衷帐户的虚假Twitter消息。
Example 2 The following code, extracted from a servlet's doPost() method, performs an authentication lookup every time the servlet is invoked.
(bad code)
Example Language:爪哇
字符串用户名= request.getParameter(“用户名”);
字符串密码= request.getParameter(“密码”); int authResult = authenticateUser(用户名,密码); However, the software makes no attempt to restrict excessive authentication attempts. Example 3 该代码试图通过在完成身份验证之前导致该过程入睡来限制登录尝试的数量。
(bad code)
Example Language:PHP
$username = $_POST['username'];
$ password = $ _post ['password']; 睡眠(2000); $ iSauthentication = AuthenticateUser($ username,$ password); 但是,并行连接没有限制,因此这不会增加攻击者完成攻击所需的时间。 Example 4 在以下C/C ++示例中,ValidateUser方法打开套接字连接,从套接字读取用户名和密码,并尝试对用户名和密码进行身份验证。
(bad code)
Example Language:C
int validateUser(char *host, int port)
{
int socket = opensocketConnection(主机,端口);
if (socket < 0) {
printf(“无法打开插座连接”); }return(FAIL); int isValidUser = 0; char用户名[username_size]; char password[PASSWORD_SIZE]; while (isValidUser == 0) {
if (getNextMessage(socket, username, USERNAME_SIZE) > 0) {
if(getNextMessage(套接字,密码,password_size)> 0){ }
isValidUser = AuthenticateUser(username, password); }返回(成功); The validateUser method will continuously check for a valid username and password without any restriction on the number of authentication attempts made. The method should limit the number of authentication attempts made to prevent brute force attacks as in the following example code.
(good code)
Example Language:C
int validateUser(char *host, int port)
{
...
int count = 0; while ((isValidUser == 0) && (count < MAX_ATTEMPTS)) {
if (getNextMessage(socket, username, USERNAME_SIZE) > 0) {
if(getNextMessage(套接字,密码,password_size)> 0){ }
isValidUser = AuthenticateUser(username, password); }count++; if (isValidUser) {
返回(成功); }别的 {
return(FAIL); }Example 5 Consider this example from a real-world attack against the iPhone [REF-1218]。攻击者可以使用蛮力方法;每次发生失败的猜测时,攻击者都会在记录失败的条目之前迅速削减功率,从而有效地绕开了对失败身份验证尝试次数的预期限制。请注意,此攻击需要拆除手机电池并直接连接到手机的电源,并且蛮力攻击仍然很耗时。
This MemberOf Relationships table shows additional CWE Categories and Views that reference this weakness as a member. This information is often useful in understanding where a weakness fits within the context of external information sources.
More information is available — Please select a different filter.
|
使用共同弱点枚举(CWE)和本网站的相关参考使用条款. CWE is sponsored by theU.S. Department of Homeland Security(DHS)Cybersecurity and Infrastructure Security Agency(CISA),由Homeland Security Systems Engineering and Development Institute(HSSEDI)由manbetx客户端首页(MITRE). Copyright © 2006–2023, The MITRE Corporation. CWE, CWSS, CWRAF, and the CWE logo are trademarks of The MITRE Corporation. |