Megosztás:


CodeQL-lekérdezések és -csomagok a Windows illesztőprogram-teszteléséhez

A Microsoft CodeQL GitHub-adattár három lekérdezéscsomagot biztosít az illesztőprogramok teljes körű fejlesztői munkafolyamatának leegyszerűsítéséhez. Ezek a csomagok a microsoft/windows-drivers CodeQL csomag részét képezik, és a csomaghoz tartozó egyedi lekérdezéseket és a microsoft/cpp-lekérdezések csomag általános C++ lekérdezéseit használják.

  • recommended.qls a gyakori illesztőprogram-hibák és C/C++ hibák széles körére tartalmaz ellenőrzéseket. Javasoljuk, hogy alapértelmezés szerint futtassa ezt a csomagot, és tekintse át az eredményeket.
  • A mustrun.qls olyan ellenőrzéseket tartalmaz, amelyeket a Windows hardverkompatibilitási program (WHCP) tanúsítványának teljesítéséhez kell futtatni . Mivel ezek a lekérdezések bizonyos esetekben hamis pozitív eredményt eredményezhetnek, az ellenőrzések sikertelensége nem fog meghiúsulni a Static Tools Logo teszten, de a fejlesztőknek át kell tekinteniük az eredményeket, ki kell javítaniuk és valódi hibákat kell kijavítanak. Az ilyen ellenőrzések eredményei nélkül létrehozott DVL nem felel meg a Static Tools Logo tesztnek. 26H1 esetén a mustrun.qls és az recommended.qls azonos.
  • A mustfix.qls a kötelezően futtatható lekérdezések részhalmazaként szolgál, és olyan ellenőrzéseket tartalmaz, amelyek a WHCP-tanúsítvány sikeres teljesítéséhez javítandó jelentésproblémákat tartalmaznak. Az ezekben a szabályokban hibákkal létrehozott DVL nem felel meg a Static Tools Logo tesztnek.

A lekérdezési csomagok tartalmáról további információt a CodeQL-lekérdezések és -csomagok című témakörben talál.

Kötelezően javítandó lekérdezések a WHCP-minősítéshez

A lekérdezések alábbi részhalmaza a WHCP-tanúsítvány kötelező javítása, és az Ajánlott javítás csomag része is. Ez a szabálykészlet a mustfix.qls része.

Az alábbi szabályok közül sok megfelel a Common Weakness Enumeration (CWEs) vagy a korábbi kódelemzési figyelmeztetéseknek.

Javításra szoruló lekérdezések a microsoft/windows-drivers csomagból

azonosító Elhelyezkedés Gyakori gyengeségek számbavétele / Kódelemzési figyelmeztetés
cpp/drivers/wdk-deprecated-api /microsoft/windows-drivers/<Version>/drivers/general/queries/WdkDeprecatedApis/wdk-deprecated-api.ql Nincs adat.
cpp/drivers/extended-deprecated-apis /microsoft/windows-drivers/<Version>/drivers/general/queries/ExtendedDeprecatedApis/ExtendedDeprecatedApis.ql C28719 Warning, C28726 Warning, C28735 Warning, C28750 Warning
cpp/incorrect-string-type-conversion-ignore-puchar-casts /microsoft/windows-drivers/<Version>/microsoft/Security/CWE/CWE-704/WcharCharConversionLimited.ql CWE-704

Must-Fix lekérdezések a microsoft/cpp-queries csomagból

azonosító Elhelyezkedés Gyakori gyengeségek számbavétele
cpp/bad-addition-overflow-check /microsoft/cpp-queries/<Version>/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql CWE-190, CWE-192
cpp/wrong-number-format-arguments (helytelen számformátum argumentumok) /microsoft/cpp-queries/<Version>/Likely Bugs/Format/WrongNumberOfFormatArguments.ql CWE-234, CWE-685
cpp/mutató-túlcsordulás-ellenőrzés /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/tls-beállítások helytelen konfigurációja /microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/TlsSettingsMisconfiguration.ql CWE-326
cpp/boost/a_lejárt_keménykódolt_biztonsági_protokoll_használata /microsoft/cpp-queries/<Version>/Likely Bugs/Protocols/UseOfDeprecatedHardcodedProtocol.ql CWE-327
cpp/túl kevés argumentum /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 Nincs adat.
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/parancssori injektálás /microsoft/cpp-queries/<Version>/Security/CWE/CWE-078/ExecTainted.ql CWE-078, CWE-088
cpp/ellenőrizetlen-folyamatművelet /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/nincs hely a lezárónak /microsoft/cpp-queries/<Version>/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql CWE-120, CWE-122, CWE-131
cpp/felhasználó által vezérelt nullvégződés-szennyezett /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/helytelen-karakterlánc-típus-konverzió /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

