Security
Headlines
HeadlinesLatestCVEs

Headline

CVE-2021-40425: TALOS-2021-1433 || Cisco Talos Intelligence Group

An out-of-bounds read vulnerability exists in the IOCTL GetProcessCommand and B_03 of Webroot Secure Anywhere 21.4. A specially-crafted executable can lead to denial of service. An attacker can issue an ioctl to trigger this vulnerability. An out-of-bounds read vulnerability exists in the IOCTL GetProcessCommand and B_03 of Webroot Secure Anywhere 21.4. An IOCTL_B03 request with specific invalid data causes a similar issue in the device driver WRCore_x64. An attacker can issue an ioctl to trigger this vulnerability.

CVE
#vulnerability#web#ios#mac#windows#microsoft#cisco#dos

Summary

An out-of-bounds read vulnerability exists in the IOCTL GetProcessCommand and B_03 of Webroot Secure Anywhere 21.4. A specially-crafted executable can lead to denial of service. An attacker can issue an ioctl to trigger this vulnerability.

Tested Versions

Webroot Secure Anywhere 21.4

Product URLs

Secure Anywhere - https://www.webroot.com/us/en/home/products/av

CVSSv3 Score

7.1 - CVSS:3.0/AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H

CWE

CWE-125 - Out-of-bounds Read

Details

A windows device driver is almost like a kernel DLL that, once loaded, provides additional features. In order to communicate with these device drivers, Windows has a major component named Windows I/O Manager. The Windows IO Manager is responsible for the interface between user applications and device drivers. It implements I/O Request Packets (IRP) to enable the communication with the devices drivers, answering to all I/O requests.
For more information see the Microsoft website https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/example-i-o-request—an-overview.

The driver is responsible for creating a device interface with different functions to answer to specific codes, named major code function. If the designer wants to implement customized functions into a driver, there is one major function code named IRP_MJ_DEVICE_CONTROL. Handling such major code function, device drivers will support specific I/O Control Code (IOCTL) through a dispatch routine.

The Windows I/O Manager provides three different methods to enable the shared memory: - Buffered I/O - Direct I/O - Neither I/O

Without getting into the details of the IO Manager mechanisms, the method Buffered I/O is often the easiest one for handling memory user buffers from a device perspective.
The I/O Manager is providing all features to enable device drivers sharing buffers between userspace and kernelspace. It will be responsible for copying data back and forth.

Let’s see some examples of routines (which you should not copy as is) that explain how things work.
When creating a driver, you’ll have several functions to implement, and you’ll find some dispatcher routines to handle different IRP as follows:

extern "C"
NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT pDriverObject, _In_ PUNICODE_STRING RegistryPath)
{
 [...]
        pDriverObject->DriverUnload = DriverUnload;
        pDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DriverIOctl;
        pDriverObject->MajorFunction[IRP_MJ_CREATE] = DriverCreate;
        pDriverObject->MajorFunction[IRP_MJ_CLOSE] = DriverClose;
[...]
}

The DriverEntry is the function main for a driver. This is the place where initializations start.

We can see for example the pDriverObject which is a PDRIVER_OBJECT object given by the system to associate different routines, to be called against specific codes, into the Majorfunction table IRP_MJ_DEVICE_CONTROL for DriverIOctl etc.

Then later inside the driver you’ll see the implementation of the DriverIOctl routine responsible for handling the IOCTL code. It can be something like below:

NTSTATUS DriverIOctl(PDEVICE_OBJECT pDevObject, PIRP pIrp)
{
   [...]
    auto pIrpSp = IoGetCurrentIrpStackLocation(pIrp);
    switch (pIrpSp->Parameters.DeviceIoControl.IoControlCode)
    {

    case IO_CREATE_EXAMPLE:
            ioctl_inbuffer_data = (ioctl_inbuffer*)pIrp->AssociatedIrp.SystemBuffer;
            auto InputBufferLength = pIrpSp->Parameters.DeviceIoControl.InputBufferLength;
            auto OutputBufferLength = pIrpSp->Parameters.DeviceIoControl.OutputBufferLength;
     [...] some code

        pIrp->IoStatus.Information = 0;
        pIrp->IoStatus.Status = status;

        break;
     }
     
     pIrp->IoStatus.Information = some value;
     pIrp->IoStatus.Status = status;
     return status;
}

First the we can see the pIrp pointer to an IRP structure (the description would be out of the scope of this document). Keep in mind this pointer will be useful for accessing data.
So here for example we can observe some switch-case implementation depending on the IoControlCode IOCTL. When the device driver gets an IRP with code value IO_CREATE_EXAMPLE, it performs the operations below the case. To get into the buffer data exchanged between userspace and kernelspace and vice-versa, we’ll look into SystemBuffer passed as an argument through the pIrp pointer.

On the device side, the pointer inside an IRP represents the user buffer, usually a field named Irp->AssociatedIrp.SystemBuffer, when the buffered I/O mechanism is chosen. The specification of the method is indicated by the code itself.
On the userspace side, an application would need to gain access to the device driver symbolic link if it exists, then send some ioctl requests as follows:

success  = ::DeviceIoControl(
    ghDevice,
    IO_CREATE_EXAMPLE,                  // control code
    &gpIoctl,                           // input buffer
    sizeof(struct ioctl_inbuffer),      // input buffer length
    &gpIoctl,                           // output buffer
    sizeof(struct ioctl_inbuffer),      // output buffer length
    &returned,
    nullptr
);

Such a call will result in an IRP with a major code IRP_MJ_DEVICE_CONTROL and a control code to IO_CREATE_EXAMPLE. The buffer passed from userspace here as input gpIoctl, and output will be accessible from the device driver in the kernelspace via pIrp->AssociatedIrp.SystemBuffer. The lengths specified on the DeviceIoControl parameters will be used to build the IRP, and the device would be able to get them into the InputBufferLength and the OutputBufferLength respectively.

Now below we’ll see two examples of out-of-bounds read, which can lead to different behaviors and more frequently a local denial of service and blue screen of death through the usage of the device driver WRCore_x64.

CVE-2021-40424 - Out-of-bounds GetProcessCommandLine

The GetProcessCommandLine IOCTL request could cause an out-of-bounds read in the device driver WRCore_x64, as shown below:

WRCore_x64+0x190b:
fffff80f`ad60190b 8b4024          mov     eax,dword ptr [rax+24h] ds:ffff8488`e3a0b004=????????

