Skip to content

fix(deps): batch security update — 2 vulnerabilities - #42173

Open
appsmith-smithes[bot] wants to merge 3 commits into
releasefrom
fix/dependabot-batch-20260829-023747
Open

fix(deps): batch security update — 2 vulnerabilities#42173
appsmith-smithes[bot] wants to merge 3 commits into
releasefrom
fix/dependabot-batch-20260829-023747

Conversation

@appsmith-smithes

@appsmith-smithes appsmith-smithes Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Batch security update via resolutions/version bumps.

Resolved alerts

No code changes — version bumps only.

/ok-to-test tags="@tag.All"

Tip

🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/33268309168
Commit: e83bbd0
Cypress dashboard.
Tags: @tag.All
Spec:


Sat, 29 Aug 2026 19:36:17 UTC

@appsmith-smithes appsmith-smithes Bot added the ok-to-test Required label for CI label Aug 29, 2026
@github-actions github-actions Bot added Bug Something isn't working Frontend This label marks the issue or pull request to reference client code High This issue blocks a user from building or impacts a lot of users Regressed Scenarios that were working before but have now regressed Table Widget Verified When issue is retested post its fixed Widgets Product This label groups issues related to widgets labels Aug 29, 2026
@appsmith-smithes appsmith-smithes Bot added the hacktron-exclude Skip Hacktron security scan for this PR label Aug 29, 2026
@github-actions github-actions Bot removed the Bug Something isn't working label Aug 29, 2026
@github-actions

Copy link
Copy Markdown

