Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Репозиторий 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, идентичны.