When inspecting the memory, we see the out-of-bounds read in non-mapped memory

3: kd> dq ffff8488e3a0afe0
ffff8488`e3a0afe0  00000000`00000000 00000000`00000000
ffff8488`e3a0aff0  00000000`00000000 55555555`55555555
ffff8488`e3a0b000  ????????`???????? ????????`????????
ffff8488`e3a0b010  ????????`???????? ????????`????????
ffff8488`e3a0b020  ????????`???????? ????????`????????
ffff8488`e3a0b030  ????????`???????? ????????`????????
ffff8488`e3a0b040  ????????`???????? ????????`????????
ffff8488`e3a0b050  ????????`???????? ????????`????????

The call stack is the following, clearly indicating the out-of-bounds happening in WRCore_x64+0x190b

3: kd> k
 # Child-SP          RetAddr               Call Site
00 ffffe781`793f6c18 fffff802`1946046f     nt!KeBugCheckEx
01 ffffe781`793f6c20 fffff802`192b5500     nt!MiSystemFault+0x18d0bf
02 ffffe781`793f6d20 fffff802`1941b35e     nt!MmAccessFault+0x400
03 ffffe781`793f6ec0 fffff80f`ad60190b     nt!KiPageFault+0x35e
04 ffffe781`793f7050 fffff80f`ad61decf     WRCore_x64+0x190b
05 ffffe781`793f7080 fffff80f`ad61c6d3     WRCore_x64+0x1decf
06 ffffe781`793f7110 fffff802`193830b7     WRCore_x64+0x1c6d3
07 ffffe781`793f7140 fffff802`199d7f1a     nt!IopfCallDriver+0x53
08 ffffe781`793f7180 fffff802`19454db1     nt!IovCallDriver+0x266
09 ffffe781`793f71c0 fffff802`1968b308     nt!IofCallDriver+0x1af5a1
0a ffffe781`793f7200 fffff802`1968abd5     nt!IopSynchronousServiceTail+0x1a8
0b ffffe781`793f72a0 fffff802`1968a5d6     nt!IopXxxControlFile+0x5e5
0c ffffe781`793f73e0 fffff802`1941ebb5     nt!NtDeviceIoControlFile+0x56
0d ffffe781`793f7450 00007ffa`a450ce54     nt!KiSystemServiceCopyEnd+0x25
0e 00000026`34d4fbf8 00000000`00000000     0x00007ffa`a450ce54

This corresponds to the following pseudo-code named get_hprocess_from_webroot_irp. The function get_hprocess_from_webroot_irp has an argument named here webroot_irp; we’ll see later where it’s coming from.

LINE1  __int64 __fastcall get_hprocess_from_webroot_irp(webroot_irp *webroot_irp)
LINE2  {
LINE3    if ( webroot_irp->possible_size_of_self <= 32ui64 )
LINE4      j_rtl_failfast_wrappoer((__int64)webroot_irp);
LINE5    return (unsigned int)webroot_irp->getProcessInfo->hprocess;
LINE6  }

The out-of-bounds read happens at LINE5 while attempting to read what should be the hprocess.

The function get_hprocess_from_webroot_irp is called at LINE28 from a function named GetProcessCommandLine. The function GetProcessCommandLine is an IOCTL handler which is responsible for returning information against some specific process ID. Here below, the pseudo-code corresponds to GetProcessCommandLine:

LINE8  MACRO_STATUS __fastcall GetProcessCommandLine(IRP *pIrp, _IO_STACK_LOCATION *io_stack_loc)
LINE9  {
                [...]
LINE20 
LINE21   if ( io_stack_loc->Parameters.DeviceIoControl.InputBufferLength < 0x18
LINE22     || io_stack_loc->Parameters.DeviceIoControl.OutputBufferLength < 0x18 )
LINE23   {
LINE24     return STATUS_SINGLE_STEP|STATUS_OBJECT_NAME_EXISTS;
LINE25   }
LINE26   build_webroot_irp(&webroot_irp, (getProcessInfo *)pIrp->AssociatedIrp.SystemBuffer);
LINE27   process_list_related_0 = (process_related *)get_process_list_related_0();
LINE28   p_systemBuffer = get_hprocess_from_webroot_irp(&webroot_irp);
LINE29   sub_14000F8EC(process_list_related_0, &_result, p_systemBuffer);
LINE30   nt_status = 0;
LINE31   if ( !_result.some_ptr )
LINE32   {
LINE33     nt_status = STATUS_UNSUCCESSFUL;
LINE34 LABEL_11:
LINE35     sub_14000159C(&_result);
LINE36     sub_14001C190(&webroot_irp);
LINE37     return (unsigned __int64)nt_status;
LINE38   }
LINE39   field_28_of_irp = get_field_28_of_irp(&webroot_irp);
LINE40   size_to_check = (unsigned __int64)*(unsigned __int16 *)sub_14000D5E8(_result.some_ptr) >> 1;
LINE41   v8 = *(_WORD **)sub_140001A8C(&webroot_irp);
LINE42   if ( !v8 || field_28_of_irp < size_to_check )
LINE43   {
LINE44     // set some length
LINE45     sub_14000199C(&webroot_irp, size_to_check);
LINE46     pIrp->IoStatus.Information = 24i64;
LINE47     goto LABEL_11;
LINE48   }
LINE49   v9 = sub_14000D5E8(_result.some_ptr);
LINE50   v10 = &word_140028480;
LINE51   if ( *(_QWORD *)(v9 + 8) )
LINE52     v10 = *(const wchar_t **)(v9 + 8);
LINE53   _mm_lfence();
LINE54   ProbeForWrite(v8, size_to_check, 1u);
LINE55   perform_write_into_dest(v8, field_28_of_irp, (__int64)v10, size_to_check);
LINE56   _mm_lfence();
LINE57   sub_140001810(&webroot_irp, size_to_check);
LINE58   pIrp->IoStatus.Information = 24i64;
LINE59   sub_14000159C(&_result);
LINE60   sub_14001C190(&webroot_irp);
LINE61   return 0i64;
LINE62 }

The function build_webroot_irp, called at LINE26, is responsible for building the webroot_irp object, which will be used as an argument in the culprit function.

LINE63 webroot_irp *__fastcall build_webroot_irp(webroot_irp *webroot_irp, getProcessInfo *getProcessInfoData)
LINE64 {
LINE65   webroot_irp->table_function = &off_14002AAA0;
LINE66   webroot_irp->byte8 = 0;
LINE67   webroot_irp->qword10 = 0i64;
LINE68   webroot_irp->PERESOURCE = 0i64;
LINE69   webroot_irp->qword20 = 0i64;
LINE70   webroot_irp->possible_size_of_self = 56i64;
LINE71   webroot_irp->getProcessInfo = getProcessInfoData;
LINE72   if ( !getProcessInfoData )
LINE73     j_rtl_failfast_wrappoer((__int64)webroot_irp);
LINE74   webroot_irp->table_function = &off_14002AAA0;
LINE75   return webroot_irp;
LINE76 }

When looking at LINE26, we can see our buffer AssociatedIrp.SystemBuffer is corresponding to the parameter named here getProcessInfoData. The function build_webroot_irp is associating the buffer getProcessInfoData to the variable webroot_irp->getProcessInfo as we can see at LINE71.

When reversing a bit more the functions around this spot, we can deduce the expected structure getProcessInfo format should correspond to something like:

00000000 getProcessInfo  struc ; (sizeof=0x38, mappedto_561)
00000000 qword_1         dq ?
00000008 qword_2         dq ?
00000010 qword_3         dq ?
00000018 qword_4         dq ?
00000020 dword_1         dd ?
00000024 hprocess        dd ?
00000028 length          dq ?                    
00000030 output_buffer   dq ?                    
00000038 getProcessInfo  ends

The getProcessInfoData corresponds to the user buffer we can control from userspace as input buffer.
We can see here the hprocess at offset 0x24. And this is the hprocess field from the structure getProcessInfo which corresponds to the read value in the culprit function get_hprocess_from_webroot_irp without precaution, causing the out-of-bounds read. The issue is the checks done in LINE21 and LINE22 are not preventing the out-of-bounds read happening, as they check only for valid input up to input size of 0x18 bytes.

Crash Information

3: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced.  This cannot be protected by try-except.
Typically the address is just plain bad or it is pointing at freed memory.
Arguments:
Arg1: ffff8488e3a0b004, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffff80fad60190b, If non-zero, the instruction address which referenced the bad memory
    address.
Arg4: 0000000000000002, (reserved)

Debugging Details:
------------------

Unable to load image \??\C:\Program Files\Webroot\Core\WRCore.x64.sys, Win32 error 0n2

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 3078

    Key  : Analysis.DebugAnalysisManager
    Value: Create

    Key  : Analysis.Elapsed.mSec
    Value: 4492

    Key  : Analysis.Init.CPU.mSec
    Value: 7921

    Key  : Analysis.Init.Elapsed.mSec
    Value: 22374

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 83

    Key  : WER.OS.Branch
    Value: vb_release

    Key  : WER.OS.Timestamp
    Value: 2019-12-06T14:06:00Z

    Key  : WER.OS.Version
    Value: 10.0.19041.1


VIRTUAL_MACHINE:  HyperV

BUGCHECK_CODE:  50

BUGCHECK_P1: ffff8488e3a0b004

BUGCHECK_P2: 0

BUGCHECK_P3: fffff80fad60190b

BUGCHECK_P4: 2

READ_ADDRESS:  ffff8488e3a0b004 Special pool

MM_INTERNAL_CODE:  2

IMAGE_NAME:  WRCore.x64.sys

MODULE_NAME: WRCore.x64

FAULTING_MODULE: 0000000000000000 

BLACKBOXBSD: 1 (!blackboxbsd)


BLACKBOXNTFS: 1 (!blackboxntfs)


BLACKBOXWINLOGON: 1

PROCESS_NAME:  webroot_ioctl_a01.exe

TRAP_FRAME:  ffffe781793f6ec0 -- (.trap 0xffffe781793f6ec0)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=ffff8488e3a0afe0 rbx=0000000000000000 rcx=ffffe781793f70b8
rdx=ffff8488e3a0afe0 rsi=0000000000000000 rdi=0000000000000000
rip=fffff80fad60190b rsp=ffffe781793f7050 rbp=ffff8488df571d80
 r8=ffff8488df571d80  r9=000000000000000e r10=fffff80fad61c554
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei pl nz na po nc
WRCore_x64+0x190b:
fffff80f`ad60190b 8b4024          mov     eax,dword ptr [rax+24h] ds:ffff8488`e3a0b004=????????
Resetting default scope

STACK_TEXT:  
ffffe781`793f6c18 fffff802`1946046f     : 00000000`00000050 ffff8488`e3a0b004 00000000`00000000 ffffe781`793f6ec0 : nt!KeBugCheckEx
ffffe781`793f6c20 fffff802`192b5500     : 00000000`00001000 00000000`00000000 ffffe781`793f6f40 00000000`00000000 : nt!MiSystemFault+0x18d0bf
ffffe781`793f6d20 fffff802`1941b35e     : 00000000`00000001 00000000`00001000 00000000`00000000 00000000`00000000 : nt!MmAccessFault+0x400
ffffe781`793f6ec0 fffff80f`ad60190b     : fffff802`1968b308 fffff802`199eaf31 ffff8488`e377d0d8 fffff802`199f3a48 : nt!KiPageFault+0x35e
ffffe781`793f7050 fffff80f`ad61decf     : ffff8488`e0205650 ffff8488`e2afe9a0 ffff8488`e377d0d8 fffff802`199e311a : WRCore_x64+0x190b
ffffe781`793f7080 fffff80f`ad61c6d3     : 00000000`00000000 ffff8488`df5196a0 ffff8488`df5195d0 ffff8488`e0205650 : WRCore_x64+0x1decf
ffffe781`793f7110 fffff802`193830b7     : ffff8488`df5195d0 00000000`00000000 ffff8488`00000001 ffff8488`df571d80 : WRCore_x64+0x1c6d3
ffffe781`793f7140 fffff802`199d7f1a     : ffff8488`df5195d0 ffff8488`df571d80 00000000`20206f49 00000000`00000000 : nt!IopfCallDriver+0x53
ffffe781`793f7180 fffff802`19454db1     : ffff8488`df5195d0 00000000`00000002 00000000`00000028 ffff8488`e0205650 : nt!IovCallDriver+0x266
ffffe781`793f71c0 fffff802`1968b308     : ffffe781`793f7540 ffff8488`df5195d0 00000000`00000001 ffffe781`793f7540 : nt!IofCallDriver+0x1af5a1
ffffe781`793f7200 fffff802`1968abd5     : 00000000`9c412804 ffffe781`793f7540 00000000`00000000 ffffe781`793f7540 : nt!IopSynchronousServiceTail+0x1a8
ffffe781`793f72a0 fffff802`1968a5d6     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IopXxxControlFile+0x5e5
ffffe781`793f73e0 fffff802`1941ebb5     : 00000000`000000e8 00000000`00000000 00000000`77566d4d ffffe781`793f74a8 : nt!NtDeviceIoControlFile+0x56
ffffe781`793f7450 00007ffa`a450ce54     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x25
00000026`34d4fbf8 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffa`a450ce54


STACK_COMMAND:  .thread ; .cxr ; kb

FAILURE_BUCKET_ID:  AV_VRF_R_INVALID_IMAGE_WRCore.x64.sys

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {4487bf4b-fcaa-ab42-3f1b-e48f350aad47}

Followup:     MachineOwner
---------

CVE-2021-40425 - Out-of-bounds IOCTL_B03

Another IOCTL request with specific invalid data causes a similar issue in the device driver WRCore_x64, as shown below:

WRCore_x64+0x192b:
fffff803`8a87192b 8b4020          mov     eax,dword ptr [rax+20h] ds:ffffe48f`d8063000=????????

Investigating the call stack should lead us to the culprit routine :

3: kd> k
 # Child-SP          RetAddr               Call Site
00 ffff810a`4aae4478 fffff801`03d24b12     nt!DbgBreakPointWithStatus
01 ffff810a`4aae4480 fffff801`03d240f6     nt!KiBugCheckDebugBreak+0x12
02 ffff810a`4aae44e0 fffff801`03c092b7     nt!KeBugCheck2+0x946
03 ffff810a`4aae4bf0 fffff801`03c5c46f     nt!KeBugCheckEx+0x107
04 ffff810a`4aae4c30 fffff801`03ab1500     nt!MiSystemFault+0x18d0bf
05 ffff810a`4aae4d30 fffff801`03c1735e     nt!MmAccessFault+0x400
06 ffff810a`4aae4ed0 fffff803`8a87192b     nt!KiPageFault+0x35e
07 ffff810a`4aae5060 fffff803`8a88e079     WRCore_x64+0x192b
08 ffff810a`4aae5090 fffff803`8a88c760     WRCore_x64+0x1e079
09 ffff810a`4aae5110 fffff801`03b7f0b7     WRCore_x64+0x1c760
0a ffff810a`4aae5140 fffff801`041d3f1a     nt!IopfCallDriver+0x53
0b ffff810a`4aae5180 fffff801`03c50db1     nt!IovCallDriver+0x266
0c ffff810a`4aae51c0 fffff801`03e87308     nt!IofCallDriver+0x1af5a1
0d ffff810a`4aae5200 fffff801`03e86bd5     nt!IopSynchronousServiceTail+0x1a8
0e ffff810a`4aae52a0 fffff801`03e865d6     nt!IopXxxControlFile+0x5e5
0f ffff810a`4aae53e0 fffff801`03c1abb5     nt!NtDeviceIoControlFile+0x56
10 ffff810a`4aae5450 00007ff9`b24ece54     nt!KiSystemServiceCopyEnd+0x25
11 00000045`4e31fb28 00007ff9`aff5b07b     ntdll!NtDeviceIoControlFile+0x14
12 00000045`4e31fb30 00007ff9`b09a5611     KERNELBASE!DeviceIoControl+0x6b
13 00000045`4e31fba0 00007ff7`e9271142     KERNEL32!DeviceIoControlImplementation+0x81
14 00000045`4e31fbf0 00000000`00000000     poc+0x1142

So it turns out the WRCore_x64+0x192b looks to be where the out-of-bounds is occurring. This corresponds to the following pseudo-code:

LINE77  __int64 __fastcall sub_14000191C(webroot_irp *iob)
LINE78  {
LINE79    if ( iob->self_size <= 0x20ui64 )
LINE80      j_rtl_failfast_wrappoer((__int64)iob);
LINE81    return (unsigned int)iob->SystemBuffer->field_20;
LINE82  }

We can see at LINE81 a variable here named field_20 from iob->SystemBuffer.
The subroutine sub_14000191C is called directly from the ioctl dispatcher routine ioctl_2 associated with following pseudo code:

LINE84  __int64 __fastcall ioctl_2(PIRP pIrp, _IO_STACK_LOCATION *psStackLocation)
LINE85  {
            [...]
LINE93  
LINE94    if ( psStackLocation->Parameters.DeviceIoControl.InputBufferLength < 32
LINE95      || psStackLocation->Parameters.DeviceIoControl.OutputBufferLength < 32 )
LINE96    {
LINE97      return 0xC0000004i64;
LINE98    }
LINE99    SystemBuffer = pIrp->AssociatedIrp.SystemBuffer;
LINE100   memset(&iob.qword10, 0, 24);
LINE101   iob.byte8 = 0;
LINE102   iob.self_size = 64i64;
LINE103   iob.SystemBuffer = SystemBuffer;
LINE104   if ( !SystemBuffer )
LINE105     goto LABEL_11;
LINE106   iob.table_function = &off_14002B920;
LINE107   process_list_related_0 = get_process_list_related_0();
LINE108   v5 = sub_14000191C(&iob);
LINE109   sub_14000F8EC(process_list_related_0, &a2, v5);
LINE110   some_ptr = a2.some_ptr;
LINE111   if ( a2.some_ptr )
LINE112   {
LINE113     pIrp->IoStatus.Information = 64i64;
LINE114     v7 = sub_14000D850(some_ptr, &iob);
LINE115   }
LINE116   else
LINE117   {
LINE118     v7 = STATUS_UNSUCCESSFUL;
LINE119   }
LINE120   sub_14000159C(&a2);
LINE121   iob.table_function = &off_14002B920;
LINE122   if ( iob.PERESOURCE )
LINE123   {
LINE124     if ( iob.self_size <= 0x20ui64 )
LINE125 LABEL_11:
LINE126       j_rtl_failfast_wrappoer((__int64)pIrp);
LINE127   }
LINE128   sub_1400076C8(&iob.byte8);
LINE129   return v7;
LINE130 }

At LINE108 we can see the call directly to the culprit subroutine using the variable iob.
The iob.SystemBuffer is directly derived from SystemBuffer which is in fact the IOCTL input SystemBuffer as indicated at LINE99.

When doing some reverse around function the attended SystemBuffer is structured like below:

00000000 ioctl_03        struc ; (sizeof=0x40, mappedto_625)
00000000 vftable         dq ?
00000008 field_8         dq ?
00000010 field_10        dq ?
00000018 field_18        dq ?
00000020 hprocess        dd ?                    ; XREF: sub_14000191C+F/r
00000024 field_24        dd ?
00000028 self_size       dq ?
00000030 SystemBuffer    dq ?
00000038 field_38        dq ?
00000040 ioctl_03        ends

We can see here the hprocess field at offset 0x20, which again checks the size length for input buffer and output buffer done at LINE94 and at LINE95. They are not big enough, as they allow an out-of-bounds read to happen when the function sub_14000191C is called.

Crash Information

3: kd> !analyze -v
Connected to Windows 10 19041 x64 target at (Thu Dec  2 18:11:33.195 2021 (UTC + 1:00)), ptr64 TRUE
Loading Kernel Symbols
...............................................................
................................................................
...........................................
Loading User Symbols
.............
Loading unloaded module list
.........
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced.  This cannot be protected by try-except.
Typically the address is just plain bad or it is pointing at freed memory.
Arguments:
Arg1: ffffe48fd8063000, memory referenced.
Arg2: 0000000000000000, value 0 = read operation, 1 = write operation.
Arg3: fffff8038a87192b, If non-zero, the instruction address which referenced the bad memory
    address.
Arg4: 0000000000000002, (reserved)

Debugging Details:
------------------

*** WARNING: Unable to verify checksum for poc.exe

KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 7952

    Key  : Analysis.DebugAnalysisManager
    Value: Create

    Key  : Analysis.Elapsed.mSec
    Value: 11787

    Key  : Analysis.Init.CPU.mSec
    Value: 172905

    Key  : Analysis.Init.Elapsed.mSec
    Value: 24533381

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 92

    Key  : WER.OS.Branch
    Value: vb_release

    Key  : WER.OS.Timestamp
    Value: 2019-12-06T14:06:00Z

    Key  : WER.OS.Version
    Value: 10.0.19041.1


BUGCHECK_CODE:  50

BUGCHECK_P1: ffffe48fd8063000

BUGCHECK_P2: 0

BUGCHECK_P3: fffff8038a87192b

BUGCHECK_P4: 2

READ_ADDRESS:  ffffe48fd8063000 Special pool

MM_INTERNAL_CODE:  2

IMAGE_NAME:  WRCore.x64.sys

MODULE_NAME: WRCore.x64

FAULTING_MODULE: 0000000000000000 

PROCESS_NAME:  poc.exe

TRAP_FRAME:  ffff810a4aae4ed0 -- (.trap 0xffff810a4aae4ed0)
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
rax=ffffe48fd8062fe0 rbx=0000000000000000 rcx=ffff810a4aae50c8
rdx=ffffe48fd6ab8f70 rsi=0000000000000000 rdi=0000000000000000
rip=fffff8038a87192b rsp=ffff810a4aae5060 rbp=ffff810a4aae5100
 r8=ffff8383152450b2  r9=0000000000000002 r10=fffff80103f14940
r11=0000000000000000 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
iopl=0         nv up ei pl nz na pe nc
WRCore_x64+0x192b:
fffff803`8a87192b 8b4020          mov     eax,dword ptr [rax+20h] ds:ffffe48f`d8063000=????????
Resetting default scope

STACK_TEXT:  
ffff810a`4aae4478 fffff801`03d24b12     : ffff810a`4aae45e0 fffff801`03b8f200 fffff803`8a870000 00000000`00000000 : nt!DbgBreakPointWithStatus
ffff810a`4aae4480 fffff801`03d240f6     : fffff803`00000003 ffff810a`4aae45e0 fffff801`03c1e110 ffff810a`4aae4b30 : nt!KiBugCheckDebugBreak+0x12
ffff810a`4aae44e0 fffff801`03c092b7     : 00000000`00000000 00000000`00000000 ffffe48f`d8063000 ffffe48f`d8063000 : nt!KeBugCheck2+0x946
ffff810a`4aae4bf0 fffff801`03c5c46f     : 00000000`00000050 ffffe48f`d8063000 00000000`00000000 ffff810a`4aae4ed0 : nt!KeBugCheckEx+0x107
ffff810a`4aae4c30 fffff801`03ab1500     : 00000000`00000000 00000000`00000000 ffff810a`4aae4f50 00000000`00000000 : nt!MiSystemFault+0x18d0bf
ffff810a`4aae4d30 fffff801`03c1735e     : ffff8383`0d000100 fffff801`03a9b422 ffff8383`0d000340 00000000`000000ff : nt!MmAccessFault+0x400
ffff810a`4aae4ed0 fffff803`8a87192b     : ffff8383`15774060 fffff803`8a88f986 00000000`00000000 ffffe48f`00000000 : nt!KiPageFault+0x35e
ffff810a`4aae5060 fffff803`8a88e079     : ffffe48f`d240b0d8 fffff801`041df11a ffff8383`15245e30 fffff801`03e87308 : WRCore_x64+0x192b
ffff810a`4aae5090 fffff803`8a88c760     : 00000000`00000000 ffffe48f`d6ab8ea0 00000000`00000000 ffffe48f`d5c48440 : WRCore_x64+0x1e079
ffff810a`4aae5110 fffff801`03b7f0b7     : ffffe48f`d6ab8ea0 00000000`00000000 ffffe48f`00000001 ffffe48f`d0f16290 : WRCore_x64+0x1c760
ffff810a`4aae5140 fffff801`041d3f1a     : ffffe48f`d6ab8ea0 ffffe48f`d0f16290 00000000`20206f49 00000000`00000000 : nt!IopfCallDriver+0x53
ffff810a`4aae5180 fffff801`03c50db1     : ffffe48f`d6ab8ea0 00000000`00000002 00000000`00000028 ffffe48f`d5c48440 : nt!IovCallDriver+0x266
ffff810a`4aae51c0 fffff801`03e87308     : ffff810a`4aae5540 ffffe48f`d6ab8ea0 00000000`00000001 ffff810a`4aae5540 : nt!IofCallDriver+0x1af5a1
ffff810a`4aae5200 fffff801`03e86bd5     : 00000000`9c412c0c ffff810a`4aae5540 00000000`00000000 ffff810a`4aae5540 : nt!IopSynchronousServiceTail+0x1a8
ffff810a`4aae52a0 fffff801`03e865d6     : 00007ff9`b046d246 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IopXxxControlFile+0x5e5
ffff810a`4aae53e0 fffff801`03c1abb5     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!NtDeviceIoControlFile+0x56
ffff810a`4aae5450 00007ff9`b24ece54     : 00007ff9`aff5b07b 00007ff9`b049f4e8 00000002`0000000c 000001c9`c66c0101 : nt!KiSystemServiceCopyEnd+0x25
00000045`4e31fb28 00007ff9`aff5b07b     : 00007ff9`b049f4e8 00000002`0000000c 000001c9`c66c0101 00000045`4e31fb50 : ntdll!NtDeviceIoControlFile+0x14
00000045`4e31fb30 00007ff9`b09a5611     : 00000000`9c412c0c 00000000`00000000 00000000`00000000 00007ff9`b03bdd3e : KERNELBASE!DeviceIoControl+0x6b
00000045`4e31fba0 00007ff7`e9271142     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : KERNEL32!DeviceIoControlImplementation+0x81
00000045`4e31fbf0 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 000001c9`c66d15c0 : poc+0x1142