Az ajánlott.qls csomag tartalmazza a mustfix.qls csomag összes lekérdezését, valamint a microsoft/windows-drivers és a microsoft/cpp-queries csomagok következő lekérdezéseit.

Általános illesztőprogram-lekérdezések a microsoft/windows-drivers csomagból

azonosító Elhelyezkedés Kódelemzési figyelmeztetés
cpp/drivers/annotation-szintaxis /microsoft/windows-drivers/<Version>/drivers/general/queries/AnnotationSyntax/AnnotationSyntax.ql C28266 figyelmeztetés
cpp/drivers/az-aktuális-függvény-típus-nem-megfelelő /microsoft/windows-drivers/<Version>/drivers/general/queries/CurrentFunctionTypeNotCorrect/CurrentFunctionTypeNotCorrect.ql C28101 figyelmeztetés
cpp/drivers/default-pool-tag /microsoft/windows-drivers/<Version>/drivers/general/queries/DefaultPoolTag/DefaultPoolTag.ql C28147 figyelmeztetés
cpp/drivers/driver-entry-save-buffer /microsoft/windows-drivers/<Version>/drivers/general/queries/DriverEntrySaveBuffer/DriverEntrySaveBuffer.ql C28131 figyelmeztetés
cpp/drivers/examined-value /microsoft/windows-drivers/<Version>/drivers/general/queries/ExaminedValue/ExaminedValue.ql C28193 figyelmeztetés
cpp/drivers/irp-stack-entry-copy /microsoft/windows-drivers/<Version>/drivers/general/queries/IRPStackEntryCopy/IRPStackEntryCopy.ql C28114 figyelmeztetés
cpp/drivers/fontos-függvényhívás-optimalizálva /microsoft/windows-drivers/<Version>/drivers/general/queries/ImportantFunctionCallOptimizedOut/ImportantFunctionCallOptimizedOut.ql C28625 figyelmeztetés
cpp/drivers/helytelen-nem-operator-on-zero /microsoft/windows-drivers/<Version>/drivers/general/queries/ImproperNotOperatorOnZero/ImproperNotOperatorOnZero.ql C28650 figyelmeztetés
cpp/drivers/invalid-function-class-typedef /microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionClassTypedef/InvalidFunctionClassTypedef.ql C28268 figyelmeztetés
cpp/drivers/invalid-function-pointer-annotation /microsoft/windows-drivers/<Version>/drivers/general/queries/InvalidFunctionPointerAnnotation/InvalidFunctionPointerAnnotation.ql C28165 figyelmeztetés
cpp/drivers/io-initialize-timer-call /microsoft/windows-drivers/<Version>/drivers/general/queries/IoInitializeTimerCall/IoInitializeTimerCall.ql C28133 figyelmeztetés
cpp/drivers/irql-annotation-issue /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlAnnotationIssue/IrqlAnnotationIssue.ql C28153 figyelmeztetés
cpp/drivers/irql-cancel-eljárás /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlCancelRoutine/IrqlCancelRoutine.ql C28144 figyelmeztetés
cpp/drivers/irql-float-state-mismatch /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlFloatStateMismatch/IrqlFloatStateMismatch.ql C28111 figyelmeztetés
cpp/drivers/irql-not-saved /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotSaved/IrqlNotSaved.ql C28158 figyelmeztetés
cpp/drivers/irql-not-used /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlNotUsed/IrqlNotUsed.ql C28157 figyelmeztetés
cpp/drivers/irql-túl-magasra-állítva /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooHigh/IrqlSetTooHigh.ql C28150 figyelmeztetés
cpp/drivers/irql-set-too-low /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlSetTooLow/IrqlSetTooLow.ql C28124 figyelmeztetés
cpp/drivers/irql-too-high /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooHigh/IrqlTooHigh.ql C28121 figyelmeztetés
cpp/drivers/irql-too-low /microsoft/windows-drivers/<Version>/drivers/general/queries/IrqlTooLow/IrqlTooLow.ql C28120 figyelmeztetés
cpp/drivers/ke-set-event-pageable /microsoft/windows-drivers/<Version>/drivers/general/queries/KeSetEventPageable/KeSetEventPageable.ql Nincs társított CA ellenőrzés
A következő útvonal: cpp/drivers/multithreaded-av-condition egy több szálas AV feltétellel kapcsolatos útvonal vagy fájlnév. /microsoft/windows-drivers/<Version>/drivers/general/queries/MultithreadedAVCondition/MultithreadedAVCondition.ql C28616 figyelmeztetés
cpp/drivers/ntstatus-explicit-cast /microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast/NtstatusExplicitCast.ql C28714 figyelmeztetés
cpp/drivers/ntstatus-explicit-cast2 /microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast2/NtstatusExplicitCast2.ql C28715 figyelmeztetés
cpp/drivers/ntstatus-explicit-cast3 /microsoft/windows-drivers/<Version>/drivers/general/queries/NtstatusExplicitCast3/NtstatusExplicitCast3.ql C28716 figyelmeztetés
cpp/drivers/null-karakter-mutató-hozzárendelés /microsoft/windows-drivers/<Version>/drivers/general/queries/NullCharacterPointerAssignment/NullCharacterPointerAssignment.ql C28730 figyelmeztetés
cpp/drivers/operand-assignment /microsoft/windows-drivers/<Version>/drivers/general/queries/OperandAssignment/OperandAssignment.ql C28129 figyelmeztetés
cpp/drivers/pointer-variable-size /microsoft/windows-drivers/<Version>/drivers/general/queries/PointerVariableSize/PointerVariableSize.ql C28132 figyelmeztetés
cpp/drivers/pool-tag-integral /microsoft/windows-drivers/<Version>/drivers/general/queries/PoolTagIntegral/PoolTagIntegral.ql C28134 figyelmeztetés
cpp/drivers/helyesen használt szereptípus /microsoft/windows-drivers/<Version>/drivers/general/queries/RoleTypeCorrectlyUsed/RoleTypeCorrectlyUsed.ql C28158 figyelmeztetés
cpp/drivers/routine-function-type-not-expected /microsoft/windows-drivers/<Version>/drivers/general/queries/RoutineFunctionTypeNotExpected/RoutineFunctionTypeNotExpected.ql C28127 figyelmeztetés
cpp/drivers/str-safe /microsoft/windows-drivers/<Version>/drivers/general/queries/StrSafe/StrSafe.ql C28146 figyelmeztetés
cpp/drivers/strict-type-match /microsoft/windows-drivers/<Version>/drivers/general/queries/StrictTypeMatch/StrictTypeMatch.ql C28139 figyelmeztetés

