Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Репозиторий Microsoft CodeQL GitHub предоставляет три набора запросов для упрощения комплексного рабочего процесса разработчика драйвера. Эти наборы включены в пакет CodeQL microsoft/windows-drivers и используют запросы, уникальные для этого пакета, а также общие запросы C++ из пакета microsoft/cpp-queries.
- рекомендуется.qls содержит широкий набор проверок для распространенных ошибок драйвера и C/C++. Мы рекомендуем запустить этот набор по умолчанию и просмотреть результаты.
- mustrun.qls содержит проверки, которые должны выполняться для прохождения сертификации программы совместимости Windows для оборудования (WHCP). Поскольку эти запросы могут привести к ложным срабатываниям в некоторых случаях, неудача этих проверок не приведет к провалу теста на соответствие логотипу статических инструментов, но разработчики должны внимательно просматривать результаты и исправлять реальные ошибки. DVL, созданный без результатов для этих проверок, не проходит испытания для логотипа статических инструментов. Для 26H1 mustrun.qls и recommended.qls идентичны.
- mustfix.qls является подмножеством обязательных к выполнению запросов и содержит проверки, указывающие на проблемы, которые необходимо исправить для прохождения сертификации WHCP. DVL, созданный с ошибками в этих правилах, не проходит тест статических инструментов на соответствие логотипу.
Для получения подробной информации о содержимом наборов запросов см. раздел Запросы и наборы CodeQL.
запросы Must-Fix для WHCP-сертификации
Ниже приведены подмножества запросов , которые необходимо исправить для сертификации WHCP, а также включены в набор рекомендуемых исправлений . Этот набор правил включен в mustfix.qls.
Многие из следующих правил соответствуют общим предупреждениям по перечислению слабых мест (CWEs) или предыдущим предупреждениям анализа кода.
Запросы, которые необходимо исправить, из пакета драйверов Microsoft/windows
| Идентификатор | Местоположение | Общее перечисление слабых / местПредупреждение анализа кода |
|---|---|---|
| cpp/drivers/wdk-deprecated-api |
/microsoft/windows-drivers/<Version>drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
Не применимо |
| cpp/drivers/extended-deprecated-apis |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql |
Предупреждение C28719, предупреждение C28726, предупреждение C28735, предупреждение C28750 |
| cpp/неправильное преобразование типа строки - игнорировать преобразования puchar-кастов |
/microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
Обязательные к исправлению запросы из пакета microsoft/cpp-queries
| Идентификатор | Местоположение | Общее перечисление слабых мест |
|---|---|---|
| cpp/ошибка проверки переполнения сложения |
/microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| cpp/wrong-number-format-arguments |
/microsoft/cpp-queries/<Version>/Вероятные ошибки/Формат/НеправильноеКоличествоАргументовФормата.ql |
CWE-234, CWE-685 |
| cpp/проверка-переполнения-указателя |
/microsoft/cpp-queries/<Version>/Likely Bugs/Memory Management/PointerOverflow.ql |
CWE-758 |
| cpp/unsafe-strncat |
/microsoft/cpp-querys/<Version>/Likely Bugs/Memory Management/SuspiciousCallToStrncat.ql |
CWE-119, CWE-251, CWE-676, CWE-788 |
| cpp/небезопасное-использование-this |
/microsoft/cpp-queries/<Version>/Likely Bugs/OO/UnsafeUseOfThis.ql |
CWE-670 |
| cpp/boost/tls-настройки-неправильная конфигурация |
/microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql |
CWE-326 |
| cpp/boost/use-of-deprecated-hardcoded-security-protocol |
/microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql |
CWE-327 |
| cpp/too-few-arguments |
/microsoft/cpp-queries/<Version>/Likely Bugs/Underspecified Functions/TooFewArguments.ql |
CWE-234, CWE-685 |
| cpp/microsoft/public/badoverflowguard |
/microsoft/cpp-queries/<Version>/Microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql |
CWE-190, CWE-191 |
| cpp/microsoft/public/drivers/incorrect-usage-of-rtlcomparememory |
/microsoft/cpp-queries/<Version>/Microsoft/Likely Bugs/Drivers/IncorrectUsageOfRtlCompareMemory.ql |
Не применимо |
| cpp/microsoft/public/weak-crypto/запрещенные-алгоритмы-шифрования |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedEncryption.ql |
CWE-327 |
| cpp/microsoft/public/weak-crypto/capi/запрещенные режимы |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedModesCAPI.ql |
CWE-327 |
| cpp/microsoft/public/weak-crypto/cng/запрещенные режимы |
/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/command-line-injection |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-078/ExecTainted.ql |
CWE-078, CWE-088 |
| cpp/неконтролируемое выполнение процесса |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-114/UncontrolledProcessOperation.ql |
CWE-114 |
| cpp/badly-bounded-write |
/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/no-space-for-terminator |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql |
CWE-120, CWE-122, CWE-131 |
| cpp/управляемая пользователем завершение с нулевым байтом – загрязнение |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-170/ImproperNullTerminationTainted.ql |
CWE-170 |
| cpp/comparison-with-wider-type |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-190/ComparisonWithWiderType.ql |
CWE-190, CWE-197, CWE-835 |
| cpp/hresult-boolean-conversion |
/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/dangerous-function-overflow |
/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 |
Рекомендуемые запросы
Рекомендуемый набор qls включает все запросы из набора mustfix.qls, а также следующие запросы из пакетов microsoft/windows-drivers и microsoft/cpp-queries.
Общие запросы драйверов из пакета драйверов Microsoft/Windows
| Идентификатор | Местоположение | Предупреждение анализа кода |
|---|---|---|
| cpp/drivers/annotation-syntax |
/microsoft/windows-drivers/drivers/<Version>general/queries/AnnotationSyntax/AnnotationSyntax.ql |
Предупреждение C28266 |
| cpp/drivers/current-function-type-not-correct |
/microsoft/windows-drivers/<Version>/drivers/general/queries/CurrentFunctionTypeNotCorrect/CurrentFunctionTypeNotCorrect.ql |
Предупреждение C28101 |
| cpp/drivers/default-pool-tag |
/microsoft/windows-drivers/<Version>/драйверы/общие/запросы/DefaultPoolTag/DefaultPoolTag.ql |
Предупреждение C28147 |
| cpp/драйверы/driver-entry-save-buffer |
/microsoft/windows-drivers/<Version>/drivers/general/queries/DriverEntrySaveBuffer/DriverEntrySaveBuffer.ql |
Предупреждение C28131 |
| cpp/drivers/examined-value |
/microsoft/windows-drivers/drivers/<Version>general/queries/ExaminedValue/ExaminedValue.ql |
Предупреждение C28193 |
| cpp/drivers/irp-stack-entry-copy |
/microsoft/windows-drivers/<Version>general/queries/IRPStackEntryCopy/IRPStackEntryCopy.ql |
Предупреждение C28114 |
| cpp/drivers/vazhny-vyzov-funktsii-optimizirovan-otsutstv | /microsoft/windows-drivers/drivers/general/queries/ImportantFunctionCallOptimizedOut/ImportantFunctionCallOptimizedOut.ql | Предупреждение C28625 |
| cpp/drivers/improper-not-operator-on-zero |
/microsoft/windows-drivers//drivers/<Version>general/queries/ImproperNotOperatorOnZero/ImproperNotOperatorOnZero.ql |
Предупреждение C28650 |
| cpp/drivers/invalid-function-class-typedef |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionClassTypedef/InvalidFunctionClassTypedef.ql |
Предупреждение C28268 |
| cpp/драйверы/недопустимая-аннотация-указателя-функции |
/microsoft/windows-drivers/<Version>drivers/general/queries/InvalidFunctionPointerAnnotation/InvalidFunctionPointerAnnotation.ql |
Предупреждение C28165 |
| cpp/drivers/io-initialize-timer-call |
/microsoft/windows-drivers/<Version>drivers/general/queries/IoInitializeTimerCall/IoInitializeTimerCall.ql |
Предупреждение C28133 |
| cpp/drivers/irql-annotation-issue |
/microsoft/windows-drivers/drivers/<Version>drivers/general/queries/IrqlAnnotationIssue/IrqlAnnotationIssue.ql |
Предупреждение C28153 |
| cpp/drivers/irql-cancel-routine |
/microsoft/windows-drivers/<Version>drivers/general/queries/IrqlCancelRoutine/IrqlCancelRoutine.ql |
Предупреждение C28144 |
| cpp/drivers/irql-float-state-mismatch |
/microsoft/windows-drivers/drivers/<Version>general/queries/IrqlFloatStateMismatch/IrqlFloatStateMismatch.ql |
Предупреждение C28111 |
| 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>drivers/general/queries/IrqlSetTooHigh/IrqlSetTooHigh.ql |
Предупреждение C28150 |
| cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers/drivers/<Version>drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
Предупреждение C28124 |
| cpp/drivers/irql-too-high |
/microsoft/windows-drivers//drivers/<Version>general/queries/IrqlTooHigh/IrqlTooHigh.ql |
Предупреждение C28121 |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version>drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
Предупреждение C28120 |
| cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers/<Version>/drivers/общий/запросы/KeSetEventPageable/KeSetEventPageable.ql |
Нет связанной проверки УЦ (Удостоверяющего Центра) |
| cpp/drivers/multithreaded-av-condition |
/microsoft/windows-drivers/<Version>drivers/general/queries/MultithreadedAVCondition/MultithreadedAVCondition.ql |
Предупреждение C28616 |
| cpp/drivers/ntstatus-explicit-cast |
/microsoft/windows-drivers/<Version>drivers/general/queries/NtstatusExplicitCast/NtstatusExplicitCast.ql |
Предупреждение C28714 |
| cpp/drivers/ntstatus-explicit-cast2 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast2/NtstatusExplicitCast2.ql |
Предупреждение C28715 |
| cpp/drivers/ntstatus-explicit-cast3 | /microsoft/windows-drivers/drivers/general/queries/NtstatusExplicitCast3/NtstatusExplicitCast3.ql | Предупреждение C28716 |
| cpp/drivers/null-character-pointer-assignment |
/microsoft/windows-drivers/<Version>general/queries/NullCharacterPointerAssignment/NullCharacterPointerAssignment.ql |
Предупреждение C28730 |
| cpp/drivers/operand-assignment |
/microsoft/windows-drivers/<Version>/drivers/general/queries/OperandAssignment/OperandAssignment.ql |
Предупреждение C28129 |
| cpp/drivers/pointer-variable-size |
/microsoft/windows-drivers//drivers/<Version>general/queries/PointerVariableSize/PointerVariableSize.ql |
Предупреждение C28132 |
| cpp/drivers/pool-tag-integral |
/microsoft/windows-drivers/drivers/<Version>general/queries/PoolTagIntegral/PoolTagIntegral.ql |
Предупреждение C28134 |
| cpp/drivers/role-type-correctly-used |
/microsoft/windows-drivers//drivers/<Version>general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
Предупреждение C28158 |
| cpp/drivers/routine-function-type-not-expected |
/microsoft/windows-drivers//drivers/<Version>general/queries/RoutineFunctionTypeNotExpected/RoutineFunctionTypeNotExpected.ql |
Предупреждение C28127 |
| cpp/drivers/str-safe |
/microsoft/windows-drivers//drivers/<Version>general/queries/StrSafe/StrSafe.ql |
Предупреждение C28146 |
| cpp/drivers/strict-type-match |
/microsoft/windows-drivers//drivers/<Version>general/queries/StrictTypeMatch/StrictTypeMatch.ql |
Предупреждение C28139 |
Запросы драйвера WDM из пакета драйверов Microsoft/Windows
| Идентификатор | Местоположение | Предупреждение анализа кода |
|---|---|---|
| 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-access-2 |
/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/init-not-cleared |
/microsoft/windows-drivers/<Version>wdm/queries/InitNotCleared/InitNotCleared.ql |
Предупреждение C28152 |
| cpp/drivers/kewaitlocal-requires-kernel-mode |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/KeWaitLocal/KeWaitLocal.ql |
Предупреждение C28135 |
| cpp/drivers/multiple-paged-code |
/microsoft/windows-drivers/<Version>drivers/wdm/queries/MultiplePagedCode/MultiplePagedCode.ql |
Предупреждение C28171 |
| cpp/drivers/ob-reference-mode |
/microsoft/windows-drivers/<Version>drivers/wdm/queries/ObReferenceMode/ObReferenceMode.ql |
Предупреждение C28126 |
| 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/OpaqueMdlWrite/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 |
Предупреждение C28168, предупреждение C28169 |
Общие запросы C++ из пакета microsoft/windows-drivers
| Идентификатор | Местоположение | Общее перечисление слабых мест / предупреждение анализа кода |
|---|---|---|
| cpp/paddingbyteinformationdisclosure |
/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/use-after-free |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql |
Не применимо |
| cpp/uninitializedptrfield |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/UninitializedPtrField.ql |
Не применимо |
| cpp/weak-crypto/cng/hardcoded-iv |
/microsoft/windows-drivers/<Version>/microsoft/Security/Crytpography/HardcodedIVCNG.ql |
Не применимо |
Общие запросы C++ из пакета microsoft/cpp-queries
| Идентификатор | Местоположение | Общее перечисление слабых мест |
|---|---|---|
| cpp/offset-use-before-range-check |
/microsoft/cpp-queries/<Version>Best Practices/Likely Errors/OffsetUseBeforeRangeCheck.ql |
CWE-120, CWE-125 |
| cpp/integer-multiplication-cast-to-long |
/microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/IntMultToLong.ql |
CWE-190, CWE-192, CWE-197, CWE-681 |
| cpp/signed-overflow-check |
/microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/SignedOverflowCheck.ql |
CWE-128, CWE-190 |
| cpp/upcast-array-pointer-arithmetic |
/microsoft/cpp-queries//Likely Bugs/<Version>Conversion/CastArrayPointerArithmetic.ql |
CWE-119, CWE-843 |
| cpp/incorrect-not-operator-usage |
/microsoft/cpp-queries//Likely Bugs/<Version>Likely Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
| cpp/подозрительный размер |
/microsoft/cpp-queries/<Version>/Likely Bugs/Memory Management/SuspiciousSizeof.ql |
CWE-467 |
| cpp/uninitialized-local |
/microsoft/cpp-queries/<Version>/Likely Bugs/Memory Management/UninitializedLocal.ql |
CWE-457, CWE-665 |
| cpp/незавершенный вызов вариативной функции |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
| cpp/условно-неинициализированная переменная |
/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/suspicious-pointer-scaling |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
| cpp/подозрительное-масштабирование-указателя-void |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
| cpp/потенциально опасные функции |
/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 |
Запросы обязательного выполнения
Набор mustrun.qls содержит запросы, которые должны быть выполнены для прохождения сертификации WHCP. Эти запросы не обязательно нуждаются в исправлении из-за возможных ложных срабатываний, но необходимо проверять их результаты и исправлять любые обнаруженные реальные ошибки. DvL, созданный без результатов для этих проверок, не проходит тест логотипа статических инструментов.
Для Windows 11 версии 26H1 запросы, предоставляемые mustrun.qls и recommended.qls, идентичны.