STACK_COMMAND:  .thread ; .cxr ; kb

FAILURE_BUCKET_ID:  AV_VRF_R_INVALID_IMAGE_WRCore.x64.sys

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {4487bf4b-fcaa-ab42-3f1b-e48f350aad47}

Followup:     MachineOwner
---------

Timeline

2021-12-16 - Vendor disclosure
2022-03-15 - Public Release

Discovered by Emmanuel Tacheau of Cisco Talos.

Related news

CVE-2022-28113: GitHub - code-byter/CVE-2022-28113: Unauthenticated RCE exploit for Fantec MWiD25-DS

An issue in upload.csp of FANTEC GmbH MWiD25-DS Firmware v2.000.030 allows attackers to write files and reset the user passwords without having a valid session cookie.

CVE-2022-27048: MGate MB3170/MB3270/MB3280/MB3480 Series Protocol Gateways Vulnerability

A vulnerability has been discovered in Moxa MGate which allows an attacker to perform a man-in-the-middle (MITM) attack on the device. This affects MGate MB3170 Series Firmware Version 4.2 or lower. and MGate MB3270 Series Firmware Version 4.2 or lower. and MGate MB3280 Series Firmware Version 4.1 or lower. and MGate MB3480 Series Firmware Version 3.2 or lower.

