Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Úložiště Microsoft CodeQL Na GitHubu poskytuje tři sady dotazů pro zjednodušení kompletního pracovního postupu vývojáře ovladačů. Tyto sady jsou součástí balíčku CodeQL pro microsoft/windows-drivers a využívají dotazy jedinečné pro tuto sadu a obecné dotazy jazyka C++ z balíčku microsoft/cpp-queries.
- recommended.qls obsahuje širokou sadu kontrol běžných chyb ovladače a C/C++. Tuto sadu doporučujeme spustit ve výchozím nastavení a zkontrolovat výsledky.
- mustrun.qls obsahuje kontroly, které musí být spuštěny , aby bylo možné předat certifikaci programu WHCP (Windows Hardware Compatibility Program). Vzhledem k tomu, že tyto dotazy mohou v některých případech vést k falešně pozitivním výsledkům, selhání těchto kontrol neznamená selhání testu loga Statických nástrojů. Vývojáři by měli výsledky zkontrolovat a opravit případné skutečné chyby. Generovaný DvL bez výsledků těchto kontrol selže v testu loga Statických Nástrojů. V případě 26H1 jsou mustrun.qls a recommended.qls totožné.
- mustfix.qls slouží jako podmnožina dotazů, které musí spouštět, a obsahuje kontroly, které hlásí problémy, které musí být opraveny , aby bylo možné předat certifikaci WHCP. DvL vygenerovaný s chybami v těchto pravidlech neprojde testem loga Statických nástrojů.
Podrobnosti o obsahu sad dotazů najdete v tématu Dotazy a sady CodeQL.
Nutné opravit dotazy k certifikaci WHCP
Následující podmnožina dotazů je nutné opravit pro certifikaci WHCP a jsou také součástí sady Doporučených oprav . Tato sada pravidel je součástí souboru mustfix.qls.
Mnoho z následujících pravidel odpovídá běžným výčtům slabosti (CWE) nebo předchozím upozorněním analýzy kódu.
Dotazy k nutné opravě z balíčku Microsoft/Windows-drivers
| ID | Umístění | Společný výčet slabosti / Upozornění analýzy kódu |
|---|---|---|
| cpp/drivers/wdk-deprecated-api |
/microsoft/windows-drivers//<Version>drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
není k dispozici |
| cpp/drivers/extended-deprecated-apis |
/microsoft/windows-drivers//<Version>drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql |
Upozornění C28719, upozornění C28726, upozornění C28735, upozornění C28750 |
| cpp/incorrect-string-type-conversion-ignore-puchar-casts |
/microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
Must-Fix dotazy z balíčku Microsoft/Cpp-Queries
| ID | Umístění | Společný výčet slabosti |
|---|---|---|
| cpp/špatná-kontrola-přetečení-při-sčítání |
/microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| cpp/špatný-formát-argumentů |
/microsoft/cpp-queries/<Version>//Likely Bugs/Format/WrongNumberOfFormatArguments.ql |
CWE-234, CWE-685 |
| cpp/pointer-overflow-check |
/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/nebezpečné-použití-tohoto |
/microsoft/cpp-queries/<Version>//Likely Bugs/OO/UnsafeUseOfThis.ql |
CWE-670 |
| cpp/boost/tls-settings-misconfiguration |
/microsoft/cpp-queries/<Version>/Pravděpodobné chyby/Protokoly/Nesprávná konfigurace TLS.ql |
CWE-326 |
| cpp/boost/použití zastaralého pevně zakódovaného bezpečnostního protokolu |
/microsoft/cpp-queries/<Version>//Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql |
CWE-327 |
| cpp/příliš málo argumentů |
/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-rtlcomparemory |
/microsoft/cpp-queries/<Version>/Microsoft/Likely Bugs/Drivers/IncorrectUsageOfRtlCompareMemory.ql |
není k dispozici |
| cpp/microsoft/public/weak-crypto/banned-encryption-algorithms |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedEncryption.ql |
CWE-327 |
| cpp/microsoft/public/weak-crypto/capi/banned-modes |
/microsoft/cpp-queries/<Version>/Microsoft/Security/Cryptography/BannedModesCAPI.ql |
CWE-327 |
| cpp/microsoft/public/weak-crypto/cng/banned-modes |
/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/injektáž příkazového řádku |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-078/ExecTainted.ql |
CWE-078, CWE-088 |
| cpp/nekontrolovaná procesní operace |
/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/uživatelsky řízené nulové ukončení - infikováno |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-170/ImproperNullTerminationTainted.ql |
CWE-170 |
| cpp/porovnání s širším typem |
/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/nebezpečné přetečení funkce |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-676/DangerousFunctionOverflow.ql |
CWE-242, CWE-676 |
| cpp/nebezpečný-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 |
Doporučené dotazy
Sada recommended.qls zahrnuje všechny dotazy ze sady mustfix.qls a následující dotazy z microsoft/windows-drivers a balíčků microsoft/cpp-queries.
Obecné dotazy ovladačů z sady Microsoft/windows-drivers Pack
| ID | Umístění | Upozornění analýzy kódu |
|---|---|---|
| cpp/drivers/annotation-syntax |
/microsoft/windows-drivers/<Version>/drivers/general/queries/AnnotationSyntax/AnnotationSyntax.ql |
Upozornění C28266 |
| cpp/drivers/current-function-type-not-correct |
/microsoft/windows-drivers//<Version>drivers/general/queries/CurrentFunctionTypeNotCorrect/CurrentFunctionTypeNotCorrect.ql |
Upozornění C28101 |
| cpp/drivers/default-pool-tag |
/microsoft/windows-drivers//<Version>drivers/general/queries/DefaultPoolTag/DefaultPoolTag.ql |
Upozornění C28147 |
| cpp/drivers/driver-entry-save-buffer |
/microsoft/windows-drivers//<Version>drivers/general/queries/DriverEntrySaveBuffer/DriverEntrySaveBuffer.ql |
Upozornění C28131 |
| cpp/drivers/vyšetřovaná-hodnota |
/microsoft/windows-drivers//<Version>drivers/general/queries/ExaminedValue/ExaminedValue.ql |
Upozornění C28193 |
| cpp/drivers/irp-stack-entry-copy |
/microsoft/windows-drivers//<Version>drivers/general/queries/IRPStackEntryCopy/IRPStackEntryCopy.ql |
Upozornění C28114 |
| cpp/ovladače/důležitá-funkce-volání-optimalizováno-pryč |
/microsoft/windows-drivers//<Version>drivers/general/queries/ImportantFunctionCallOptimizedOut/ImportantFunctionCallOptimizedOut.ql |
Upozornění C28625 |
| cpp/drivers/improper-not-operator-on-zero |
/microsoft/windows-drivers//<Version>drivers/general/queries/ImproperNotOperatorOnZero/ImproperNotOperatorOnZero.ql |
Upozornění C28650 |
| cpp/drivers/invalid-function-class-typedef |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionClassTypedef/InvalidFunctionClassTypedef.ql |
Upozornění C28268 |
| cpp/drivers/invalid-function-pointer-annotation |
/microsoft/windows-drivers//<Version>drivers/general/queries/InvalidFunctionPointerAnnotation/InvalidFunctionPointerAnnotation.ql |
Upozornění C28165 |
| cpp/drivers/io-initialize-timer-call |
/microsoft/windows-drivers//<Version>drivers/general/queries/IoInitializeTimerCall/IoInitializeTimerCall.ql |
Upozornění C28133 |
| cpp/drivers/irql-annotation-issue |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlAnnotationIssue/IrqlAnnotationIssue.ql |
Upozornění C28153 |
| cpp/drivers/irql-cancel-routine |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlCancelRoutine/IrqlCancelRoutine.ql |
Upozornění C28144 |
| cpp/drivers/irql-float-state-mismatch |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlFloatStateMismatch/IrqlFloatStateMismatch.ql |
Upozornění C28111 |
| cpp/drivers/irql-not-saved |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql |
Upozornění C28158 |
| cpp/ovladače/irql-not-used |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql |
Upozornění C28157 |
| cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlSetTooHigh/IrqlSetTooHigh.ql |
Upozornění C28150 |
| cpp/drivers/irql-set-too-low |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
Upozornění C28124 |
| cpp/drivers/irql-too-high |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql |
Upozornění C28121 |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers//<Version>drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
Upozornění C28120 |
| cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers//<Version>drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql |
Žádná přidružená kontrola certifikační autority |
| cpp/drivers/multithreaded-av-condition |
/microsoft/windows-drivers//<Version>drivers/general/queries/MultithreadedAVCondition/MultithreadedAVCondition.ql |
Upozornění C28616 |
| cpp/drivers/ntstatus-explicit-cast |
/microsoft/windows-drivers//<Version>drivers/general/queries/NtstatusExplicitCast/NtstatusExplicitCast.ql |
Upozornění C28714 |
| cpp/drivers/ntstatus-explicit-cast2 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast2/NtstatusExplicitCast2.ql |
Upozornění C28715 |
| cpp/drivers/ntstatus-explicit-cast3 |
/microsoft/windows-drivers//<Version>drivers/general/queries/NtstatusExplicitCast3/NtstatusExplicitCast3.ql |
Upozornění C28716 |
| cpp/drivers/null-character-pointer-assignment |
/microsoft/windows-drivers//<Version>drivers/general/queries/NullCharacterPointerAssignment/NullCharacterPointerAssignment.ql |
Upozornění C28730 |
| cpp/drivers/operand-assignment |
/microsoft/windows-drivers/<Version>/drivers/general/queries/OperandAssignment/OperandAssignment.ql |
Upozornění C28129 |
| cpp/drivers/pointer-variable-size |
/microsoft/windows-drivers//<Version>drivers/general/queries/PointerVariableSize/PointerVariableSize.ql |
Upozornění C28132 |
| cpp/drivers/pool-tag-integral |
/microsoft/windows-drivers//<Version>drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql |
Upozornění C28134 |
| cpp/drivers/role-type-correctly-used |
/microsoft/windows-drivers//<Version>drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql |
Upozornění C28158 |
| cpp/drivers/routine-function-type-not-expected |
/microsoft/windows-drivers/<Version>drivers/general/queries/RoutineFunctionTypeNotExpected/RoutineFunctionTypeNotExpected.ql |
Upozornění C28127 |
| cpp/drivers/str-safe |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrSafe/StrSafe.ql |
Upozornění C28146 |
| cpp/drivers/strict-type-match |
/microsoft/windows-drivers//<Version>drivers/general/queries/StrictTypeMatch/StrictTypeMatch.ql |
Upozornění C28139 |
Dotazy ovladačů WDM z sady Microsoft/windows-drivers Pack
| ID | Umístění | Upozornění analýzy kódu |
|---|---|---|
| cpp/drivers/illegal-field-access |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql |
Upozornění C28128 |
| cpp/drivers/illegal-field-access-2 |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql |
Upozornění C28175 |
| cpp/drivers/nezákonný zápis do pole |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql |
Upozornění C28176 |
| cpp/drivers/init-not-cleared |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/InitNotCleared/InitNotCleared.ql |
Upozornění C28152 |
| cpp/drivers/kewaitlocal-requires-kernel-mode |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/KeWaitLocal/KeWaitLocal.ql |
Upozornění C28135 |
| cpp/drivers/multiple-paged-code |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/MultiplePagedCode/MultiplePagedCode.ql |
Upozornění C28171 |
| cpp/drivers/ob-reference-mode |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/ObReferenceMode/ObReferenceMode.ql |
Upozornění C28126 |
| cpp/drivers/opaque-mdl-use |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql |
Žádná přidružená kontrola certifikační autority |
| cpp/drivers/opaque-mdl-write |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/OpaqueMdlWrite/OpaqueMdlWrite.ql |
Upozornění C28145 |
| cpp/ovladače/chyba-při-odesílání-stavu |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/PendingStatusError/PendingStatusError.ql |
Upozornění C28143 |
| cpp/drivers/wrong-dispatch-table-assignment |
/microsoft/windows-drivers//<Version>drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql |
Upozornění C28168, upozornění C28169 |
Obecné dotazy jazyka C++ z balíčku microsoft/windows-drivers pack
| ID | Umístění | Běžný výčet slabosti / Upozornění analýzy kódu |
|---|---|---|
| cpp/paddingbyteinformationdisclosure |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Boundary Violations/PaddingByteInformationDisclosure.ql |
není k dispozici |
| cpp/badoverflowguard |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql |
není k dispozici |
| cpp/infiniteloop |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/InfiniteLoop.ql |
není k dispozici |
| cpp/use-after-free |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql |
není k dispozici |
| cpp/uninitializedptrfield |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/UninitializedPtrField.ql |
není k dispozici |
| cpp/weak-crypto/cng/hardcoded-iv |
/microsoft/windows-drivers/<Version>/microsoft/Security/Cryptography/HardcodedIVCNG.ql |
není k dispozici |
Obecné dotazy jazyka C++ z balíčku microsoft/cpp-queries
| ID | Umístění | Společný výčet slabosti |
|---|---|---|
| cpp/offset-use-before-range-check |
/microsoft/cpp-dotazy/<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/<Version>//Likely Bugs/Conversion/CastArrayPointerArithmetic.ql |
CWE-119, CWE-843 |
| cpp/nesprávné použití operátoru NOT |
/microsoft/cpp-queries/<Version>//Likely Bugs/Likely Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
| cpp/suspicious-sizeof |
/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/neukončené-variadické-volání |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
| cpp/podmíněně-neinicializovaná-proměnná |
/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/podezřelé škálování ukazatele |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScaling.ql |
CWE-468 |
| cpp/suspicious-pointer-scaling-void |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-468/IncorrectPointerScalingVoid.ql |
CWE-468 |
| cpp/potenciálně nebezpečná funkce |
/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 |
povinné dotazy
Sada mustrun.qls obsahuje dotazy, které je potřeba spustit, aby bylo možné předat certifikaci WHCP. Tyto dotazy nemusí být nutně nutné opravit kvůli potenciálním falešně pozitivním výsledkům, ale měly by se zkontrolovat jejich výsledky a opravit všechny skutečné chyby. Generovaný DvL bez výsledků těchto kontrol selže v testu loga Statických Nástrojů.
U Windows 11 verze 26H1 jsou dotazy zveřejněné mustrun.qls a recommended.qls stejné.