WDM-illesztőprogram-lekérdezések a microsoft/windows-drivers csomagból

azonosító Elhelyezkedés Kódelemzési figyelmeztetés
cpp/illesztőprogramok/illegális-mezei-hozzáférés /microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess/IllegalFieldAccess.ql C28128 figyelmeztetés
cpp/drivers/illegal-field-access-2 /microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldAccess2/IllegalFieldAccess2.ql C28175 figyelmeztetés
cpp/illesztők/illegális-mező-írás /microsoft/windows-drivers/<Version>/drivers/wdm/queries/IllegalFieldWrite/IllegalFieldWrite.ql C28176 figyelmeztetés
cpp/drivers/init-not-cleared /microsoft/windows-drivers/<Version>/drivers/wdm/queries/InitNotCleared/InitNotCleared.ql C28152 figyelmeztetés
cpp/drivers/kewaitlocal-requires-kernel-mode /microsoft/windows-drivers/<Version>/drivers/wdm/queries/KeWaitLocal/KeWaitLocal.ql C28135 figyelmeztetés
cpp/drivers/multiple-paged-code /microsoft/windows-drivers/<Version>/drivers/wdm/queries/MultiplePagedCode/MultiplePagedCode.ql C28171 figyelmeztetés
cpp/drivers/ob-reference-mode /microsoft/windows-drivers/<Version>/drivers/wdm/queries/ObReferenceMode/ObReferenceMode.ql C28126 figyelmeztetés
cpp/drivers/opaque-mdl-use /microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlUse/OpaqueMdlUse.ql Nincs társított CA ellenőrzés
cpp/drivers/opaque-mdl-write /microsoft/windows-drivers/<Version>/drivers/wdm/queries/OpaqueMdlWrite/OpaqueMdlWrite.ql C28145 figyelmeztetés
cpp/drivers/függő-státusz-hiba /microsoft/windows-drivers/<Version>/drivers/wdm/queries/PendingStatusError/PendingStatusError.ql C28143 figyelmeztetés
cpp/meghajtók/hibás-diszpécstábla-hozzárendelés /microsoft/windows-drivers/<Version>/drivers/wdm/queries/WrongDispatchTableAssignment/WrongDispatchTableAssignment.ql C28168 Figyelmeztetés, C28169 figyelmeztetés