CVE-2022-24851: #170 fixed security issues in profile editor and PDF editor · LDAPAccountManager/lam@3c6f09a

LDAP Account Manager (LAM) is an open source web frontend for managing entries stored in an LDAP directory. The profile editor tool has an edit profile functionality, the parameters on this page are not properly sanitized and hence leads to stored XSS attacks. An authenticated user can store XSS payloads in the profiles, which gets triggered when any other user try to access the edit profile page. The pdf editor tool has an edit pdf profile functionality, the logoFile parameter in it is not properly sanitized and an user can enter relative paths like ../../../../../../../../../../../../../usr/share/icons/hicolor/48x48/apps/gvim.png via tools like burpsuite. Later when a pdf is exported using the edited profile the pdf icon has the image on that path(if image is present). Both issues require an attacker to be able to login to LAM admin interface. The issue is fixed in version 7.9.1.

CVE-2022-23865: Offensive Security’s Exploit Database Archive

Nyron 1.0 is affected by a SQL injection vulnerability through Nyron/Library/Catalog/winlibsrch.aspx. To exploit this vulnerability, an attacker must inject '"> on the thes1 parameter.

CVE-2022-21159: TALOS-2022-1467 || Cisco Talos Intelligence Group

A denial of service vulnerability exists in the parseNormalModeParameters functionality of MZ Automation GmbH libiec61850 1.5.0. A specially-crafted series of network requests can lead to denial of service. An attacker can send a sequence of malformed iec61850 messages to trigger this vulnerability.

