Microsoft CodeQL GitHub リポジトリには、Windows ドライバーの開発を簡略化し、Windows ハードウェア互換性プログラム (WHCP) に準拠するための 2 つのクエリ スイートが用意されています。 windows_driver_recommended.qls スイートにはドライバー開発者に推奨されるすべてのクエリが含まれていますが、windows_driver_mustfix.qls スイートでは WHCP 認定に必要な "修正が必要" クエリに重点を置いています。 どちらのスイートも定期的に更新されます。
WCHP認定に関するMust-Fixクエリ
次のクエリのサブセットは、WHCP 認定の 修正が必要 であり、 推奨される修正 スイートにも含まれています。
この一連のルールは 、windows_driver_mustfix.qls に含まれています。
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/不良な加算オーバーフロー検査 |
codeql/cpp-queries/<Version> /Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190、 CWE-192 |
cpp/pointer-overflow-check |
codeql/cpp-queries/<Version> /Likely Bugs/Memory Management/PointerOverflow.ql |
なし |
cpp/too-few-arguments |
codeql/cpp-queries/<Version> /Likely Bugs/Underspecified Functions/TooFewArguments.ql |
なし |
cpp/comparison-with-wider-type |
codeql/cpp-queries/<Version> /Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190、 CWE-197、 CWE-835 |
cpp/hresult-boolean-conversion |
codeql/cpp-queries/<Version> /Security/CWE/CWE-253/HResultBooleanConversion.ql |
CWE-253 |
windows_driver_mustfix.qls ファイルには、次の修正が必要なコード クエリが含まれています。
# 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
この一連の規則は、 windows-driver-suites/windows_mustfix_partial.qls に含まれています。
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/windows/wdk/deprecated-api |
/microsoft/windows-drivers/<Version> /drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
なし |
microsoft/Security/CWE/CWE-704/WcharCharConversionLimited |
/microsoft/windows-drivers/<Version> /microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
windows_mustfix_partial.qls ファイルには、次の修正が必要なコード クエリが含まれています。
# 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
推奨される修正クエリ
これらのクエリは、Microsoft GitHub CodeQL リポジトリの windows_driver_recommended.qls クエリ スイートの一部です。 "Common Weakness Enumeration" (CWE) 列は、特定のクエリで検索されるセキュリティの問題の種類を識別します。 CWEs の詳細については、 CWE の Mitre のページ を参照してください。
"Common Weakness Enumeration" (CWE) 列には、クエリによって識別されるセキュリティの問題の種類が表示されます。
ベスト プラクティス
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/offset-use-before-range-check |
codeql/cpp-queries/<Version> /ベスト プラクティス/可能性の高いエラー/OffsetUseBeforeRangeCheck.ql |
なし |
可能性の高いバグ
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/悪い加算オーバーフローチェック |
codeql/cpp-queries/<Version> /Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190、 CWE-192 |
cpp/integer-multiplication-cast-to-long |
codeql/cpp-queries/<Version> /Likely Bugs/Arithmetic/IntMultToLong.ql |
CWE-190、 CWE-192、 CWE-197、 CWE-681 |
cpp/符号付きオーバーフローチェック |
codeql/cpp-queries/<Version> /Likely Bugs/Arithmetic/SignedOverflowCheck.ql |
なし |
cpp/upcast-array-pointer-arithmetic |
codeql/cpp-queries/<Version> /Likely Bugs/Conversion/CastArrayPointerArithmetic.ql |
CWE-119、 CWE-843 |
cpp/pointer-overflow-check |
codeql/cpp-queries/<Version> /Likely Bugs/Memory Management/PointerOverflow.ql |
なし |
cpp/引数が少なすぎます |
codeql/cpp-queries/<Version> /Likely Bugs/Underspecified Functions/TooFewArguments.ql |
なし |
cpp/incorrect-not-operator-usage(誤った not 演算子の使用) |
codeql/cpp-queries/<Version> /Likely Bugs/Likely Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
cpp/suspicious-add-sizeof |
codeql/cpp-queries/<Version> /Likely Bugs/Memory Management/SuspiciousSizeof.ql |
CWE-468 |
cpp/uninitialized-local |
codeql/cpp-queries/<Version> /Likely Bugs/Memory Management/UninitializedLocal.ql |
CWE-457、 CWE-665 |
安全
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/条件付き初期化されていない変数 |
codeql/cpp-queries/<Version> /Security/CWE/CWE-457/ConditionallyUninitializedVariable.ql。 |
CWE-457 |
cpp/終端されていない可変長引数呼び出し |
codeql/cpp-queries/<Version> /Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
cpp/suspicious-pointer-scaling |
codeql/cpp-queries/<Version> /Security/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
cpp/suspicious-pointer-scaling-void |
codeql/cpp-queries/<Version> /Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
cpp/potentially-dangerous-function |
codeql/cpp-queries/<Version> /Security/CWE/CWE-676/PotentiallyDangerousFunction.ql |
CWE-676 |
cpp/incorrect-string-type-conversion |
codeql/cpp-queries/<Version> /Security/CWE/CWE-704/WcharCharConversion.ql |
CWE-704 |
cpp/comparison-with-wider-type |
codeql/cpp-queries/<Version> /Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190、 CWE-197、 CWE-835 |
cpp/hresult-boolean-conversion |
codeql/cpp-queries/<Version> /Security/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 |
windows_driver_recommended.qls ファイルには、次の推奨されるコード クエリが含まれています。
# 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
これらのクエリは 、windows_recommended_partial.qls クエリ スイートの一部です。
可能性の高いバグ - windows_recommended_partial.qls
身分証明書 | ロケーション | 一般的な弱点の列挙 |
---|---|---|
cpp/パディングバイト情報漏洩 |
microsoft/windows-drivers/<Version> /microsoft/Likely Bugs/Boundary Violations/PaddingByteInformationDisclosure.ql |
なし |
cpp/badoverflowguard |
microsoft/windows-drivers/<Version> /microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql |
なし |
cpp/infiniteloop |
microsoft/windows-drivers/<Version> /microsoft/Likely Bugs/Conversion/InfiniteLoop.ql |
なし |
cpp/uninitializedptrfield |
microsoft/windows-drivers/<Version> /microsoft/Likely Bugs/UninitializedPtrField.ql |
なし |
cpp/use-after-free |
microsoft/windows-drivers/<Version> /microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql |
なし |
セキュリティ - windows_recommended_partial.qls
身分証明書 | ロケーション | コード分析の警告 |
---|---|---|
cpp/weak-crypto/cng/hardcoded-iv |
/microsoft/windows-drivers/<Version> /microsoft/Security/Crytpography/HardcodedIVCNG.ql |
なし |
ドライバー - 全般
身分証明書 | ロケーション | コード分析の警告 |
---|---|---|
cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers/<Version> /drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql |
関連する CA チェックなし |
cpp/drivers/role-type-correctly-used |
/microsoft/windows-drivers/<Version> /drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
関連付けられている CA チェックなし |
cpp/drivers/extended-deprecated-apis |
/microsoft/windows-drivers/<Version> /drivers/general/queries/ExtendedDeprecatedApis.ql |
C28719 警告、 C28726 警告、 C28735 警告、 C28750 警告 |
cpp/drivers/irql-not-saved |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql |
C28158 警告 |
cpp/drivers/irql-not-used |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql |
C28157 警告 |
cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql |
C28150 警告 |
cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
C28120 警告 |
cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlSetTooHigh/IrqlTooHigh.ql |
C28121 警告 |
cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers/<Version> /drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
C28124 警告 |
cpp/drivers/pool-tag-integral |
/microsoft/windows-drivers/<Version> /drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql |
C28134 警告 |
cpp/drivers/str-safe |
/microsoft/windows-drivers/<Version> /drivers/general/queries/StrSafe/StrSafe.ql |
C28146 警告 |
ドライバー - WDM
身分証明書 | ロケーション | コード分析の警告 |
---|---|---|
cpp/drivers/illegal-field-access |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql |
C28128 警告 |
cpp/drivers/illegal-field-access2 |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql |
C28175 警告 |
cpp/drivers/illegal-field-write |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql |
C28176 警告 |
cpp/drivers/opaque-mdl-use |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql |
(関連付けられた CA チェックなし) |
cpp/drivers/opaque-mdl-write |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlWrite.ql |
C28145 警告 |
cpp/drivers/pending-status-error |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/PendingStatusError/PendingStatusError.ql |
C28143 警告 |
cpp/drivers/wrong-dispatch-table-assignment |
/microsoft/windows-drivers/<Version> /drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql |
C28169 警告 |
windows-driver-suites/windows_recommended_partial.qls ファイルには、次の推奨されるコード クエリが含まれています。
# 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