Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Das GitHub-Repository von Microsoft CodeQL bietet drei Abfragesuiten, um den End-to-End-Treiber-Entwicklerworkflow zu vereinfachen. Diese Suites sind im CodeQL-Paket von Microsoft/windows-drivers enthalten und verwenden Abfragen, die für dieses Paket und allgemeine C++-Abfragen aus dem Microsoft/cpp-queries-Paket eindeutig sind.
- recommended.qls enthält eine breite Palette von Überprüfungen auf allgemeine Treiber- und C/C++-Fehler. Wir empfehlen, diese Suite standardmäßig auszuführen und Ergebnisse zu überprüfen.
- mustrun.qls enthält Prüfungen, die ausgeführt werden müssen , um die WHCP-Zertifizierung (Windows Hardware Compatibility Program) zu bestehen. Da diese Abfragen in einigen Fällen zu falsch positiven Ergebnissen führen können, bedeutet das Scheitern dieser Prüfungen nicht, dass der Logotest für statische Tools fehlschlägt. Aber Entwickler sollten die Ergebnisse überprüfen und echte Fehler beheben. Eine DVL, die ohne Ergebnisse für diese Prüfungen generiert wurde, schlägt den Logotest für statische Tools fehl. Für 26H1 sind mustrun.qls und recommended.qls identisch.
- mustfix.qls dient als Teilmenge der must-run-Abfragen und enthält Prüfungen, die Probleme melden, die behoben werden müssen , um die WHCP-Zertifizierung zu bestehen. Eine DVL, die mit Fehlern in diesen Regeln generiert wurde, besteht den Logo-Test für statische Tools nicht.
Details zum Inhalt der Abfragesammlungen finden Sie unter CodeQL-Abfragen und -Suites.
Unbedingt zu beheben Abfragen für die WHCP-Zertifizierung
Die folgenden Teilmengen von Abfragen sind Must-Fix für die WHCP-Zertifizierung und sind auch in der Empfohlenen Fix-Suite enthalten. Dieser Satz von Regeln ist in mustfix.qls enthalten.
Viele der folgenden Regeln entsprechen allgemeinen Schwächeaufzählungen (Common Weakness Enumeration, CWEs) oder vorherigen Codeanalysewarnungen.
Dringend zu beheben Abfragen aus dem Microsoft/Windows-Drivers-Paket
| Identifikationsnummer | Standort | Allgemeine Schwächeaufzählung / Codeanalysewarnung |
|---|---|---|
| cpp/drivers/wdk-deprecated-api |
/microsoft/windows-drivers/<Version>/drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql |
Nicht verfügbar |
| cpp/treiber/erweiterte-veraltete-apis |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql |
C28719 Warnung, C28726 Warnung, C28735 Warnung, C28750 Warnung |
| cpp/incorrect-string-type-conversion-ignore-puchar-casts |
/microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql |
CWE-704 |
Must-Fix Abfragen aus dem Microsoft/cpp-queries-Pack
| Identifikationsnummer | Standort | Allgemeine Schwächeaufzählung |
|---|---|---|
| cpp/bad-addition-overflow-check |
/microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql |
CWE-190, CWE-192 |
| cpp/ungültige-nummernformat-argumente |
/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-queries/<Version>/Likely Bugs/Memory Management/SuspiciousCallToStrncat.ql |
CWE-119, CWE-251, CWE-676, CWE-788 |
| cpp/unsafe-use-of-this |
/microsoft/cpp-queries/<Version>/Likely Bugs/OO/UnsafeUseOfThis.ql |
CWE-670 |
| cpp/boost/fehlerhafte-tls-einstellungen |
/microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql |
CWE-326 |
| cpp/boost/verwenden-veralteter-fest-kodierter-sicherheitsprotokoll |
/microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql |
CWE-327 |
| cpp/zu-wenige-argumente |
/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 |
Nicht verfügbar |
| cpp/microsoft/public/weak-crypto/verbotene-verschlüsselungsalgorithmen |
/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/command-line-injection |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-078/ExecTainted.ql |
CWE-078, CWE-088 |
| cpp/unkontrollierter-Prozessbetrieb |
/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/user-controlled-null-termination-tainted |
/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/gefährlicher-Funktionsüberlauf |
/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 |
Empfohlene Abfragen
Die Suite recommended.qls enthält alle Abfragen aus der mustfix.qls-Suite sowie die folgenden Abfragen aus den Microsoft/windows-drivers- und Microsoft/cpp-queries-Paketen.
Allgemeine Treiberabfragen aus dem Microsoft/windows-drivers Pack
| Identifikationsnummer | Standort | Codeanalysewarnung |
|---|---|---|
| cpp/drivers/annotation-syntax |
/microsoft/windows-drivers/<Version>/drivers/general/queries/AnnotationSyntax/AnnotationSyntax.ql |
C28266-Warnung |
| cpp/treiber/aktueller-funktionstyp-nicht-korrekt |
/microsoft/windows-drivers/<Version>/drivers/general/queries/CurrentFunctionTypeNotCorrect/CurrentFunctionTypeNotCorrect.ql |
C28101-Warnung |
| cpp/drivers/default-pool-tag |
/microsoft/windows-drivers/<Version>/drivers/general/queries/DefaultPoolTag/DefaultPoolTag.ql |
C28147-Warnung |
| cpp/drivers/driver-entry-save-buffer |
/microsoft/windows-drivers/<Version>/drivers/general/queries/DriverEntrySaveBuffer/DriverEntrySaveBuffer.ql |
C28131-Warnung |
| cpp/drivers/geprüfter Wert |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ExaminedValue/ExaminedValue.ql |
C28193-Warnung |
| cpp/drivers/irp-stack-entry-copy |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IRPStackEntryCopy/IRPStackEntryCopy.ql |
C28114-Warnung |
| cpp/treiber/wichtiger-funktionsaufruf-optimiert-aus |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ImportantFunctionCallOptimizedOut/ImportantFunctionCallOptimizedOut.ql |
C28625-Warnung |
| cpp/drivers/unsachgemäßer-Nichtoperator-auf-Null |
/microsoft/windows-drivers/<Version>/drivers/general/queries/ImproperNotOperatorOnZero/ImproperNotOperatorOnZero.ql |
C28650-Warnung |
| cpp/drivers/invalid-function-class-typedef |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionClassTypedef/InvalidFunctionClassTypedef.ql |
C28268-Warnung |
| cpp/drivers/invalid-function-pointer-annotation |
/microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionPointerAnnotation/InvalidFunctionPointerAnnotation.ql |
C28165-Warnung |
| cpp/drivers/io-initialize-timer-call |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IoInitializeTimerCall/IoInitializeTimerCall.ql |
C28133-Warnung |
| cpp/drivers/irql-annotation-issue |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlAnnotationIssue/IrqlAnnotationIssue.ql |
C28153-Warnung |
| cpp/drivers/irql-cancel-routine |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlCancelRoutine/IrqlCancelRoutine.ql |
C28144-Warnung |
| cpp/drivers/irql-float-state-mismatch |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlFloatStateMismatch/IrqlFloatStateMismatch.ql |
C28111-Warnung |
| cpp/drivers/irql-not-saved |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql |
C28158-Warnung |
| cpp/Treiber/irql-nicht-verwenden |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql |
C28157-Warnung |
| cpp/drivers/irql-set-too-high |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooHigh/IrqlSetTooHigh.ql |
C28150-Warnung |
| cpp/drivers/irql-set-too-low (IRQL zu niedrig eingestellt) |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql |
C28124-Warnung |
| cpp/drivers/irql-too-high |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql |
C28121-Warnung |
| cpp/drivers/irql-too-low |
/microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooLow/IrqlTooLow.ql |
C28120-Warnung |
| cpp/drivers/ke-set-event-pageable |
/microsoft/windows-drivers/<Version>/drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql |
Keine zugeordnete Zertifizierungsstelle-Prüfung |
| cpp/drivers/multithreaded-av-condition |
/microsoft/windows-drivers/<Version>/drivers/general/queries/MultithreadedAVCondition/MultithreadedAVCondition.ql |
C28616-Warnung |
| cpp/drivers/ntstatus-explicit-cast |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast/NtstatusExplicitCast.ql |
C28714-Warnung |
| cpp/drivers/ntstatus-explicit-cast2 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast2/NtstatusExplicitCast2.ql |
C28715-Warnung |
| cpp/drivers/ntstatus-explicit-cast3 |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast3/NtstatusExplicitCast3.ql |
C28716-Warnung |
| cpp/drivers/null-Zeichen-Zeiger-Zuweisung |
/microsoft/windows-drivers/<Version>/drivers/general/queries/NullCharacterPointerAssignment/NullCharacterPointerAssignment.ql |
C28730-Warnung |
| cpp/drivers/operand-assignment |
/microsoft/windows-drivers/<Version>/drivers/general/queries/OperandAssignment/OperandAssignment.ql |
C28129-Warnung |
| cpp/drivers/pointer-variable-size |
/microsoft/windows-drivers/<Version>/drivers/general/queries/PointerVariableSize/PointerVariableSize.ql |
C28132-Warnung |
| cpp/drivers/pool-tag-integral |
/microsoft/windows-drivers/<Version>/drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql |
C28134-Warnung |
| cpp/treiber/rollen-typ-korrekt-verwendet |
/microsoft/windows-drivers/<Version>/drivers/general/queries/RoleTypeKorrektVerwendet/RoleTypeKorrektVerwendet.ql |
C28158-Warnung |
| cpp/drivers/routine-function-type-not-expected |
/microsoft/windows-drivers/<Version>/drivers/general/queries/RoutineFunctionTypeNotExpected/RoutineFunctionTypeNotExpected.ql |
C28127-Warnung |
| cpp/drivers/str-safe |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrSafe/StrSafe.ql |
C28146-Warnung |
| cpp/drivers/strict-type-match |
/microsoft/windows-drivers/<Version>/drivers/general/queries/StrictTypeMatch/StrictTypeMatch.ql |
C28139-Warnung |
WDM-Treiberabfragen aus dem Microsoft/windows-drivers Pack
| Identifikationsnummer | Standort | Codeanalysewarnung |
|---|---|---|
| cpp/treiber/illegaler-feldzugriff |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql |
C28128-Warnung |
| cpp/treiber/unerlaubter-feldzugriff-2 |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql |
C28175-Warnung |
| cpp/drivers/illegal-field-write |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql |
C28176-Warnung |
| cpp/drivers/init-not-cleared |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/InitNotCleared/InitNotCleared.ql |
C28152-Warnung |
| cpp/drivers/kewaitlocal-requires-kernel-mode |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/KeWaitLocal/KeWaitLocal.ql |
C28135-Warnung |
| cpp/drivers/multiple-paged-code |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/MultiplePagedCode/MultiplePagedCode.ql |
C28171-Warnung |
| cpp/drivers/ob-reference-mode |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/ObReferenceMode/ObReferenceMode.ql |
C28126-Warnung |
| cpp/drivers/opaque-mdl-use |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql |
Keine zugeordnete Zertifizierungsstelle-Prüfung |
| cpp/drivers/opaque-mdl-write |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlWrite/OpaqueMdlWrite.ql |
C28145-Warnung |
| cpp/drivers/pending-status-error |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/PendingStatusError/PendingStatusError.ql |
C28143-Warnung |
| cpp/Treiber/falsche-Zuweisung-der-Versandtabellentabelle |
/microsoft/windows-drivers/<Version>/drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql |
C28168-Warnung, C28169-Warnung |
Allgemeine C++-Abfragen aus dem Microsoft/windows-drivers Pack
| Identifikationsnummer | Standort | Allgemeine Warnung zur Aufzählung von Schwachstellen /Codeanalyse |
|---|---|---|
| cpp/paddingbyteinformationdisclosure |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Boundary Violations/PaddingByteInformationDisclosure.ql |
Nicht verfügbar |
| cpp/badoverflowguard |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql |
Nicht verfügbar |
| cpp/infiniteloop |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/InfiniteLoop.ql |
Nicht verfügbar |
| cpp/use-after-free (Verwendung nach Freigabe) |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql |
Nicht verfügbar |
| cpp/uninitializedptrfield |
/microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/UninitializedPtrField.ql |
Nicht verfügbar |
| cpp/weak-crypto/cng/hardcoded-iv |
/microsoft/windows-drivers/<Version>/microsoft/Security/Cryptography/HardcodedIVCNG.ql |
Nicht verfügbar |
Allgemeine C++-Abfragen aus dem Microsoft/cpp-queries-Paket
| Identifikationsnummer | Standort | Allgemeine Schwächeaufzählung |
|---|---|---|
| cpp/offset-verwendung-vor-bereichsprüfung |
/microsoft/cpp-queries/<Version>/Best Practices/Likely Errors/OffsetUseBeforeRangeCheck.ql |
CWE-120, CWE-125 |
| cpp/Integer-Multiplikation-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-arithmetik |
/microsoft/cpp-queries/<Version>/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql |
CWE-119, CWE-843 |
| cpp/falsche Verwendung des Nicht-Operators |
/microsoft/cpp-queries/<Version>/Likely Bugs/Likely Typos/IncorrectNotOperatorUsage.ql |
CWE-480 |
| cpp/verdächtige Größeof |
/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/unterminated-variadic-call |
/microsoft/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql |
CWE-121 |
| cpp/bedingt nicht initialisierte Variable |
/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/verdächtige Zeigerskalierung |
/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/potenziell gefährliche Funktion |
/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 |
Obligatorische Anfragen
Die mustrun.qls-Suite enthält Abfragen, die ausgeführt werden müssen, um die WHCP-Zertifizierung zu bestehen. Diese Abfragen müssen möglicherweise aufgrund potenzieller falsch positiver Ergebnisse nicht unbedingt behoben werden, ihre Ergebnisse sollten jedoch überprüft und alle echten Fehler behoben werden. Eine DVL, die ohne Ergebnisse für diese Prüfungen generiert wurde, schlägt den Logotest für statische Tools fehl.
Für Windows 11, Version 26H1, sind die von mustrun.qls und recommended.qls verfügbar gemachten Abfragen identisch.