CVE-2022-26594: CVE-2022-26594 XSS vulnerability with form field help text - Liferay Portal - Liferay Faces

Multiple cross-site scripting (XSS) vulnerabilities in Liferay Portal 7.3.5 through 7.4.0, and Liferay DXP 7.3 before service pack 3 allow remote attackers to inject arbitrary web script or HTML via a form field's help text to (1) Forms module's form builder, or (2) App Builder module's object form view's form builder.

CVE-2022-28044: Fix control->suffix being deallocated as heap memory as reported by P… · ckolivas/lrzip@5faf80c

Irzip v0.640 was discovered to contain a heap memory corruption via the component lrzip.c:initialise_control.

CVE-2022-28041: Additional stb_image fixes for bugs from ossfuzz and issues 1289, 1291, 1292, and 1293 by NeilBickford-NV · Pull Request #1297 · nothings/stb

stb_image.h v2.27 was discovered to contain an integer overflow via the function stbi__jpeg_decode_block_prog_dc. This vulnerability allows attackers to cause a Denial of Service (DoS) via unspecified vectors.

CVE-2022-28042: AddressSanitizer: heap-use-after-free in stbi__jpeg_huff_decode · Issue #1289 · nothings/stb

stb_image.h v2.27 was discovered to contain an heap-based use-after-free via the function stbi__jpeg_huff_decode.