Failed server tests

  • com.external.plugins.ElasticSearchPluginTest#
  • com.external.plugins.DynamoPluginTest#
  • com.external.plugins.RestrictedHostJedisSocketFactoryTest#
  • com.external.plugins.RedisPluginTest#
  • com.external.utils.RedisURIUtilsTest#
  • com.external.plugins.MssqlGetDBSchemaTest#
  • com.external.plugins.MssqlPluginTest#
  • com.external.plugins.MssqlDatabaseNameValidationTest#
  • com.external.plugins.FirestorePluginTest#
  • com.external.plugins.RedshiftPluginTest#
  • com.external.plugins.AmazonS3PluginTest#
  • com.external.utils.AmazonS3ErrorUtilsTest#
  • com.external.config.RowsBulkAppendMethodTest#
  • com.external.config.FileInfoMethodTest#
  • com.external.config.FileListMethodTest#
  • com.external.config.MethodConfigTest#
  • com.external.config.GetDatasourceMetadataMethodTest#
  • com.external.config.RowsGetMethodTest#
  • com.external.config.SheetsUtilTest#
  • com.external.config.GetStructureMethodTest#
  • com.external.config.RowsUpdateMethodTest#
  • com.external.config.RowsAppendMethodTest#
  • com.external.config.RowsBulkUpdateMethodTest#
  • com.external.plugins.GraphQLPluginTest#
  • com.external.plugins.SnowflakePluginTest#
  • com.external.plugins.SmtpPluginTest#
  • com.external.plugins.EmbeddingCommandTest#
  • com.external.plugins.VisionCommandTest#
  • com.external.plugins.OpenAIPluginTest#
  • com.external.plugins.ChatCommandTest#
  • com.external.plugins.CommandUtilsTest#
  • com.external.plugins.AnthropicPluginTest#
  • com.external.plugins.GenerateContentCommandTest#
  • com.external.plugins.GoogleAiPluginTest#
  • com.external.plugins.services.FieldValidationHelperTest#
  • com.external.plugins.services.HeadersUtilTest#
  • com.external.plugins.services.AiFeatureServiceFactoryTest#
  • com.external.plugins.services.features.TextEntityExtractionServiceImplTest#
  • com.external.plugins.services.features.ImageEntityExtractionServiceImplTest#
  • com.external.plugins.services.features.TextClassificationServiceImplTest#
  • com.external.plugins.services.features.TextSummarizationServiceImplTest#
  • com.external.plugins.services.features.TextGenerationServiceImplTest#
  • com.external.plugins.services.features.ImageClassificationServiceImplTest#
  • com.external.plugins.services.features.ImageCaptioningServiceImplTest#
  • com.external.plugins.services.FileUtilTest#
  • com.external.plugins.AwsLambdaPluginTest#
  • com.external.plugins.DatabricksPluginTest#
  • com.appsmith.git.service.GitRepoSanityCheckTest#
  • com.appsmith.git.service.BashServiceTest#
  • com.appsmith.git.handler.ce.FSGitHandlerSymlinkCloneTest#
  • com.appsmith.git.helpers.DSLTransformerHelperTest#
  • com.appsmith.git.helpers.FileUtilsImplTest#
  • com.appsmith.git.converters.GsonDoubleToLongConverterTest#
  • GsonUnorderedToOrderedSerializationTest#
  • com.external.plugins.MySqlPluginTest#datasourceCreate_doesNotRunOnTheSubscribingThread
  • com.external.plugins.MySqlPluginTest#testAliasColumnNames
  • com.external.plugins.MySqlPluginTest#testConnectMySQLContainer
  • com.external.plugins.MySqlPluginTest#testConnectMySQLContainerWithInvalidTimezone
  • com.external.plugins.MySqlPluginTest#testDatasourceDestroy
  • com.external.plugins.MySqlPluginTest#testDatasourceWithNullPassword
  • com.external.plugins.MySqlPluginTest#testDatasourceWithRootUserAndNullPassword
  • com.external.plugins.MySqlPluginTest#testDuplicateColumnNames
  • com.external.plugins.MySqlPluginTest#testExecute
  • com.external.plugins.MySqlPluginTest#testExecuteCommon_queryWithComments_callValidationCallsAfterRemovingComments
  • com.external.plugins.MySqlPluginTest#testExecuteDataTypes
  • com.external.plugins.MySqlPluginTest#testExecuteDataTypesExtensive
  • com.external.plugins.MySqlPluginTest#testExecuteDescTableCmd
  • com.external.plugins.MySqlPluginTest#testExecuteDescribeTableCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithFormattingWithSelectCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithFormattingWithShowCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithLongRunningQuery
  • com.external.plugins.MySqlPluginTest#testExecuteWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testLongValueWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testMySqlNoPasswordExceptionMessage
  • com.external.plugins.MySqlPluginTest#testNullAsStringWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testNullObjectWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testNumericValuesHavingLeadingZeroWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testPreparedStatementErrorWithIsKeyword
  • com.external.plugins.MySqlPluginTest#testPreparedStatementWithBooleanType
  • com.external.plugins.MySqlPluginTest#testPreparedStatementWithRealTypes
  • com.external.plugins.MySqlPluginTest#testSslDefault
  • com.external.plugins.MySqlPluginTest#testSslDisabled
  • com.external.plugins.MySqlPluginTest#testSslRequired
  • com.external.plugins.MySqlPluginTest#testStaleConnectionCheck
  • com.external.plugins.MySqlPluginTest#testStructure
  • com.external.plugins.MySqlPluginTest#testTestDatasource

1 similar comment
@github-actions

Copy link
Copy Markdown

