mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
9.7 KiB
9.7 KiB
0.3.3
Minor Analysis Improvements
- Improved analysis of the Android class
AsyncTaskso that data can properly flow through its methods according to the life-cycle steps described here: https://developer.android.com/reference/android/os/AsyncTask#the-4-steps. - Added a data-flow model for the
setPropertymethod ofjava.util.Properties. Additional results may be found where relevant data is stored in and then retrieved from aPropertiesinstance.
0.3.2
New Features
- The QL predicate
Expr::getUnderlyingExprhas been added. It can be used to look through casts and not-null expressions and obtain the underlying expression to which they apply.
Minor Analysis Improvements
- The JUnit5 version of
AssertNotNullis now recognized, which removes related false positives in the nullness queries. - Added data flow models for
java.util.Scanner.
0.3.1
New Features
- Added an
ErrorTypeclass. An instance of this class will be used if an extractor is unable to extract a type, or if an up/downgrade script is unable to provide a type.
Minor Analysis Improvements
- Added data-flow models for
java.util.Properites. Additional results may be found where relevant data is stored in and then retrieved from aPropertiesinstance. - Added
Modifier.isInline(). - Removed Kotlin-specific database and QL structures for loops and
break/continuestatements. The Kotlin extractor was changed to reuse the Java structures for these constructs. - Added additional flow sources for uses of external storage on Android.
0.3.0
Deprecated APIs
- The
BarrierGuardclass has been deprecated. Such barriers and sanitizers can now instead be created using the newBarrierGuardparameterized module.
Minor Analysis Improvements
Added a flow step for String.valueOf calls on tainted android.text.Editable objects.
0.2.3
0.2.2
Deprecated APIs
- The QL class
FloatingPointLiteralhas been renamed toFloatLiteral.
Minor Analysis Improvements
- Fixed a sanitizer of the query
java/android/intent-redirection. Now, for an intent to be considered safe against intent redirection, both its package name and class name must be checked.
0.2.1
New Features
- A number of new classes and methods related to the upcoming Kotlin
support have been added. These are not yet stable, as Kotlin support
is still under development.
File::isSourceFileFile::isJavaSourceFileFile::isKotlinSourceFileMember::getKotlinTypeElement::isCompilerGeneratedExpr::getKotlinTypeLambdaExpr::isKotlinFunctionNCallable::getReturnKotlinTypeCallable::getParameterKotlinTypeMethod::isLocalMethod::getKotlinNameField::getKotlinTypeModifiable::isSealedKotlinModifiable::isInternalVariable::getKotlinTypeLocalVariableDecl::getKotlinTypeParameter::getKotlinTypeParameter::isExtensionParameterCompilationclassDiagnosticclassKtInitializerAssignExprclassValueEQExprclassValueNEExprclassValueOrReferenceEqualsExprclassValueOrReferenceNotEqualsExprclassReferenceEqualityTestclassCastingExprclassSafeCastExprclassImplicitCastExprclassImplicitNotNullExprclassImplicitCoercionToUnitExprclassUnsafeCoerceExprclassPropertyRefExprclassNotInstanceOfExprclassExtensionReceiverAccessclassWhenExprclassWhenBranchclassClassExprclassStmtExprclassStringTemplateExprclassNotNullExprclassTypeNullPointerExceptionclassKtCommentclassKtCommentSectionclassKotlinTypeclassKotlinNullableTypeclassKotlinNotnullTypeclassKotlinTypeAliasclassPropertyclassDelegatedPropertyclassExtensionMethodclassKtInitializerNodeclassKtLoopStmtclassKtBreakContinueStmtclassKtBreakStmtclassKtContinueStmtclassClassObjectclassCompanionObjectclassLiveLiteralclassLiveLiteralMethodclassCastConversionContextrenamed toCastingConversionContext
- The QL class
ValueDiscardingExprhas been added, representing expressions for which the value of the expression as a whole is discarded.
Minor Analysis Improvements
- Added models for the libraries OkHttp and Retrofit.
- Add taint models for the following
Filemethods:File::getAbsoluteFileFile::getCanonicalFileFile::getAbsolutePathFile::getCanonicalPath
- Added a flow step for
toStringcalls on taintedandroid.text.Editableobjects. - Added a data flow step for tainted Android intents that are sent to other activities and accessed there via
getIntent(). - Added modeling of MyBatis (
org.apache.ibatis) Providers, resulting in additional sinks for the queriesjava/ognl-injection,java/sql-injection,java/sql-injection-localandjava/concatenated-sql-query.
0.2.0
Breaking Changes
- The signature of
allowImplicitReadonDataFlow::ConfigurationandTaintTracking::Configurationhas changed fromallowImplicitRead(DataFlow::Node node, DataFlow::Content c)toallowImplicitRead(DataFlow::Node node, DataFlow::ContentSet c).
Minor Analysis Improvements
- Improved the data flow support for the Android class
SharedPreferences$Editor. Specifically, the fluent logic of some of its methods is now taken into account when calculating data flow.- Added flow sources and steps for JMS versions 1 and 2.
- Added flow sources and steps for RabbitMQ.
- Added flow steps for
java.io.DataInputandjava.io.ObjectInputimplementations.
- Added data-flow models for the Spring Framework component
spring-beans.
Bug Fixes
- The QL class
JumpStmthas been made the superclass ofBreakStmt,ContinueStmtandYieldStmt. This allows directly using its inherited predicates without having to explicitly cast toJumpStmtfirst.
0.1.0
Breaking Changes
- The recently added flow-state versions of
isBarrierIn,isBarrierOut,isSanitizerIn, andisSanitizerOutin the data flow and taint tracking libraries have been removed. - The
getUrlpredicate ofDeclaredRepositoryinMavenPom.qllhas been renamed togetRepositoryUrl.
New Features
- There are now QL classes ErrorExpr and ErrorStmt. These may be generated by upgrade or downgrade scripts when databases cannot be fully converted.
Minor Analysis Improvements
- Added guard preconditon support for assertion methods for popular testing libraries (e.g. Junit 4, Junit 5, TestNG).
0.0.13
0.0.12
Breaking Changes
- The flow state variants of
isBarrierandisAdditionalFlowStepare no longer exposed in the taint tracking library. TheisSanitizerandisAdditionalTaintSteppredicates should be used instead.
Deprecated APIs
- Many classes/predicates/modules that had upper-case acronyms have been renamed to follow our style-guide. The old name still exists as a deprecated alias.
New Features
- The data flow and taint tracking libraries have been extended with versions of
isBarrierIn,isBarrierOut, andisBarrierGuard, respectivelyisSanitizerIn,isSanitizerOut, andisSanitizerGuard, that support flow states.
Minor Analysis Improvements
- Added new guards
IsWindowsGuard,IsSpecificWindowsVariant,IsUnixGuard, andIsSpecificUnixVariantto detect OS specific guards. - Added a new predicate
getSystemPropertythat gets all expressions that retrieve system properties from a variety of sources (eg. alternative JDK API's, Google Guava, Apache Commons, Apache IO, etc.). - Added support for detection of SSRF via JDBC database URLs, including connections made using the standard library (
java.sql), Hikari Connection Pool, JDBI and Spring JDBC. - Re-removed support for
CharacterLiteralfromCompileTimeConstantExpr.getStringValue()to restore the convention that that predicate only applies toString-typed constants. - All deprecated predicates/classes/modules that have been deprecated for over a year have been deleted.
0.0.11
New Features
- Added
hasDescendant(RefType anc, Type sub) - Added
RefType.getADescendant() - Added
RefType.getAStrictAncestor()
Minor Analysis Improvements
- Add support for
CharacterLiteralinCompileTimeConstantExpr.getStringValue()
0.0.10
New Features
- Added predicates
ClassOrInterface.getAPermittedSubtypeandisSealedexposing information about sealed classes.
0.0.9
0.0.8
Deprecated APIs
- The
codeql/java-upgradesCodeQL pack has been removed. All upgrades scripts have been merged into thecodeql/java-allCodeQL pack.
0.0.7
0.0.6
Major Analysis Improvements
- Data flow now propagates taint from remote source
Parametertypes to read steps of their fields (e.g.tainted.publicFieldortainted.getField()). This also applies to their subtypes and the types of their fields, recursively.
0.0.5
Bug Fixes
CharacterLiteral'sgetCodePointValuepredicate now returns the correct value for UTF-16 surrogates.- The
RangeAnalysismodule now properly handles comparisons with Unicode surrogate character literals.
0.0.4
Bug Fixes
CharacterLiteral'sgetCodePointValuepredicate now returns the correct value for UTF-16 surrogates.- The
RangeAnalysismodule and thejava/constant-comparisonqueries no longer raise false alerts regarding comparisons with Unicode surrogate character literals. - The predicate
Method.overrides(Method)was accidentally transitive. This has been fixed. This fix also affectsMethod.overridesOrInstantiates(Method)andMethod.getASourceOverriddenMethod().