CVE-2022-27474: Mount4in.github.io/suitecrm.docx at master · Mount4in/Mount4in.github.io

SuiteCRM v7.11.23 was discovered to allow remote code execution via a crafted payload injected into the FirstName text field.

CVE-2022-29144: Microsoft Edge (Chromium-based) Elevation of Privilege Vulnerability

**Why is Attack Complexity marked as High for this vulnerability?** Successful exploitation of this vulnerability requires an attacker to take additional actions prior to exploitation to prepare the target environment.

CVE-2022-1306: Chromium: CVE-2022-1306 Inappropriate implementation in compositing

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1364: Chromium: CVE-2022-1364: Type Confusion in V8

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1305: Chromium: CVE-2022-1305 Use after free in storage

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1314: Chromium: CVE-2022-1314 Type Confusion in V8

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1313: Chromium: CVE-2022-1313 Use after free in tab groups

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1312: Chromium: CVE-2022-1312 Use after free in storage

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1308: Chromium: CVE-2022-1308 Use after free in BFCache

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1310: Chromium: CVE-2022-1310 Use after free in regular expressions

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1307: Chromium: CVE-2022-1307 Inappropriate implementation in full screen

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-1309: Chromium: CVE-2022-1309 Insufficient policy enforcement in developer tools

**Why is this Chrome CVE included in the Security Update Guide?** The vulnerability assigned to this CVE is in Chromium Open Source Software (OSS) which is consumed by Microsoft Edge (Chromium-based). It is being documented in the Security Update Guide to announce that the latest version of Microsoft Edge (Chromium-based) is no longer vulnerable. Please see Security Update Guide Supports CVEs Assigned by Industry Partners for more information. **How can I see the version of the browser?** 1. In your Microsoft Edge browser, click on the 3 dots (...) on the very right-hand side of the window 2. Click on **Help and Feedback** 3. Click on **About Microsoft Edge**

