Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O repositório Microsoft CodeQL GitHub fornece três conjuntos de consultas para simplificar o fluxo de trabalho de ponta a ponta do programador de drivers. Estas suites estão incluídas no pacote CodeQL da microsoft/windows-drivers e utilizam consultas únicas desse pacote e consultas gerais em C++ do pacote microsoft/cpp-queries.
- recommended.qls contém um conjunto amplo de verificações para bugs comuns de drivers e C/C++. Recomendamos executar esta suíte automáticamente e rever os resultados.
- mustrun.qls contém verificações que devem ser executadas para passar a certificação do Windows Hardware Compatibility Program (WHCP). Como estas consultas podem produzir falsos positivos em alguns casos, falhar estas verificações não falhará o teste do Logótipo de Ferramentas Estáticas, mas os programadores devem rever os resultados e corrigir erros reais. Um DVL gerado sem resultados para estas verificações falha no teste do Logótipo de Ferramentas Estáticas. Para o 26H1, mustrun.qls e recommended.qls são idênticos.
- O mustfix.qls serve como um subconjunto das consultas must-run e contém verificações que reportam problemas que devem ser corrigidos para passar a certificação WHCP. Um DVL gerado com falhas nestas regras não passa no teste do Logótipo de Ferramentas Estáticas.
Para detalhes do conteúdo das suites de consultas, consulte Consultas e Suítes CodeQL.
Consultas que devem ser corrigidas para certificação WHCP
O seguinte subconjunto de consultas é Must-Fix para certificação WHCP e também está incluído no conjunto de correções recomendadas. Este conjunto de regras está incluído no mustfix.qls.
Muitas das regras seguintes correspondem à Enumeração Comum de Fraquezas (CWEs) ou a Avisos de Análise de Código anteriores.
Consultas a Corrigir do pacote microsoft/windows-drivers
| ID | Localização | Enumeração de Fraquezas Comuns / Aviso de Análise de Código |
|---|---|---|
| cpp/drivers/wdk-deprecated-api |
/microsoft/windows-drivers/<Version>/drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
N/A |
| cpp/drivers/apis estendidas-obsoletas |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql |
Aviso C28719, Aviso C28726, Aviso C28735, Aviso C28750 |
| cpp/conversão-incorreta-de-tipo-de-string-ignorar-puchar-casts |
/microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
Consultas a Corrigir Urgentemente do pacote Microsoft/CPP-Queries
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/verificação de estouro em adição inadequada |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Aritmética/Má AdiçãoOverflowCheck.ql |
CWE-190, CWE-192 |
| CPP/Argumentos-de-Formato-Número Errado |
/microsoft/cpp-queries/<Version>/Prováveis Erros/Format/NúmeroErradoDeArgumentosDeFormato.ql |
CWE-234, CWE-685 |
| CPP/Pointer-Overflow-Check |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Gestão de Memória/PointerOverflow.ql |
CWE-758 |
| CPP/UNSAFE-STRNCAT |
/microsoft/cpp-queries/<Version>/Bugs Prováveis/Gestão de Memória/SuspiciousCallToStrncat.ql |
CWE-119, CWE-251, CWE-676, CWE-788 |
| cpp/uso-inseguro-desta |
/microsoft/cpp-queries/<Version>/Bugs Prováveis/OO/UnsafeUseOfThis.ql |
CWE-670 |
| cpp/boost/tls-settings-misconfiguration |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Protocolos/TlsSettingsMisconfiguration.ql |
CWE-326 |
| cpp/boost/uso-de-protocolo-de-segurança-obsoleto-e-hardcoded |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Protocolos/UseOfDeprecatedHardcodedProtocol.ql |
CWE-327 |
| cpp/Muito poucos argumentos |
/microsoft/cpp-queries/<Version>/Erros Prováveis/Funções Subespecificadas/TooFewArguments.ql |
CWE-234, CWE-685 |
| cpp/Microsoft/Public/BadOverflowGuard |
/microsoft/cpp-queries/<Version>/Microsoft/Prováveis Bugs/Conversão/BadOverflowGuard.ql |
CWE-190, CWE-191 |
| CPP/MICROSOFT/PUBLIC/DRIVERS/USO-INCORRETO-DE-RTLCOMPAREMEMORY |
/microsoft/cpp-queries/<Version>/Microsoft/Prováveis Erros/Drivers/UsoIncorretoDeRtlCompareMemory.ql |
N/A |
| cpp/microsoft/public/criptografia-fraca/algoritmos-de-criptografia-banidos |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedEncryption.ql |
CWE-327 |
| CPP/MICROSOFT/PUBLIC/WEAK-CRYPTO/CAPI/BANNED-MODES |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Criptografia/BannedModesCAPI.ql |
CWE-327 |
| cpp/microsoft/public/weak-crypto/cng/banned-modes |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedModesCNG.ql |
CWE-327 |
| CPP/MICROSOFT/PUBLIC/WEAK-CRYPTO/CNG/HARDCODED-IV |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/HardcodedIVCNG.ql |
CWE-327 |
| CPP/MICROSOFT/PUBLIC/ENUM-INDEX |
/microsoft/cpp-queries/<Version>/Microsoft/Security/MemoryAccess/EnumIndex/UncheckedBoundsEnumAsIndex.ql |
CWE-125 |
| CPP/Injeção de linha de comandos |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-078/ExecTainted.ql |
CWE-078, CWE-088 |
| cpp/Operação de Processo Não Controlada |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE/CWE-114/UncontrolledProcessOperation.ql |
CWE-114 |
| cpp/Escrita mal limitada |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-120/BadlyBoundedWrite.ql |
CWE-120, CWE-787, CWE-805 |
| CPP/Overrunning-Write |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-120/OverrunWrite.ql |
CWE-120, CWE-787, CWE-805 |
| CPP/Não-espaço-para-terminador |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql |
CWE-120, CWE-122, CWE-131 |
| cpp/terminação-null-controlada-pelo-utilizador-contaminada |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-170/ImproperNullTerminationTainted.ql |
CWE-170 |
| cpp/comparação-com-tipo-mais-amplo |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190, CWE-197, CWE-835 |
| cpp/hresult-conversão booleana |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-253/HResultBooleanConversion.ql |
CWE-253 |
| cpp/openssl-heartbleed |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-327/OpenSslHeartbleed.ql |
CWE-327, CWE-788 |
| CPP/Excesso-de-Funções-Perigosas |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-676/DangerousFunctionOverflow.ql |
CWE-242, CWE-676 |
| cpp/dangerous-cin |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-676/DangerousUseOfCin.ql |
CWE-676 |
| cpp/incorrect-string-type-conversion |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-704/WcharCharConversion.ql |
CWE-704 |
| cpp/unsafe-dacl-security-descriptor |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-732/UnsafeDaclSecurityDescriptor.ql |
CWE-732 |
Consultas Recomendadas
A suite recommended.qls inclui todas as consultas da suite mustfix.qls, bem como as seguintes consultas dos pacotes microsoft/windows-drivers e microsoft/cpp-queries.
Questões gerais de drivers do pacote microsoft/windows-drivers
| ID | Localização | Aviso de análise de código |
|---|---|---|
| cpp/drivers/sintaxe de anotação |
/microsoft/windows-drivers/<Version>/drivers/general/queries/AnnotationSyntax/AnnotationSyntax.ql |
Aviso C28266 |
| cpp/drivers/tipo-função-atual-incorreto |
/microsoft/windows-drivers/<Version>/drivers/general/queries/CurrentFunctionTypeNotCorrect/CurrentFunctionTypeNotCorrect.ql |
Aviso C28101 |
| cpp/drivers/etiqueta-de-pool-padrão. |
/microsoft/windows-drivers/<Version>/drivers/general/queries/DefaultPoolTag/DefaultPoolTag.ql |
Aviso C28147 |
| cpp/drivers/driver-entry-save-buffer |
/microsoft/windows-drivers/<Version>/drivers/general/queries/DriverEntrySaveBuffer/DriverEntrySaveBuffer.ql |
Aviso C28131 |
| cpp/drivers/valor examinado |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExaminedValue/ExaminedValue.ql |
Aviso C28193 |
| cpp/drivers/irp-stack-entry-copy |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IRPStackEntryCopy/IRPStackEntryCopy.ql |
Aviso C28114 |
| cpp/drivers/funcao-importante-chamada-otimizada-fora |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ImportantFunctionCallOptimizedOut/ImportantFunctionCallOptimizedOut.ql |
Aviso C28625 |
| cpp/drivers/improper-not-operator-on-zero |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ImproperNotOperatorOnZero/ImproperNotOperatorOnZero.ql |
Aviso C28650 |
| cpp/drivers/invalid-function-class-typedef |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionClassTypedef/InvalidFunctionClassTypedef.ql |
Aviso C28268 |
| cpp/drivers/anotação-de-inválido-do-ponteiro-de-função |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionPointerAnnotation/InvalidFunctionPointerAnnotation.ql |
Aviso C28165 |
| cpp/drivers/io-initialize-timer-call |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IoInitializeTimerCall/IoInitializeTimerCall.ql |
Aviso C28133 |
| cpp/drivers/irql-problema-de-anotação |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlAnnotationIssue/IrqlAnnotationIssue.ql |
Aviso C28153 |
| CPP/Drivers/Irql-Cancel-Rotina |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlCancelRoutine/IrqlCancelRoutine.ql |
Aviso C28144 |
| cpp/drivers/irql-float-state-mismatch |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlFloatStateMismatch/IrqlFloatStateMismatch.ql |
Aviso C28111 |
| cpp/drivers/irql-não-salvo |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql |
C28158 Advertência |
| cpp/drivers/irql-não-usado |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql |
C28157 Advertência |
| cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooHigh/IrqlSetTooHigh.ql |
C28150 Advertência |
| cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
C28124 Advertência |
| cpp/drivers/irql-too-high |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql |
C28121 Advertência |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
C28120 Aviso |
| cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers/<Version>/drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql |
Nenhuma verificação de CA associada |
| CPP/Drivers/Multithreaded-AV-Condition |
/microsoft/windows-drivers/<Version>/drivers/general/queries/MultithreadedAVCondition/MultithreadedAVCondition.ql |
Aviso C28616 |
| cpp/drivers/ntstatus-explicit-cast |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast/NtstatusExplicitCast.ql |
Aviso C28714 |
| cpp/drivers/ntstatus-explicit-cast2 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast2/NtstatusExplicitCast2.ql |
Aviso C28715 |
| cpp/drivers/ntstatus-explicit-cast3 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast3/NtstatusExplicitCast3.ql |
Aviso C28716 |
| cpp/drivers/atribuição de ponteiros de caracteres nulos |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NullCharacterPointerAssignment/NullCharacterPointerAssignment.ql |
Aviso C28730 |
| cpp/drivers/operand-assignment |
/microsoft/windows-drivers/<Version>/drivers/general/queries/OperandAssignment/OperandAssignment.ql |
Aviso C28129 |
| CPP/Drivers/Variável-de-Tamanho-do-Ponteiro |
/microsoft/windows-drivers/<Version>/drivers/general/queries/PointerVariableSize/PointerVariableSize.ql |
Aviso C28132 |
| CPP/drivers/pool-tag-integral |
/microsoft/windows-drivers/<Version>/drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql |
C28134 Advertência |
| CPP/drivers/tipo de função-usado corretamente |
/microsoft/windows-drivers/<Version>/drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
C28158 Advertência |
| cpp/drivers/função-de-rotina-tipo-não-esperado |
/microsoft/windows-drivers/<Version>/drivers/general/queries/RoutineFunctionTypeNotExpected/RoutineFunctionTypeNotExpected.ql |
Aviso C28127 |
| CPP/Motoristas/STR Safe |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrSafe/StrSafe.ql |
C28146 Advertência |
| cpp/drivers/estrita correspondência de tipo |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrictTypeMatch/StrictTypeMatch.ql |
Aviso C28139 |
Consultas de drivers WDM do pacote Microsoft/Windows-Drivers
| ID | Localização | Aviso de análise de código |
|---|---|---|
| CPP/Drivers/Acesso ilegal ao campo |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql |
C28128 Advertência |
| cpp/drivers/acesso-campo-ilegal-2 |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql |
C28175 Aviso |
| cpp/drivers/escrita de campo ilegal |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql |
C28176 Advertência |
| CPP/drivers/init-não-autorizado |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/InitNotCleared/InitNotCleared.ql |
Aviso C28152 |
| cpp/drivers/kewaitlocal-necessites-kernel-mode |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/KeWaitLocal/KeWaitLocal.ql |
Aviso C28135 |
| cpp/drivers/código de múltiplas páginas |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/MultiplePagedCode/MultiplePagedCode.ql |
Aviso C28171 |
| CPP/Drivers/Modo de Referência OB |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/ObReferenceMode/ObReferenceMode.ql |
Aviso C28126 |
| cpp/drivers/opaque-mdl-use |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql |
Nenhuma verificação de CA associada |
| cpp/drivers/mdl-escrita-opaca |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlWrite/OpaqueMdlWrite.ql |
C28145 Advertência |
| cpp/drivers/pending-status-error |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/PendingStatusError/PendingStatusError.ql |
C28143 Advertência |
| cpp/drivers/atribuição errada da tabela de despacho |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql |
Aviso C28168, Aviso C28169 |
Consultas gerais em C++ do pacote microsoft/windows-drivers
| ID | Localização | Aviso de Enumeração de Fraquezas Comuns / Análise de Código |
|---|---|---|
| CPP/PaddingByteInformationDisclosure |
/microsoft/windows-drivers/<Version>/microsoft/Prováveis Bugs/Violações de Fronteiras/PaddingByteInformationDisclosure.ql |
N/A |
| CPP/BadOverflowGuard |
/microsoft/windows-drivers/<Version>/microsoft/Prováveis Erros/Conversão/BadOverflowGuard.ql |
N/A |
| CPP/InfiniteLoop |
/microsoft/windows-drivers/<Version>/microsoft/Potenciais Bugs/Conversão/InfiniteLoop.ql |
N/A |
| CPP/Use-after-free |
/microsoft/windows-drivers/<Version>/microsoft/Bugs Prováveis/Gestão de Memória/UseAfterFree/UseAfterFree.ql |
N/A |
| cpp/uninitializedptrfield |
/microsoft/windows-drivers/<Version>/microsoft/Erros Prováveis/UninitializedPtrField.ql |
N/A |
| cpp/criptografia fraca/cng/vetor de inicialização codificado |
/microsoft/windows-drivers/<Version>/microsoft/Segurança/Criptografia/HardcodedIVCNG.ql |
N/A |
Consultas gerais em C++ do pacote microsoft/cpp-queries
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/offset-use-before-range-check |
/microsoft/cpp-queries/<Version>/Boas Práticas/Erros Prováveis/OffsetUseBeforeRangeCheck.ql |
CWE-120, CWE-125 |
| CPP/multiplicação-inteiro-conversão-para-long |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Aritmética/IntMultToLong.ql |
CWE-190, CWE-192, CWE-197, CWE-681 |
| CPP/verificação de overflow com sinal |
/microsoft/cpp-queries/<Version>/Erros Prováveis/Aritmética/SignedOverflowCheck.ql |
CWE-128, CWE-190 |
| cpp/upcast-array-aritmética-de-apontadores |
/microsoft/cpp-queries/<Version>/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql |
CWE-119, CWE-843 |
| cpp/uso incorreto do operador 'não' |
/microsoft/cpp-queries/<Version>/Erros Prováveis/Erros de Digitação Prováveis/IncorrectNotOperatorUsage.ql |
CWE-480 |
| CPP/Tamanho-suspeito |
/microsoft/cpp-queries/<Version>/Prováveis Bugs/Gestão de Memória/SuspiciousSizeof.ql |
CWE-467 |
| cpp/local não inicializado |
/microsoft/cpp-queries/<Version>/Prováveis Erros/Gestão de Memória/UninitializedLocal.ql |
CWE-457, CWE-665 |
| C++/Chamada variadic não terminada |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
| CPP/variável condicionalmente não inicializada |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-457/ConditionallyUninitializedVariable.ql |
CWE-457 |
| cpp/suspicious-add-sizeof |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql |
CWE-468 |
| CPP/escalonamento de ponteiro suspeito |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
| CPP/suspeito-ponteiro-escala-vazio |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
| cpp/função-potencialmente-perigosa |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-676/PotentiallyDangerousFunction.ql |
CWE-676 |
| cpp/overflow-buffer |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-119/OverflowBuffer.ql |
CWE-119, CWE-121, CWE-122, CWE-126 |
Consultas Obrigatórias
A suíte mustrun.qls contém consultas que devem ser executadas para passar a certificação WHCP. Estas consultas podem não precisar necessariamente de ser corrigidas devido a potenciais falsos positivos, mas devem ter os seus resultados revistos e quaisquer bugs reais encontrados corrigidos. Um DVL gerado sem resultados para estas verificações falha no teste do Logótipo de Ferramentas Estáticas.
Para o Windows 11, versão 26H1, as consultas expostas pelo mustrun.qls e recommended.qls são idênticas.