CVE-2010-0232 : Détail

CVE-2010-0232

7.8
/
HIGH
0.99%V3
Local
2010-01-21 18:00 +00:00
2018-10-12 17:57 +00:00

Alerte pour un CVE

Restez informé de toutes modifications pour un CVE spécifique.
Gestion des alertes

Descriptions

The kernel in Microsoft Windows NT 3.1 through Windows 7, including Windows 2000 SP4, Windows XP SP2 and SP3, Windows Server 2003 SP2, Windows Vista Gold, SP1, and SP2, and Windows Server 2008 Gold and SP2, when access to 16-bit applications is enabled on a 32-bit x86 platform, does not properly validate certain BIOS calls, which allows local users to gain privileges by crafting a VDM_TIB data structure in the Thread Environment Block (TEB), and then calling the NtVdmControl function to start the Windows Virtual DOS Machine (aka NTVDM) subsystem, leading to improperly handled exceptions involving the #GP trap handler (nt!KiTrap0D), aka "Windows Kernel Exception Handler Vulnerability."

Informations

Faiblesses connexes

CWE-ID Nom de la faiblesse Source
CWE Other No informations.

Metrics

Metric Score Sévérité CVSS Vecteur Source
V3.1 7.8 HIGH CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Base: Exploitabilty Metrics

The Exploitability metrics reflect the characteristics of the thing that is vulnerable, which we refer to formally as the vulnerable component.

Attack Vector

This metric reflects the context by which vulnerability exploitation is possible.

Local

The vulnerable component is not bound to the network stack and the attacker’s path is via read/write/execute capabilities.

Attack Complexity

This metric describes the conditions beyond the attacker’s control that must exist in order to exploit the vulnerability.

Low

Specialized access conditions or extenuating circumstances do not exist. An attacker can expect repeatable success when attacking the vulnerable component.

Privileges Required

This metric describes the level of privileges an attacker must possess before successfully exploiting the vulnerability.

Low

The attacker requires privileges that provide basic user capabilities that could normally affect only settings and files owned by a user. Alternatively, an attacker with Low privileges has the ability to access only non-sensitive resources.

User Interaction

This metric captures the requirement for a human user, other than the attacker, to participate in the successful compromise of the vulnerable component.

None

The vulnerable system can be exploited without interaction from any user.

Base: Scope Metrics

The Scope metric captures whether a vulnerability in one vulnerable component impacts resources in components beyond its security scope.

Scope

Formally, a security authority is a mechanism (e.g., an application, an operating system, firmware, a sandbox environment) that defines and enforces access control in terms of how certain subjects/actors (e.g., human users, processes) can access certain restricted objects/resources (e.g., files, CPU, memory) in a controlled manner. All the subjects and objects under the jurisdiction of a single security authority are considered to be under one security scope. If a vulnerability in a vulnerable component can affect a component which is in a different security scope than the vulnerable component, a Scope change occurs. Intuitively, whenever the impact of a vulnerability breaches a security/trust boundary and impacts components outside the security scope in which vulnerable component resides, a Scope change occurs.

Unchanged

An exploited vulnerability can only affect resources managed by the same security authority. In this case, the vulnerable component and the impacted component are either the same, or both are managed by the same security authority.

Base: Impact Metrics

The Impact metrics capture the effects of a successfully exploited vulnerability on the component that suffers the worst outcome that is most directly and predictably associated with the attack. Analysts should constrain impacts to a reasonable, final outcome which they are confident an attacker is able to achieve.

Confidentiality Impact

This metric measures the impact to the confidentiality of the information resources managed by a software component due to a successfully exploited vulnerability.

High

There is a total loss of confidentiality, resulting in all resources within the impacted component being divulged to the attacker. Alternatively, access to only some restricted information is obtained, but the disclosed information presents a direct, serious impact. For example, an attacker steals the administrator's password, or private encryption keys of a web server.

Integrity Impact

This metric measures the impact to integrity of a successfully exploited vulnerability. Integrity refers to the trustworthiness and veracity of information.

High

There is a total loss of integrity, or a complete loss of protection. For example, the attacker is able to modify any/all files protected by the impacted component. Alternatively, only some files can be modified, but malicious modification would present a direct, serious consequence to the impacted component.

Availability Impact

This metric measures the impact to the availability of the impacted component resulting from a successfully exploited vulnerability.

High

There is a total loss of availability, resulting in the attacker being able to fully deny access to resources in the impacted component; this loss is either sustained (while the attacker continues to deliver the attack) or persistent (the condition persists even after the attack has completed). Alternatively, the attacker has the ability to deny some availability, but the loss of availability presents a direct, serious consequence to the impacted component (e.g., the attacker cannot disrupt existing connections, but can prevent new connections; the attacker can repeatedly exploit a vulnerability that, in each instance of a successful attack, leaks a only small amount of memory, but after repeated exploitation causes a service to become completely unavailable).