CVE-2022-28345: security/SICK-2022-42.md at master · sickcodes/security

The Signal app before 5.34 for iOS allows URI spoofing via RTLO injection. It incorrectly renders RTLO encoded URLs beginning with a non-breaking space, when there is a hash character in the URL. This technique allows a remote unauthenticated attacker to send legitimate looking links, appearing to be any website URL, by abusing the non-http/non-https automatic rendering of URLs. An attacker can spoof, for example, example.com, and masquerade any URL with a malicious destination. An attacker requires a subdomain such as gepj, txt, fdp, or xcod, which would appear backwards as jpeg, txt, pdf, and docx respectively.

CVE-2022-24854: Build software better, together

Metabase is an open source business intelligence and analytics application. SQLite has an FDW-like feature called `ATTACH DATABASE`, which allows connecting multiple SQLite databases via the initial connection. If the attacker has SQL permissions to at least one SQLite database, then it can attach this database to a second database, and then it can query across all the tables. To be able to do that the attacker also needs to know the file path to the second database. Users are advised to upgrade as soon as possible. If you're unable to upgrade, you can modify your SQLIte connection strings to contain the url argument `?limit_attached=0`, which will disallow making connections to other SQLite databases. Only users making use of SQLite are affected.

CVE-2022-24824: SECURITY: Ensure user-agent-based responses are cached separately (st… · discourse/discourse@b72b0da

Discourse is an open source platform for community discussion. In affected versions an attacker can poison the cache for anonymous (i.e. not logged in) users, such that the users are shown the crawler view of the site instead of the HTML page. This can lead to a partial denial-of-service. This issue is patched in the latest stable, beta and tests-passed versions of Discourse. There are no known workarounds for this issue.

CVE-2022-24846: Build software better, together

GeoWebCache is a tile caching server implemented in Java. The GeoWebCache disk quota mechanism can perform an unchecked JNDI lookup, which in turn can be used to perform class deserialization and result in arbitrary code execution. While in GeoWebCache the JNDI strings are provided via local configuration file, in GeoServer a user interface is provided to perform the same, that can be accessed remotely, and requires admin-level login to be used. These lookup are unrestricted in scope and can lead to code execution. The lookups are going to be restricted in GeoWebCache 1.21.0, 1.20.2, 1.19.3.

CVE-2022-24850: Build software better, together

Discourse is an open source platform for community discussion. A category's group permissions settings can be viewed by anyone that has access to the category. As a result, a normal user is able to see whether a group has read/write permissions in the category even though the information should only be available to the users that can manage a category. This issue is patched in the latest stable, beta and tests-passed versions of Discourse. There are no workarounds for this problem.

CVE-2022-1304: out-of-bounds read/write via crafted filesystem

An out-of-bounds read/write vulnerability was found in e2fsprogs 1.46.5. This issue leads to a segmentation fault and possibly arbitrary code execution via a specially crafted filesystem.

CVE-2021-40390: TALOS-2021-1401 || Cisco Talos Intelligence Group

An authentication bypass vulnerability exists in the Web Application functionality of Moxa MXView Series 3.2.4. A specially-crafted HTTP request can lead to unauthorized access. An attacker can send an HTTP request to trigger this vulnerability.

CVE-2022-22149: TALOS-2022-1441 || Cisco Talos Intelligence Group

A SQL injection vulnerability exists in the HelpdeskEmailActions.aspx functionality of Lansweeper lansweeper 9.1.20.2. A specially-crafted HTTP request can cause SQL injection. An attacker can make an authenticated HTTP request to trigger this vulnerability.

CVE-2022-21234: TALOS-2022-1443 || Cisco Talos Intelligence Group

An SQL injection vulnerability exists in the EchoAssets.aspx functionality of Lansweeper lansweeper 9.1.20.2. A specially-crafted HTTP request can cause SQL injection. An attacker can make an authenticated HTTP request to trigger this vulnerability.

CVE-2021-40405: TALOS-2021-1422 || Cisco Talos Intelligence Group

A denial of service vulnerability exists in the cgiserver.cgi Upgrade API functionality of Reolink RLC-410W v3.0.0.136_20121102. A specially-crafted HTTP request can lead to a reboot. An attacker can send an HTTP request to trigger this vulnerability.

CVE-2021-40398: TALOS-2021-1411 || Cisco Talos Intelligence Group

An out-of-bounds write vulnerability exists in the parse_raster_data functionality of Accusoft ImageGear 19.10. A specially-crafted malformed file can lead to memory corruption. An attacker can provide a malicious file to trigger this vulnerability.

CVE-2021-40402: TALOS-2021-1416 || Cisco Talos Intelligence Group

An out-of-bounds read vulnerability exists in the RS-274X aperture macro multiple outline primitives functionality of Gerbv 2.7.0 and dev (commit b5f1eacd), and Gerbv forked 2.7.1 and 2.8.0. A specially-crafted Gerber file can lead to information disclosure. An attacker can provide a malicious file to trigger this vulnerability.

CVE-2022-21210: TALOS-2022-1444 || Cisco Talos Intelligence Group

An SQL injection vulnerability exists in the AssetActions.aspx functionality of Lansweeper lansweeper 9.1.20.2. A specially-crafted HTTP request can cause SQL injection. An attacker can make an authenticated HTTP request to trigger this vulnerability.

CVE-2021-40392: TALOS-2021-1403 || Cisco Talos Intelligence Group

An information disclosure vulnerability exists in the Web Application functionality of Moxa MXView Series 3.2.4. Network sniffing can lead to a disclosure of sensitive information. An attacker can sniff network traffic to exploit this vulnerability.

CVE-2021-21967: TALOS-2021-1394 || Cisco Talos Intelligence Group

An out-of-bounds write vulnerability exists in the OTA update task functionality of Sealevel Systems, Inc. SeaConnect 370W v1.3.34. A specially-crafted MQTT payload can lead to denial of service. An attacker can perform a man-in-the-middle attack to trigger this vulnerability.

CVE-2021-21945: TALOS-2021-1374 || Cisco Talos Intelligence Group

Two heap-based buffer overflow vulnerabilities exist in the TIFF parser functionality of Accusoft ImageGear 19.10. A specially-crafted file can lead to a heap buffer overflow. An attacker can provide a malicious file to trigger these vulnerabilities. Placeholder

CVE-2022-21145: TALOS-2022-1442 || Cisco Talos Intelligence Group

A stored cross-site scripting vulnerability exists in the WebUserActions.aspx functionality of Lansweeper lansweeper 9.1.20.2. A specially-crafted HTTP request can lead to arbitrary Javascript code injection. An attacker can send an HTTP request to trigger this vulnerability.

CVE-2021-40422: TALOS-2021-1431 || Cisco Talos Intelligence Group

An authentication bypass vulnerability exists in the device password generation functionality of Swift Sensors Gateway SG3-1010. A specially-crafted network request can lead to remote code execution. An attacker can send a sequence of requests to trigger this vulnerability.

CVE-2021-40400: TALOS-2021-1413 || Cisco Talos Intelligence Group

An out-of-bounds read vulnerability exists in the RS-274X aperture macro outline primitive functionality of Gerbv 2.7.0 and dev (commit b5f1eacd) and the forked version of Gerbv (commit d7f42a9a). A specially-crafted Gerber file can lead to information disclosure. An attacker can provide a malicious file to trigger this vulnerability.

CVE-2021-40426: TALOS-2021-1434 || Cisco Talos Intelligence Group

A heap-based buffer overflow vulnerability exists in the sphere.c start_read() functionality of Sound Exchange libsox 14.4.2 and master commit 42b3557e. A specially-crafted file can lead to a heap buffer overflow. An attacker can provide a malicious file to trigger this vulnerability.

CVE-2021-43257: 0029130: CVE-2021-43257: CSV Injection with CSV Export Feature

Lack of Neutralization of Formula Elements in the CSV API of MantisBT before 2.25.3 allows an unprivileged attacker to execute code or gain access to information when a user opens the csv_export.php generated CSV file in Excel.

CVE-2022-25165: CVE-2022-25165: Privilege Escalation to SYSTEM in AWS VPN Client - Rhino Security Labs

An issue was discovered in Amazon AWS VPN Client 2.0.0. A TOCTOU race condition exists during the validation of VPN configuration files. This allows parameters outside of the AWS VPN Client allow list to be injected into the configuration file prior to the AWS VPN Client service (running as SYSTEM) processing the file. Dangerous arguments can be injected by a low-level user such as log, which allows an arbitrary destination to be specified for writing log files. This leads to an arbitrary file write as SYSTEM with partial control over the files content. This can be abused to cause an elevation of privilege or denial of service.

CVE-2022-1258: Security Bulletin - McAfee Agent update fixes three vulnerabilities (CVE-2022-1256, CVE-2022-1257, and CVE-2022-1258)

A blind SQL injection vulnerability in the ePolicy Orchestrator (ePO) extension of MA prior to 5.7.6 can be exploited by an authenticated administrator on ePO to perform arbitrary SQL queries in the back-end database, potentially leading to command execution on the server.

CVE-2021-45228: Find the right app | Microsoft AppSource

An XSS issue was discovered in COINS Construction Cloud 11.12. Due to insufficient neutralization of user input in the description of a task, it is possible to store malicious JavaScript code in the task description. This is later executed when it is reflected back to the user.

CVE-2022-26507: Claroty: The Industrial Cybersecurity Company

** UNSUPPORTED WHEN ASSIGNED ** A heap-based buffer overflow exists in XML Decompression DecodeTreeBlock in AT&T Labs Xmill 0.7. A crafted input file can lead to remote code execution. This is not the same as any of: CVE-2021-21810, CVE-2021-21811, CVE-2021-21812, CVE-2021-21815, CVE-2021-21825, CVE-2021-21826, CVE-2021-21828, CVE-2021-21829, or CVE-2021-21830. NOTE: This vulnerability only affects products that are no longer supported by the maintainer.

CVE-2022-27445: [MDEV-28081] MariaDB SEGV issue - Jira

MariaDB Server v10.9 and below was discovered to contain a segmentation fault via the component sql/sql_window.cc.

CVE-2022-27455: [MDEV-28097] MariaDB UAF issue - Jira

MariaDB Server v10.6.3 and below was discovered to contain an use-after-free in the component my_wildcmp_8bit_impl at /strings/ctype-simple.c.

CVE-2022-27452: [MDEV-28090] MariaDB SEGV issue - Jira

MariaDB Server v10.9 and below was discovered to contain a segmentation fault via the component sql/item_cmpfunc.cc.

CVE-2022-27456: [MDEV-28093] MariaDB UAP issue - Jira

MariaDB Server v10.6.3 and below was discovered to contain an use-after-free in the component VDec::VDec at /sql/sql_type.cc.

CVE-2021-43633: Messaging Web Application in PHP/OOP Free Source Code

Sourcecodester Messaging Web Application 1.0 is vulnerable to stored XSS. If a sender inserts valid scripts into the chat, the script will be executed on the receiver chat.

CVE-2022-27444: [MDEV-28080] MariaDB SEGV issue - Jira

MariaDB Server v10.9 and below was discovered to contain a segmentation fault via the component sql/item_subselect.cc.

CVE: Latest News

CVE-2023-50976: Transactions API Authorization by oleiman · Pull Request #14969 · redpanda-data/redpanda
CVE-2023-6905
CVE-2023-6903
CVE-2023-6904
CVE-2023-3907