Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Репозиторий Microsoft CodeQL GitHub предлагает два набора запросов для упрощения разработки драйверов Windows и обеспечения соответствия программе совместимости оборудования Windows (WHCP). Рекомендуемый набор qls включает все рекомендуемые запросы для разработчиков драйверов, в то время как набор mustfix.qls фокусируется на запросах Must-Fix, необходимых для сертификации WHCP. Оба комплекта регулярно обновляются.
запросы Must-Fix для сертификации WCHP
Ниже приведены подмножества запросов , которые необходимо исправить для сертификации WHCP, а также включены в набор рекомендуемых исправлений .
Этот набор правил включен в mustfix.qls.
| Идентификатор | Местоположение | Общее перечисление слабых мест |
|---|---|---|
| cpp/ошибка проверки переполнения сложения |
codeql/cpp-queries/<Version>/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| cpp/проверка-переполнения-указателя |
codeql/cpp-queries//Likely Bugs/<Version>Memory Management/PointerOverflow.ql |
Не применимо |
| cpp/too-few-arguments |
codeql/cpp-queries//Likely Bugs/<Version>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 |
Файл mustfix.qls содержит следующие запросы кода 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
Этот набор правил включается в windows-driver-suite/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 содержит следующие запросы кода 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
Рекомендуемые запросы исправлений
Эти запросы являются частью набора запросов рекомендуется.qls в репозитории Microsoft GitHub CodeQL. Столбец "Общее перечисление слабых мест" (CWE) определяет, какие типы проблем безопасности выполняет поиск заданного запроса. Дополнительные сведения о CWEs см. на странице Mitre в CWE .
В столбце "Общее перечисление слабых мест" (CWE) показаны типы проблем безопасности, которые идентифицирует запрос.
Лучшие практики
| Идентификатор | Местоположение | Общее перечисление слабых мест |
|---|---|---|
| cpp/offset-use-before-range-check |
codeql/cpp-queries//Best Practices/<Version>Likely Errors/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/signed-overflow-check |
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/проверка-переполнения-указателя |
codeql/cpp-queries//Likely Bugs/<Version>Memory Management/PointerOverflow.ql |
Не применимо |
| cpp/too-few-arguments |
codeql/cpp-queries//Likely Bugs/<Version>Underspecified Functions/TooFewArguments.ql |
Не применимо |
| cpp/incorrect-not-operator-usage |
codeql/cpp-queries//Likely Bugs/<Version>Likely Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
| cpp/suspicious-add-sizeof |
<Version>
|
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>/Безопасность/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
| cpp/подозрительное-масштабирование-указателя-void |
codeql/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
| cpp/потенциально опасные функции |
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 |
Рекомендуемый файл 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/paddingbyteinformationdisclosure |
microsoft/windows-drivers/<Version>/microsoft/Возможные Ошибки/Нарушение Границ/Раскрытие Информации через Байты Заполнения.ql |
Не применимо |
| cpp/badoverflowguard |
microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql |
Не применимо |
| cpp/infiniteloop |
microsoft/windows-drivers/<Version>/microsoft/Возможные ошибки/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/общий/запросы/KeSetEventPageable/KeSetEventPageable.ql |
Нет связанной проверки УЦ (Удостоверяющего Центра) |
| cpp/drivers/role-type-correctly-used |
/microsoft/windows-drivers//drivers/<Version>general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
Нет связанной проверки УЦ (Удостоверяющего Центра) |
| cpp/drivers/extended-deprecated-apis |
/microsoft/windows-drivers/drivers/<Version>general/queries/ExtendedDeprecatedApis.ql |
Предупреждение C28719, предупреждение C28726, предупреждение C28735, предупреждение C28750 |
| cpp/drivers/irql-not-saved |
/microsoft/windows-drivers/drivers/<Version>drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql |
Предупреждение C28158 |
| cpp/drivers/irql-not-used |
/microsoft/windows-drivers//drivers/<Version>general/queries/IrqlNotUsed/IrqlNotUsed.ql |
Предупреждение C28157 |
| cpp/драйверы/irql-установлен-слишком-высоко |
/microsoft/windows-drivers//drivers/<Version>general/queries/IrqlTooHigh/IrqlTooHigh.ql |
Предупреждение C28150 |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version>drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
Предупреждение C28120 |
| cpp/драйверы/irql-установлен-слишком-высоко |
/microsoft/windows-drivers/drivers/<Version>drivers/general/queries/IrqlSetTooHigh/IrqlTooHigh.ql |
Предупреждение C28121 |
| cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers/drivers/<Version>drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
Предупреждение C28124 |
| cpp/drivers/pool-tag-integral |
/microsoft/windows-drivers/drivers/<Version>general/queries/PoolTagIntegral/PoolTagIntegral.ql |
Предупреждение C28134 |
| cpp/drivers/str-safe |
/microsoft/windows-drivers//drivers/<Version>general/queries/StrSafe/StrSafe.ql |
Предупреждение C28146 |
Драйверы — WDM
| Идентификатор | Местоположение | Предупреждение анализа кода |
|---|---|---|
| Assuming that translation is appropriate here, it would be "cpp/драйверы/незаконный-доступ-к-полю". |
/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/драйверы/неправильная запись в поле |
/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 |
(Нет связанной проверки соответствия) |
| 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/драйвера/неправильное-присвоение-таблицы-распределения |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql |
Предупреждение C28169 |
Файл windows-driver-suite/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