Temporal Metrics

The Temporal metrics measure the current state of exploit techniques or code availability, the existence of any patches or workarounds, or the confidence in the description of a vulnerability.

Environmental Metrics

These metrics enable the analyst to customize the CVSS score depending on the importance of the affected IT asset to a user’s organization, measured in terms of Confidentiality, Integrity, and Availability.

[email protected]
V2 7.2 AV:L/AC:L/Au:N/C:C/I:C/A:C [email protected]

CISA KEV (Vulnérabilités Exploitées Connues)

Nom de la vulnérabilité : Microsoft Windows Kernel Exception Handler Vulnerability

Action requise : Apply updates per vendor instructions.

Connu pour être utilisé dans des campagnes de ransomware : Unknown

Ajouter le : 2022-03-02 23:00 +00:00

Action attendue : 2022-03-23 23:00 +00:00

Informations importantes

Ce CVE est identifié comme vulnérable et constitue une menace active, selon le Catalogue des Vulnérabilités Exploitées Connues (CISA KEV). La CISA a répertorié cette vulnérabilité comme étant activement exploitée par des cybercriminels, soulignant ainsi l'importance de prendre des mesures immédiates pour remédier à cette faille. Il est impératif de prioriser la mise à jour et la correction de ce CVE afin de protéger les systèmes contre les potentielles cyberattaques.

EPSS

EPSS est un modèle de notation qui prédit la probabilité qu'une vulnérabilité soit exploitée.

EPSS Score

Le modèle EPSS produit un score de probabilité compris entre 0 et 1 (0 et 100 %). Plus la note est élevée, plus la probabilité qu'une vulnérabilité soit exploitée est grande.

EPSS Percentile

Le percentile est utilisé pour classer les CVE en fonction de leur score EPSS. Par exemple, une CVE dans le 95e percentile selon son score EPSS est plus susceptible d'être exploitée que 95 % des autres CVE. Ainsi, le percentile sert à comparer le score EPSS d'une CVE par rapport à d'autres CVE.

Informations sur l'Exploit

Exploit Database EDB-ID : 11199

Date de publication : 2010-01-18 23:00 +00:00
Auteur : Tavis Ormandy
EDB Vérifié : Yes