Általános C++ lekérdezések a microsoft/windows-drivers csomagból

azonosító Elhelyezkedés Gyakori gyengeségek számbavétele / Kódelemzési figyelmeztetés
cpp/padding byte információ kiszivárogtatás /microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Boundary Violations/PaddingByteInformationDisclosure.ql Nincs adat.
cpp/badoverflowguard /microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/BadOverflowGuard.ql Nincs adat.
cpp/infiniteloop /microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Conversion/InfiniteLoop.ql Nincs adat.
cpp/használat után ingyenes /microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/Memory Management/UseAfterFree/UseAfterFree.ql Nincs adat.
cpp/uninitializedptrfield /microsoft/windows-drivers/<Version>/microsoft/Likely Bugs/UninitializedPtrField.ql Nincs adat.
cpp/weak-crypto/cng/hardcoded-iv /microsoft/windows-drivers/<Version>/microsoft/Security/Cryptography/HardcodedIVCNG.ql Nincs adat.

Általános C++ lekérdezések a microsoft/cpp-queries csomagból

azonosító Elhelyezkedés Gyakori gyengeségek számbavétele
cpp/eltolás-használat-a-tartomány-ellenőrzés-előtt /microsoft/cpp-queries/<Version>/Ajánlott eljárások/Valószínű hibák/OffsetUseBeforeRangeCheck.ql CWE-120, CWE-125
cpp/egész-szám-szorzás-hosszúvá-kasztolás /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-aritmetic /microsoft/cpp-queries/<Version>/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql CWE-119, CWE-843
cpp/helytelen nem operátorhasználat /microsoft/cpp-queries/<Version>/Valószínű hibák/Valószínű elírások/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/befejezetlen variádikus hívás /microsoft/cpp-queries/<Version>/Security/CWE/CWE-121/UnterminatedVarargsCall.ql CWE-121
cpp/feltételesen inicializálatlan változó /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/gyanús-mutató-skálázás /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álisan veszélyes függvény /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

Kötelezően futtatandó lekérdezések

A mustrun.qls csomag olyan lekérdezéseket tartalmaz, amelyeket a WHCP-minősítés teljesítéséhez futtatni kell . Előfordulhat, hogy ezeket a lekérdezéseket nem feltétlenül kell kijavítani a lehetséges hamis pozitív eredmények miatt, de az eredményeket felül kell vizsgálni, és minden valódi hibát kijavítani kell. Az ilyen ellenőrzések eredményei nélkül létrehozott DVL nem felel meg a Static Tools Logo tesztnek.

A Windows 11 26H1-es verziója esetén a mustrun.qls és az recommended.qls által közzétett lekérdezések azonosak.