Failed server tests

  • com.external.plugins.ElasticSearchPluginTest#
  • com.external.plugins.DynamoPluginTest#
  • com.external.plugins.RestrictedHostJedisSocketFactoryTest#
  • com.external.plugins.RedisPluginTest#
  • com.external.utils.RedisURIUtilsTest#
  • com.external.plugins.MssqlGetDBSchemaTest#
  • com.external.plugins.MssqlPluginTest#
  • com.external.plugins.MssqlDatabaseNameValidationTest#
  • com.external.plugins.FirestorePluginTest#
  • com.external.plugins.RedshiftPluginTest#
  • com.external.plugins.AmazonS3PluginTest#
  • com.external.utils.AmazonS3ErrorUtilsTest#
  • com.external.config.RowsBulkAppendMethodTest#
  • com.external.config.FileInfoMethodTest#
  • com.external.config.FileListMethodTest#
  • com.external.config.MethodConfigTest#
  • com.external.config.GetDatasourceMetadataMethodTest#
  • com.external.config.RowsGetMethodTest#
  • com.external.config.SheetsUtilTest#
  • com.external.config.GetStructureMethodTest#
  • com.external.config.RowsUpdateMethodTest#
  • com.external.config.RowsAppendMethodTest#
  • com.external.config.RowsBulkUpdateMethodTest#
  • com.external.plugins.GraphQLPluginTest#
  • com.external.plugins.SnowflakePluginTest#
  • com.external.plugins.SmtpPluginTest#
  • com.external.plugins.EmbeddingCommandTest#
  • com.external.plugins.VisionCommandTest#
  • com.external.plugins.OpenAIPluginTest#
  • com.external.plugins.ChatCommandTest#
  • com.external.plugins.CommandUtilsTest#
  • com.external.plugins.AnthropicPluginTest#
  • com.external.plugins.GenerateContentCommandTest#
  • com.external.plugins.GoogleAiPluginTest#
  • com.external.plugins.services.FieldValidationHelperTest#
  • com.external.plugins.services.HeadersUtilTest#
  • com.external.plugins.services.AiFeatureServiceFactoryTest#
  • com.external.plugins.services.features.TextEntityExtractionServiceImplTest#
  • com.external.plugins.services.features.ImageEntityExtractionServiceImplTest#
  • com.external.plugins.services.features.TextClassificationServiceImplTest#
  • com.external.plugins.services.features.TextSummarizationServiceImplTest#
  • com.external.plugins.services.features.TextGenerationServiceImplTest#
  • com.external.plugins.services.features.ImageClassificationServiceImplTest#
  • com.external.plugins.services.features.ImageCaptioningServiceImplTest#
  • com.external.plugins.services.FileUtilTest#
  • com.external.plugins.AwsLambdaPluginTest#
  • com.external.plugins.DatabricksPluginTest#
  • com.appsmith.git.service.GitRepoSanityCheckTest#
  • com.appsmith.git.service.BashServiceTest#
  • com.appsmith.git.handler.ce.FSGitHandlerSymlinkCloneTest#
  • com.appsmith.git.helpers.DSLTransformerHelperTest#
  • com.appsmith.git.helpers.FileUtilsImplTest#
  • com.appsmith.git.converters.GsonDoubleToLongConverterTest#
  • GsonUnorderedToOrderedSerializationTest#
  • com.external.plugins.MySqlPluginTest#datasourceCreate_doesNotRunOnTheSubscribingThread
  • com.external.plugins.MySqlPluginTest#testAliasColumnNames
  • com.external.plugins.MySqlPluginTest#testConnectMySQLContainer
  • com.external.plugins.MySqlPluginTest#testConnectMySQLContainerWithInvalidTimezone
  • com.external.plugins.MySqlPluginTest#testDatasourceDestroy
  • com.external.plugins.MySqlPluginTest#testDatasourceWithNullPassword
  • com.external.plugins.MySqlPluginTest#testDatasourceWithRootUserAndNullPassword
  • com.external.plugins.MySqlPluginTest#testDuplicateColumnNames
  • com.external.plugins.MySqlPluginTest#testExecute
  • com.external.plugins.MySqlPluginTest#testExecuteCommon_queryWithComments_callValidationCallsAfterRemovingComments
  • com.external.plugins.MySqlPluginTest#testExecuteDataTypes
  • com.external.plugins.MySqlPluginTest#testExecuteDataTypesExtensive
  • com.external.plugins.MySqlPluginTest#testExecuteDescTableCmd
  • com.external.plugins.MySqlPluginTest#testExecuteDescribeTableCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithFormattingWithSelectCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithFormattingWithShowCmd
  • com.external.plugins.MySqlPluginTest#testExecuteWithLongRunningQuery
  • com.external.plugins.MySqlPluginTest#testExecuteWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testLongValueWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testMySqlNoPasswordExceptionMessage
  • com.external.plugins.MySqlPluginTest#testNullAsStringWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testNullObjectWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testNumericValuesHavingLeadingZeroWithPreparedStatement
  • com.external.plugins.MySqlPluginTest#testPreparedStatementErrorWithIsKeyword
  • com.external.plugins.MySqlPluginTest#testPreparedStatementWithBooleanType
  • com.external.plugins.MySqlPluginTest#testPreparedStatementWithRealTypes
  • com.external.plugins.MySqlPluginTest#testSslDefault
  • com.external.plugins.MySqlPluginTest#testSslDisabled
  • com.external.plugins.MySqlPluginTest#testSslRequired
  • com.external.plugins.MySqlPluginTest#testStaleConnectionCheck
  • com.external.plugins.MySqlPluginTest#testStructure
  • com.external.plugins.MySqlPluginTest#testTestDatasource

@github-actions github-actions Bot added the Bug Something isn't working label Aug 29, 2026
@appsmith-smithes

Copy link
Copy Markdown
Contributor Author

Fixed in c8c7888.

Root cause: r2dbc-mariadb 1.4.1 now interprets the R2DBC SPI PROTOCOL option as MariaDB HaMode. Our generated URL was r2dbc:pool:mariadb://..., which parses as DRIVER=pool, PROTOCOL=mariadb; the upgraded driver therefore rejected mariadb as an invalid HA mode.

Fix: Generate r2dbc:mariadb://... instead. The plugin already constructs its ConnectionPool explicitly, so the pool URL wrapper was redundant. Added a regression test asserting DRIVER=mariadb, no PROTOCOL, and successful 1.4.1 configuration construction.

Local verification: regression test failed before the fix and passed after it; all 34 non-container MySQL plugin tests passed; Spotless passed; the plugin package build passed. Full container/Cypress verification is now running in CI.

@appsmith-smithes

Copy link
Copy Markdown
Contributor Author

Follow-up fix in e83bbd0. The first fresh Cypress pass confirmed the HaMode=mariadb error was gone, but exposed a second 1.4.1 compatibility issue: reactor-netty-core became a new compile dependency and was packaged inside the PF4J plugin alongside duplicate Netty base classes. That caused a parent/plugin classloader cast failure (EpollEventLoopGroup vs EventLoopGroup).

The follow-up excludes the server-provided Reactor Netty and Netty base classes from the plugin, while retaining aligned 4.1.136 macOS DNS native artifacts. A clean package inspection confirms the plugin now contains 0 reactor/netty entries and 0 Netty channel/buffer/handler base entries; 34 plugin tests, package, and Spotless still pass. Fresh full CI is starting now.

@appsmith-smithes

Copy link
Copy Markdown
Contributor Author

✅ Final verification complete on e83bbd0.

  • Quality checks: passed (server unit tests, Spotless, qc-result)
  • PR Automation test suite: passed
  • All 60 Cypress shards passed
  • ci-test-result: passed
  • Semgrep: passed

Run: https://github.com/appsmithorg/appsmith/actions/runs/33268309168

@appsmith-smithes
appsmith-smithes Bot marked this pull request as ready for review August 31, 2026 15:20
@appsmith-smithes
appsmith-smithes Bot requested a review from a team as a code owner August 31, 2026 15:20
@appsmith-smithes
appsmith-smithes Bot requested a review from subrata71 August 31, 2026 15:20
@wyattwalter wyattwalter removed the hacktron-exclude Skip Hacktron security scan for this PR label Aug 31, 2026

@wyattwalter wyattwalter left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the behavioral side of this bump (it is not quite version-bumps-only — the URL scheme change alters runtime connection-factory construction). Verified clean, so nobody needs to re-check these:

  • Both alerts are fixed at exactly 1.4.1 (CVE-2026-55859, CVE-2026-55860), and no other plugin depends on r2dbc-mariadb.
  • Connection pooling is unaffected: the pool: prefix never engaged r2dbc-pool (the code builds MariadbConnectionFactory directly and wraps it in ConnectionPool in getNewConnectionPool), so dropping it changes nothing about pooling.
  • SSL modes survive the bump: SslMode.from accepts required as a TRUST alias identically in 1.1.4 and 1.4.1 (checked both jars).
  • The new netty/reactor-netty exclusions are covered by green server-unit-tests (real testcontainers connections) and the full Cypress run.

One real gap (inline comment on MySqlDatasourceUtils.java): the fix covers only the endpoints branch; stored URL-based datasources carrying the old r2dbc:pool:mariadb:// format now fail under 1.4.1.

Two smaller things while this pom is open:

  • The r2dbc-pool version comment warns about incompatibility with r2dbc-mysql 0.8.2.RELEASE, which is no longer a dependency of this plugin. It will misdirect the next person doing a CVE bump on r2dbc-pool — please update or delete it.
  • The three <version>${netty.version}</version> tags are redundant with the inherited Spring Boot BOM pin (arangoDBPlugin declares its netty deps without versions). Optional.

Description nits: Resolves #730 / #731 uses Dependabot alert numbers, which GitHub links to two unrelated 2020 issues in this repo — better to reference the alert URLs. And the "No code changes — version bumps only" line is now stale given the MySqlDatasourceUtils change and new test.

urlBuilder.append(datasourceConfiguration.getUrl());
} else {
urlBuilder.append("r2dbc:pool:mariadb://");
urlBuilder.append("r2dbc:mariadb://");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fixes the endpoints branch, but the getUrl() branch two lines up still passes stored URLs through verbatim into the same ConnectionFactoryOptions.parse -> MariadbConnectionConfiguration.fromOptions path.

Why that now breaks: 1.4.1's fromOptions reads ConnectionFactoryOptions.PROTOCOL and feeds it to Builder.haMode(...) (1.1.4 ignored PROTOCOL entirely — verified in both jars), and HaMode.from("mariadb") throws IllegalArgumentException("Wrong argument value 'mariadb' for HaMode"). So a datasource stored with the previously-valid r2dbc:pool:mariadb://host:3306/db URL — API-created or git-imported; the UI form has no URL field — parses to DRIVER=pool, PROTOCOL=mariadb and fails on every datasourceCreate after this upgrade.

Suggest normalizing a leading pool: segment (or forcing the mariadb driver option) at the common parse point below, so both branches are covered.

@Test
public void testStandardConnectionOptionsAreCompatibleWithMariaDbDriver() {
DatasourceConfiguration dsConfig = getDatasourceConfigurationWithStandardConnectionMethod();
ConnectionFactoryOptions options =

@wyattwalter wyattwalter Aug 31, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked that this test fails without the URL change (DRIVER comes back as pool), so it does cover the fix. Two gaps worth closing while here:

  1. Multi-endpoint: getBuilder comma-joins hosts into r2dbc:mariadb://h1:3306,h2:3306/db, and with PROTOCOL now absent it is unverified that 1.4.1 parses that host list the way 1.1.4 did. A two-endpoint variant of this test would pin it down.
  2. The URL branch (datasourceConfiguration.getUrl()) has no coverage at all — see the comment on MySqlDatasourceUtils.java; a test with url set and endpoints empty would document the intended behavior under 1.4.1.

Also consider driving getNewConnectionPool(...) here instead of hand-rolling fromOptions, so addSslOptionsToBuilder and allowPublicKeyRetrieval(true) are exercised against future driver bumps too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Something isn't working Frontend This label marks the issue or pull request to reference client code High This issue blocks a user from building or impacts a lot of users ok-to-test Required label for CI Regressed Scenarios that were working before but have now regressed Table Widget Verified When issue is retested post its fixed Widgets Product This label groups issues related to widgets

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] onPageChange is not triggering for client side pagination [BUG] Input widget with type number is allowing default val as text.

1 participant