Exploit-DB Mirror: https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/11199.zip (KiTrap0D.zip) E-DB Note: Make sure to run "vdmallowed.exe" (pre-compiled) inside the subfolder. Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack ------------------------------------------------------------------------- CVE-2010-0232 In order to support BIOS service routines in legacy 16bit applications, the Windows NT Kernel supports the concept of BIOS calls in the Virtual-8086 mode monitor code. These are implemented in two stages, the kernel transitions to the second stage when the #GP trap handler (nt!KiTrap0D) detects that the faulting cs:eip matches specific magic values. Transitioning to the second stage involves restoring execution context and call stack (which had been previously saved) from the faulting trap frame once authenticity has been verified. This verification relies on the following incorrect assumptions: - Setting up a VDM context requires SeTcbPrivilege. - ring3 code cannot install arbitrary code segment selectors. - ring3 code cannot forge a trap frame. This is believed to affect every release of the Windows NT kernel, from Windows NT 3.1 (1993) up to and including Windows 7 (2009). Working out the details of the attack is left as an exercise for the reader. Just kidding, that was an homage to Derek Soeder :-) - Assumption 0: Setting up a VDM context requires SeTcbPrivilege. Creating a VDM context requires EPROCESS->Flags.VdmAllowed to be set in order to access the authenticated system service, NtVdmControl(). VdmAllowed can only be set using NtSetInformationProcess(), which verifies the caller has SeTcbPrivilege. If this is true, the caller is very privileged and can certainly be trusted. This restriction can be subverted by requesting the NTVDM subsystem, and then using CreateRemoteThread() to execute in the context of the subsystem process, which will already have this flag set. - Assumption 1: ring3 code cannot install arbitrary code segment selectors. Cpl is usually equal to the two least significant bits of cs and ss, and is a simple way to calculate the privilege of a task. However, there is an exception, Virtual-8086 mode. Real mode uses a segmented addressing scheme in order to allow 16-bit addresses to access the 20-bit address space. This is achieved by forming physical addresses from a calculation like (cs << 4) + (eip & 0xffff). The same calculation is used to map the segmented real address space onto the protected linear address space in Virtual-8086 mode. Therefore, I must be permitted to set cs to any value, and checks for disallowed or privileged selectors can be bypassed (PsSetLdtEnties will reject any selector where any of the three lower bits are unset, as is the case with the required cs pair). - Assumption 2: ring3 code cannot forge a trap frame. Returning to usermode with iret is a complicated operation, the pseudocode for the iret instruction alone spans several pages of Intel's Software Developers Manual. The operation occurs in two stages, a pre-commit stage and a post-commit stage. Using the VdmContext installed using NtVdmControl(), an invalid context can be created that causes iret to fail pre-commit, thus forging a trap frame. The final requirement involves predicting the address of the second-stage BIOS call handler. The address is static in Windows 2003, XP and earlier operating systems, however, Microsoft introduced kernel base randomisation in Windows Vista. Unfortunately, this potentially useful exploit mitigation is trivial to defeat locally as unprivileged users can simply query the loaded module list via NtQuerySystemInformation(). -------------------- Affected Software ------------------------ All 32bit x86 versions of Windows NT released since 27-Jul-1993 are believed to be affected, including but not limited to the following actively supported versions: - Windows 2000 - Windows XP - Windows Server 2003 - Windows Vista - Windows Server 2008 - Windows 7 -------------------- Consequences ----------------------- Upon successful exploitation, the kernel stack is switched to an attacker specified address. An attacker would trigger the vulnerability by setting up a specially formed VDM_TIB in their TEB, using a code sequence like this: /* ... */ // Magic CS required for exploitation Tib.VdmContext.SegCs = 0x0B; // Pointer to fake kernel stack Tib.VdmContext.Esi = &KernelStack; // Magic IP required for exploitation Tib.VdmContext.Eip = Ki386BiosCallReturnAddress; NtCurrentTeb()->Reserved4[0] = &Tib; /* ... */ Followed by /* ... */ NtVdmControl(VdmStartExecution, NULL); /* ... */ Which will reach the following code sequence via the #GP trap handler, nt!KiTrap0D. Please note how the stack pointer is restored from the saved (untrusted) trap frame at 43C3E6, undoubtedly resulting in the condition described above. /* ... */ .text:0043C3CE Ki386BiosCallReturnAddress proc near .text:0043C3CE mov eax, large fs:KPCR.SelfPcr .text:0043C3D4 mov edi, [ebp+KTRAP_FRAME.Esi] .text:0043C3D7 mov edi, [edi] .text:0043C3D9 mov esi, [eax+KPCR.NtTib.StackBase] .text:0043C3DC mov ecx, 84h .text:0043C3E1 mov [eax+KPCR.NtTib.StackBase], edi .text:0043C3E4 rep movsd .text:0043C3E6 mov esp, [ebp+KTRAP_FRAME.Esi] .text:0043C3E9 add esp, 4 .text:0043C3EC mov ecx, [eax+KPCR.PrcbData.CurrentThread] .text:0043C3F2 mov [ecx+KTHREAD.InitialStack], edi .text:0043C3F5 mov eax, [eax+KPCR.TSS] .text:0043C3F8 sub edi, 220h .text:0043C3FE mov [eax+KTSS.Esp0], edi .text:0043C401 pop edx .text:0043C402 mov [ecx+KTHREAD.Teb], edx .text:0043C405 pop edx .text:0043C406 mov large fs:KPCR.NtTib.Self, edx .text:0043C40D mov ebx, large fs:KPCR.GDT .text:0043C414 mov [ebx+3Ah], dx .text:0043C418 shr edx, 10h .text:0043C41B mov byte ptr [ebx+3Ch], dl .text:0043C41E mov [ebx+3Fh], dh .text:0043C421 sti .text:0043C422 pop edi .text:0043C423 pop esi .text:0043C424 pop ebx .text:0043C425 pop ebp .text:0043C426 retn 4 /* ... */ Possibly naive example code for triggering this condition is available from the link below. http://lock.cmpxchg8b.com/c0af0967d904cef2ad4db766a00bc6af/KiTrap0D.zip Exploit-DB Mirror: https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/11199.zip (KiTrap0D.zip) The code has been tested on Windows XP, Windows Server 2003/2008, Windows Vista and Windows 7. Support for other affected operating systems is left as an exercise for the interested reader. ------------------- Mitigation ----------------------- If you believe you may be affected, you should consider applying the workaround described below. Temporarily disabling the MSDOS and WOWEXEC subsystems will prevent the attack from functioning, as without a process with VdmAllowed, it is not possible to access NtVdmControl() (without SeTcbPrivilege, of course). The policy template "Windows Components\Application Compatibility\Prevent access to 16-bit applications" may be used within the group policy editor to prevent unprivileged users from executing 16-bit applications. I'm informed this is an officially supported machine configuration. Administrators unfamiliar with group policy may find the videos below instructive. Further information is available from the Windows Server Group Policy Home http://technet.microsoft.com/en-us/windowsserver/grouppolicy/default.aspx. To watch a demonstration of this policy being applied to a Windows Server 2003 domain controller, see the link below. http://www.youtube.com/watch?v=XRVI4iQ2Nug To watch a demonstration of this policy being applied to a Windows Server 2008 domain controller, see the link below. http://www.youtube.com/watch?v=u8pfXW7crEQ To watch a demonstration of this policy being applied to a shared but unjoined Windows XP Professional machine, see the link below. http://www.youtube.com/watch?v=u7Y6d-BVwxk On Windows NT4, the following knowledgebase article explains how to disable the NTVDM and WOWEXEC subsystems. http://support.microsoft.com/kb/220159 Applying these configuration changes will temporarily prevent users from accessing legacy 16-bit MS-DOS and Windows 3.1 applications, however, few users require this functionality. If you do not require this feature and depend on NT security, consider permanently disabling it in order to reduce kernel attack surface. ------------------- Solution ----------------------- Microsoft was informed about this vulnerability on 12-Jun-2009, and they confirmed receipt of my report on 22-Jun-2009. Regrettably, no official patch is currently available. As an effective and easy to deploy workaround is available, I have concluded that it is in the best interest of users to go ahead with the publication of this document without an official patch. It should be noted that very few users rely on NT security, the primary audience of this advisory is expected to be domain administrators and security professionals. ------------------- Credit ----------------------- This bug was discovered by Tavis Ormandy. ------------------- Greetz ----------------------- Greetz to Julien, Neel, Redpig, Lcamtuf, Spoonm, Skylined, asiraP, LiquidK, ScaryBeasts, spender and all my other elite colleagues. Check out some photography while at ring0 http://flickr.com/meder. ------------------- References ----------------------- Derek Soeder has previously reported some legendary NT bugs, including multiple vdm bugs that, while unrelated to this issue, make fascinating reading. - http://seclists.org/fulldisclosure/2004/Oct/404, Windows VDM #UD LocalPrivilege Escalation - http://seclists.org/fulldisclosure/2004/Apr/477, Windows VDM TIB Local Privilege Escalation - http://seclists.org/fulldisclosure/2007/Apr/357, Zero Page Race Condition Privilege Escalation ------------------- Appendix ----------------------- SHA-1 checksum of KiTrap0D.zip follows. -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 99a047427e9085d52aaddfc9214fd1a621534072 KiTrap0D.zip -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iQEVAwUBS1W6+RvyfE4zaHEXAQK//QgAvo/VhPdeASGe7SSfC3jLwNzsfVfM+FMo x7JZMMfVUh6b/+FxvokIpsCUf7QQkv+YcyCiatutVjUok5aw5BirFtPLHORIIKPX B5gN2a4G8RIXh5yKE6FffKGQsPJNW1Ua5Jss8rf59TEj3EDky1vco+WVmmz7TsHn TQdUreVcL8wFmCAgq5X0AKrdepYDBmYLF0AUFOdG3mKJ43dnP59p9R7+ckv0pfLW XtvOgzZDNMew4z2Z53YQpE7dO+Y3H3rnhLN7jF7i9We9iiG4ATDke8byFAIDZQZx ucq5EOcRsfAAWW3O8EbzQa0NiHHScJrKDjvg0gX1Y69MBBwCLNP6yg== =LHU0 -----END PGP SIGNATURE----- -- ------------------------------------- tavisosdf.lonestar.org | finger me for my gpg key. -------------------------------------------------------

Products Mentioned

Configuraton 0

Microsoft>>Windows_2000 >> Version -

Microsoft>>Windows_7 >> Version -

Microsoft>>Windows_xp >> Version -

    Microsoft>>Windows_xp >> Version -

    References

    http://www.us-cert.gov/cas/techalerts/TA10-040A.html
    Tags : third-party-advisory, x_refsource_CERT
    http://securitytracker.com/id?1023471
    Tags : vdb-entry, x_refsource_SECTRACK
    http://seclists.org/fulldisclosure/2010/Jan/341
    Tags : mailing-list, x_refsource_FULLDISC
    http://www.vupen.com/english/advisories/2010/0179
    Tags : vdb-entry, x_refsource_VUPEN
    http://www.securityfocus.com/bid/37864
    Tags : vdb-entry, x_refsource_BID
    http://secunia.com/advisories/38265
    Tags : third-party-advisory, x_refsource_SECUNIA
    Cliquez sur le bouton à gauche (OFF), pour autoriser l'inscription de cookie améliorant les fonctionnalités du site. Cliquez sur le bouton à gauche (Tout accepter), pour ne plus autoriser l'inscription de cookie améliorant les fonctionnalités du site.