> Windows Syscalls
ntoskrnl.exeT1559T1106

NtAlpcDeleteSecurityContext

Libera un contexto SECURITY_QOS ALPC previamente creado con NtAlpcCreateSecurityContext.

Prototipo

NTSTATUS NtAlpcDeleteSecurityContext(
  HANDLE  PortHandle,
  ULONG   Flags,
  ALPC_HANDLE  ContextHandle
);

Argumentos

NameTypeDirDescription
PortHandleHANDLEinHandle al puerto ALPC que posee el contexto de seguridad.
FlagsULONGinReservado. Debe ser 0.
ContextHandleALPC_HANDLEinALPC_HANDLE opaco devuelto por NtAlpcCreateSecurityContext; identifica el contexto QoS a liberar.

IDs de syscalls por versión de Windows

Versión de WindowsID de syscallBuild
Win10 15070x7Fwin10-1507
Win10 16070x7Fwin10-1607
Win10 17030x80win10-1703
Win10 17090x80win10-1709
Win10 18030x81win10-1803
Win10 18090x81win10-1809
Win10 19030x81win10-1903
Win10 19090x81win10-1909
Win10 20040x83win10-2004
Win10 20H20x83win10-20h2
Win10 21H10x83win10-21h1
Win10 21H20x83win10-21h2
Win10 22H20x83win10-22h2
Win11 21H20x83win11-21h2
Win11 22H20x83win11-22h2
Win11 23H20x83win11-23h2
Win11 24H20x85win11-24h2
Server 20160x7Fwinserver-2016
Server 20190x81winserver-2019
Server 20220x83winserver-2022
Server 20250x85winserver-2025

Módulo del kernel

ntoskrnl.exeNtAlpcDeleteSecurityContext

APIs relacionadas

NtAlpcCreateSecurityContextNtAlpcRevokeSecurityContextNtAlpcImpersonateClientOfPortNtAlpcQueryInformation

Stub del syscall

4C 8B D1            mov r10, rcx
B8 85 00 00 00      mov eax, 0x85
F6 04 25 08 03 FE 7F 01   test byte ptr [0x7FFE0308], 1
75 03               jne short +3
0F 05               syscall
C3                  ret
CD 2E               int 2Eh
C3                  ret

Notas no documentadas

ALPC soporta un modelo `SECURITY_QUALITY_OF_SERVICE` *cacheado*: un cliente (o servidor) llama `NtAlpcCreateSecurityContext` una vez para materializar un contexto QoS con un token de cliente congelado, luego referencia ese contexto por `ALPC_HANDLE` en `NtAlpcImpersonateClientOfPort` posteriores en lugar de resnapshotear el token cada vez. `NtAlpcDeleteSecurityContext` libera el contexto permanentemente — el token snapshot se desreferencia, el slot de la tabla de contextos por-puerto se libera, y cualquier impersonación en vuelo que referencie el contexto comienza a recibir `STATUS_INVALID_HANDLE`. Se empareja con `NtAlpcRevokeSecurityContext`, que mantiene la entrada pero la invalida; la eliminación es el destructor.

Uso común por malware

Primitiva de limpieza defensiva — interés ofensivo limitado. El único abuso realista es un **use-after-free de carrera** donde un atacante fuerza al servidor a eliminar un contexto de seguridad mientras otro hilo del mismo puerto está en plena impersonación. El kernel ref-cuenta el objeto QoS subyacente, así que un UAF limpio es difícil de construir, pero algunos bugs históricos de puerto ALPC (`AlpcpCleanupPort`, hacia 2017-2019) implicaban orden incorrecto entre `NtAlpcDeleteSecurityContext` y send/receive concurrentes — corregidos en cumulativos. Ofensivamente, la llamada también puede usarse por fuzzers ALPC para verificar que el estado por-contexto del servidor se desmonta correctamente (detector de fuga).

Oportunidades de detección

No es señal útil aislada — todo servidor ALPC de larga vida (RPCSS, LSASS, spoolsv, sihost) la llama de rutina conforme las conexiones van y vienen. La única señal valiosa es un *orden anómalo*: eliminación seguida poco después por un crash del servidor, o eliminación precedida por una ráfaga inusual de `NtAlpcImpersonateClientOfPort` contra el mismo handle de contexto — ambas sugieren que alguien sondea un TOCTOU. Concentrarse en la correlación de ciclo de vida en ETW más que en este syscall directamente.

Ejemplos de syscalls directos

cCached-QoS cleanup

// Server tears down a cached impersonation context once a client disconnects.
#include <windows.h>
#include <winternl.h>

typedef PVOID ALPC_HANDLE;
NTSTATUS NTAPI NtAlpcDeleteSecurityContext(HANDLE, ULONG, ALPC_HANDLE);

void ReleaseClientQos(HANDLE serverPort, ALPC_HANDLE ctx) {
    if (ctx) {
        NtAlpcDeleteSecurityContext(serverPort, 0, ctx);
    }
}

asmx64 direct stub (Win11 24H2)

; Direct syscall stub for NtAlpcDeleteSecurityContext (SSN 0x85 on Win11 24H2 / Server 2025)
NtAlpcDeleteSecurityContext PROC
    mov  r10, rcx          ; PortHandle
    mov  eax, 85h          ; SSN
    syscall
    ret
NtAlpcDeleteSecurityContext ENDP

Mapeos MITRE ATT&CK

Last verified: 2026-05-20