Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O repositório GitHub do Microsoft CodeQL oferece dois pacotes de consulta para simplificar o desenvolvimento de drivers do Windows e garantir a conformidade com o Programa de Compatibilidade de Hardware do Windows (WHCP). O pacote recommended.qls inclui todas as consultas recomendadas para desenvolvedores de drivers, enquanto o pacote mustfix.qls se concentra nas consultas "Must-Fix" necessárias para a certificação WHCP. Ambas as suites são atualizadas regularmente.
Must-Fix consultas para certificação WCHP
O subconjunto de consultas a seguir é Must-Fix para certificação WHCP e também está incluído no pacote de correções recomendadas .
Este conjunto de regras está incluído no mustfix.qls.
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/verificação de estouro em adição inadequada |
codeql/cpp-queries/<Version>/Bugs prováveis/Aritmética/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| CPP/Pointer-Overflow-Check |
codeql/cpp-queries/<Version>/Bugs prováveis/Gerenciamento de memória/PointerOverflow.ql |
N/A |
| cpp/Muito poucos argumentos |
codeql/cpp-queries/<Version>/Bugs prováveis/Funções subespecificadas/TooFewArguments.ql |
N/A |
| cpp/comparação-com-tipo-mais-amplo |
codeql/cpp-queries/<Version>/Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190, CWE-197, CWE-835 |
| cpp/hresult-conversão booleana |
codeql/cpp-queries/<Version>/Segurança/CWE/CWE-253/HResultBooleanConversion.ql |
CWE-253 |
O arquivo mustfix.qls inclui as seguintes consultas de código Must-Fix .
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
- description: Security queries required to fix when certifying Windows Drivers
- queries: .
from: codeql/cpp-queries
version: 0.9.0
- include:
query path:
- Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql
- Likely Bugs/Memory Management/PointerOverflow.ql
- Likely Bugs/Underspecified Functions/TooFewArguments.ql
- Security/CWE/CWE-190/ComparisonWithWiderType.ql
- Security/CWE/CWE-253/HResultBooleanConversion.ql
- import: windows-driver-suites/windows_mustfix_partial.qls
from: microsoft/windows-drivers
Este conjunto de regras está incluído em windows-driver-suites/windows_mustfix_partial.qls.
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/windows/wdk/api preterida |
/microsoft/windows-drivers/<Version>/drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
N/A |
| microsoft/Segurança/CWE/CWE-704/WcharCharConversionLimited |
/microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
O arquivo windows_mustfix_partial.qls inclui as seguintes consultas de código Must-Fix .
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
- description: Security queries required to fix when certifying Windows Drivers
- queries: .
from: microsoft/windows-drivers
- include:
query path:
- drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql
- microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql
Consultas de correção recomendadas
Essas consultas fazem parte do conjunto de consultas recommended.qls no repositório Microsoft GitHub CodeQL. A coluna "Common Weakness Enumeration" (CWE) identifica os tipos de problemas de segurança que a consulta dada procura identificar. Consulte a página da Mitre sobre CWE para obter mais detalhes sobre CWEs.
A coluna "Common Weakness Enumeration" (CWE) mostra os tipos de problemas de segurança identificados pela consulta.
Melhores práticas
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/offset-use-before-range-check |
codeql/cpp-queries/<Version>/Melhores práticas/Erros prováveis/OffsetUseBeforeRangeCheck.ql |
N/A |
Prováveis bugs
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| cpp/verificação de estouro em adição inadequada |
codeql/cpp-queries/<Version>/Bugs prováveis/Aritmética/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| CPP/multiplicação-inteiro-conversão-para-long |
codeql/cpp-queries/<Version>/Erros Possíveis/Aritmética/IntMultToLong.ql |
CWE-190, CWE-192, CWE-197, CWE-681 |
| CPP/verificação de overflow com sinal |
codeql/cpp-queries/<Version>/Bugs prováveis/Aritmética/SignedOverflowCheck.ql |
N/A |
| cpp/upcast-array-aritmética-de-apontadores |
codeql/cpp-queries/<Version>/Bugs prováveis/Conversão/CastArrayPointerArithmetic.ql |
CWE-119, CWE-843 |
| CPP/Pointer-Overflow-Check |
codeql/cpp-queries/<Version>/Bugs prováveis/Gerenciamento de memória/PointerOverflow.ql |
N/A |
| cpp/Muito poucos argumentos |
codeql/cpp-queries/<Version>/Bugs prováveis/Funções subespecificadas/TooFewArguments.ql |
N/A |
| cpp/uso incorreto do operador 'não' |
codeql/cpp-queries/<Version>/Erros Prováveis/Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
| cpp/suspicious-add-sizeof |
codeql/cpp-queries/<Version>/Erros Prováveis/Gestão de Memória/SuspiciousSizeof.ql |
CWE-468 |
| cpp/local não inicializado |
codeql/cpp-queries/<Version>/Bugs Prováveis/Gerenciamento de memória/UninitializedLocal.ql |
CWE-457, CWE-665 |
Segurança
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| CPP/variável condicionalmente não inicializada |
codeql/cpp-queries/<Version>/Security/CWE/CWE-457/ConditionallyUninitializedVariable.ql. |
CWE-457 |
| C++/Chamada variadic não terminada |
codeql/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
| CPP/escalonamento de ponteiro suspeito |
codeql/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
| CPP/suspeito-ponteiro-escala-vazio |
codeql/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
| cpp/função-potencialmente-perigosa |
codeql/cpp-queries/<Version>/Segurança/CWE/CWE-676/PotentiallyDangerousFunction.ql |
CWE-676 |
| cpp/incorrect-string-type-conversion |
codeql/cpp-queries/<Version>/Segurança/CWE/CWE-704/WcharCharConversion.ql |
CWE-704 |
| cpp/comparação-com-tipo-mais-amplo |
codeql/cpp-queries/<Version>/Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190, CWE-197, CWE-835 |
| cpp/hresult-conversão booleana |
codeql/cpp-queries/<Version>/Segurança/CWE/CWE-253/HResultBooleanConversion.ql |
CWE-253 |
| cpp/suspicious-add-sizeof |
codeql/cpp-queries/<Version>/Security/CWE/CWE-468/CWE-468/SuspiciousAddWithSizeof.ql |
CWE-468 |
O arquivo recommended.qls inclui as seguintes consultas de código recomendadas.
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
- description: Recommended and required queries for Windows Drivers.
- import: windows-driver-suites/windows_mustfix_partial.qls
from: microsoft/windows-drivers
- import: windows-driver-suites/windows_recommended_partial.qls
from: microsoft/windows-drivers
- queries: .
from: codeql/cpp-queries
version: 0.9.0
- include:
query path:
- Best Practices/Likely Errors/OffsetUseBeforeRangeCheck.ql
- Likely Bugs/Arithmetic/IntMultToLong.ql
- Likely Bugs/Arithmetic/SignedOverflowCheck.ql
- Likely Bugs/Conversion/CastArrayPointerArithmetic.ql
- Likely Bugs/Likely Typos/IncorrectNotOperatorUsage.ql
- Likely Bugs/Memory Management/SuspiciousSizeof.ql
- Likely Bugs/Memory Management/UninitializedLocal.ql
- Security/CWE/CWE-121/UnterminatedVarargsCall.ql
- Security/CWE/CWE-457/ConditionallyUninitializedVariable.ql
- Security/CWE/CWE-468/IncorrectPointerScaling.ql
- Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql
- Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql
- Security/CWE/CWE-676/PotentiallyDangerousFunction.ql
- Security/CWE/CWE-704/WcharCharConversion.ql
- Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql
- Likely Bugs/Memory Management/PointerOverflow.ql
- Likely Bugs/Underspecified Functions/TooFewArguments.ql
- Security/CWE/CWE-190/ComparisonWithWiderType.ql
- Security/CWE/CWE-253/HResultBooleanConversion.ql
Essas consultas fazem parte do pacote de consultas windows_recommended_partial.qls .
Erros Prováveis - windows_recommended_partial.qls
| ID | Localização | Enumeração de fraqueza comum |
|---|---|---|
| CPP/PaddingByteInformationDisclosure |
microsoft/windows-drivers/<Version>/microsoft/Bugs prováveis/Violações de limite/PaddingByteInformationDisclosure.ql |
N/A |
| CPP/BadOverflowGuard |
microsoft/windows-drivers/<Version>/microsoft/Bugs prováveis/Conversão/BadOverflowGuard.ql |
N/A |
| CPP/InfiniteLoop |
microsoft/windows-drivers/<Version>/microsoft/Erros Prováveis/Conversão/InfiniteLoop.ql |
N/A |
| cpp/uninitializedptrfield |
microsoft/windows-drivers/<Version>/microsoft/Erros Prováveis/UninitializedPtrField.ql |
N/A |
| CPP/Use-after-free |
microsoft/windows-drivers/<Version>/microsoft/Bugs prováveis/Gerenciamento de memória/UseAfterFree/UseAfterFree.ql |
N/A |
Segurança - windows_recommended_partial.qls
| ID | Localização | Aviso de análise de código |
|---|---|---|
| cpp/criptografia fraca/cng/vetor de inicialização codificado |
/microsoft/windows-drivers/<Version>/microsoft/Segurança/Criptografia/HardcodedIVCNG.ql |
N/A |
Motoristas - Geral
| ID | Localização | Aviso de análise de código |
|---|---|---|
| cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers/<Version>/drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql |
Nenhuma verificação de CA associada |
| CPP/drivers/tipo de função-usado corretamente |
/microsoft/windows-drivers/<Version>/drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
Nenhuma verificação de CA associada |
| cpp/drivers/apis estendidas-obsoletas |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExtendedDeprecatedApis.ql |
Aviso C28719, Aviso C28726, Aviso C28735, Aviso C28750 |
| 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/IrqlTooHigh/IrqlTooHigh.ql |
C28150 Advertência |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
C28120 Aviso |
| cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooHigh/IrqlTooHigh.ql |
C28121 Advertência |
| cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
C28124 Advertência |
| CPP/drivers/pool-tag-integral |
/microsoft/windows-drivers/<Version>/drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql |
C28134 Advertência |
| CPP/Motoristas/STR Safe |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrSafe/StrSafe.ql |
C28146 Advertência |
Drivers - WDM
| 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 ilegal ao campo 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/opaque-mdl-use |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql |
(Nenhuma verificação de autoridade de certificação associada) |
| cpp/drivers/mdl-escrita-opaca |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlUse/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 |
C28169 Advertência |
O arquivo windows-driver-suites/windows_recommended_partial.qls inclui as seguintes consultas de código recomendadas.
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
- description: Recommended and required queries for Windows Drivers.
- import: windows-driver-suites/windows_mustfix_partial.qls
- queries: .
from: microsoft/windows-drivers
- include:
query path:
- microsoft/Likely Bugs/Boundary Violations/PaddingByteInformationDisclosure.ql
- microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql
- microsoft/Likely Bugs/Conversion/InfiniteLoop.ql
- microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql
- microsoft/Likely Bugs/UninitializedPtrField.ql
- microsoft/Security/Crytpography/HardcodedIVCNG.ql
- drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql
- drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql
- drivers/general/queries/DefaultPoolTag/DefaultPoolTag.ql
- drivers/general/queries/ExaminedValue/ExaminedValue.ql
- drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql
- drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql
- drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql
- drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql
- drivers/general/queries/IrqlTooLow/IrqlTooLow.ql
- drivers/general/queries/IrqlSetTooHigh/IrqlTooHigh.ql
- drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql
- drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql
- drivers/general/queries/StrSafe/StrSafe.ql
- drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql
- drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql
- drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql
- drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql
- drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlWrite.ql
- drivers/wdm/queries/PendingStatusError/PendingStatusError.ql
- drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql