This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.2
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.2 by this push:
     new d10599dc0c6 branch-4.2: [fix](fe) Update vulnerable dependencies 
(#69364)
d10599dc0c6 is described below

commit d10599dc0c61fd88ac6e88b03288cd41fde9f1c9
Author: Calvin Kirs <[email protected]>
AuthorDate: Fri Oct 23 09:59:49 2026 +0800

    branch-4.2: [fix](fe) Update vulnerable dependencies (#69364)
    
    Backport #69334 to branch-4.2: upgrade vulnerable FE dependencies and
    remove unused transitive libraries. The unsuppressed OWASP scan matches
    the 4.1 final scan (54 flagged dependencies, 118 unique CVEs).
    
    Validation: FE package build and 21 targeted HTTP, COS, Hive UDF, and
    Avro tests passed.
    
    Release note: None.
---
 .../org/apache/doris/avro/HDFSFileReaderTest.java  | 72 ++++++++++++++++++++
 fe/fe-core/pom.xml                                 |  3 +-
 .../trees/expressions/literal/JsonLiteralTest.java |  6 +-
 fe/hive-udf/pom.xml                                | 66 ++++++++++++++++++
 fe/pom.xml                                         | 79 ++++++++++++++++++++--
 5 files changed, 215 insertions(+), 11 deletions(-)

diff --git 
a/fe/be-java-extensions/avro-scanner/src/test/java/org/apache/doris/avro/HDFSFileReaderTest.java
 
b/fe/be-java-extensions/avro-scanner/src/test/java/org/apache/doris/avro/HDFSFileReaderTest.java
new file mode 100644
index 00000000000..cba75fa7fb2
--- /dev/null
+++ 
b/fe/be-java-extensions/avro-scanner/src/test/java/org/apache/doris/avro/HDFSFileReaderTest.java
@@ -0,0 +1,72 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.doris.avro;
+
+import org.apache.avro.Schema;
+import org.apache.avro.SchemaBuilder;
+import org.apache.avro.file.DataFileWriter;
+import org.apache.avro.generic.GenericData;
+import org.apache.avro.generic.GenericDatumWriter;
+import org.apache.avro.generic.GenericRecord;
+import org.apache.avro.mapred.AvroWrapper;
+import org.apache.avro.mapred.Pair;
+import org.apache.hadoop.io.NullWritable;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.util.Collections;
+
+public class HDFSFileReaderTest {
+    @Rule
+    public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+    @Test
+    public void testReadProjectedFile() throws Exception {
+        Schema schema = SchemaBuilder.record("row").fields()
+                .requiredInt("id").requiredString("name").endRecord();
+        File file = temporaryFolder.newFile("records.avro");
+        try (DataFileWriter<GenericRecord> writer = new DataFileWriter<>(new 
GenericDatumWriter<>(schema))) {
+            writer.create(schema, file);
+            GenericRecord record = new GenericData.Record(schema);
+            record.put("id", 7);
+            record.put("name", "seven");
+            writer.append(record);
+        }
+
+        AvroFileContext context = new AvroFileContext();
+        context.setRequiredFields(Collections.singleton("id"));
+        context.setSplitStartOffset(0L);
+        context.setSplitSize(file.length());
+        HDFSFileReader reader = new HDFSFileReader(file.toURI().toString());
+        reader.open(context, false);
+        try {
+            AvroWrapper<Pair<Integer, Long>> input = new AvroWrapper<>();
+            Assert.assertEquals(schema, reader.getSchema());
+            Assert.assertTrue(reader.hasNext(input, NullWritable.get()));
+            GenericRecord record = (GenericRecord) reader.getNext();
+            Assert.assertEquals(7, record.get("id"));
+            Assert.assertNull(record.getSchema().getField("name"));
+            Assert.assertFalse(reader.hasNext(input, NullWritable.get()));
+        } finally {
+            reader.close();
+        }
+    }
+}
diff --git a/fe/fe-core/pom.xml b/fe/fe-core/pom.xml
index 1b3c79d796b..c3e2d018cfd 100644
--- a/fe/fe-core/pom.xml
+++ b/fe/fe-core/pom.xml
@@ -867,7 +867,8 @@ under the License.
         <dependency>
             <groupId>com.taobao.arthas</groupId>
             <artifactId>arthas-packaging</artifactId>
-            <version>4.0.5</version>
+            <!-- Arthas embeds its own Netty; the FE BOM cannot update that 
copy. -->
+            <version>4.3.5</version>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/JsonLiteralTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/JsonLiteralTest.java
index 6e16ea9805e..d74630974c7 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/JsonLiteralTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/JsonLiteralTest.java
@@ -103,17 +103,17 @@ public class JsonLiteralTest {
 
     @Test
     public void testLoneHighSurrogateInObjectKey() {
-        // lone surrogate in object field name must also be rejected
+        // Jackson may reject invalid field names before Doris validates the 
parsed tree.
         AnalysisException ex = Assertions.assertThrows(AnalysisException.class,
                 () -> new JsonLiteral("{\"\\uD800\":\"value\"}"));
-        Assertions.assertTrue(ex.getMessage().contains("lone high surrogate"));
+        Assertions.assertTrue(ex.getMessage().contains("surrogate"));
     }
 
     @Test
     public void testLoneLowSurrogateInObjectKey() {
         AnalysisException ex = Assertions.assertThrows(AnalysisException.class,
                 () -> new JsonLiteral("{\"\\uDC00\":\"value\"}"));
-        Assertions.assertTrue(ex.getMessage().contains("lone low surrogate"));
+        Assertions.assertTrue(ex.getMessage().contains("surrogate"));
     }
 
     @Test
diff --git a/fe/hive-udf/pom.xml b/fe/hive-udf/pom.xml
index 83bb1f7c42f..aae9666ed43 100644
--- a/fe/hive-udf/pom.xml
+++ b/fe/hive-udf/pom.xml
@@ -52,8 +52,40 @@ under the License.
             <groupId>org.apache.hive</groupId>
             <artifactId>hive-exec</artifactId>
             <version>${hive.version}</version>
+            <!-- The core artifact contains the UDF API without Hive's bundled 
old libraries. -->
+            <classifier>core</classifier>
             <scope>provided</scope>
             <exclusions>
+                <!-- UDFs do not use LLAP, YARN APIs, or ZooKeeper. -->
+                <exclusion>
+                    <groupId>org.apache.hive</groupId>
+                    <artifactId>hive-llap-tez</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-yarn-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-yarn-common</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-yarn-registry</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.zookeeper</groupId>
+                    <artifactId>zookeeper</artifactId>
+                </exclusion>
+                <!-- UDFs do not use YARN's server or the metastore's legacy 
FB303 service. -->
+                <exclusion>
+                    <groupId>org.apache.hadoop</groupId>
+                    <artifactId>hadoop-yarn-server-resourcemanager</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.thrift</groupId>
+                    <artifactId>libfb303</artifactId>
+                </exclusion>
                 <exclusion>
                     <groupId>org.apache.calcite</groupId>
                     <artifactId>calcite-core</artifactId>
@@ -62,12 +94,46 @@ under the License.
                     <groupId>org.apache.calcite</groupId>
                     <artifactId>calcite-druid</artifactId>
                 </exclusion>
+                <!-- UDFs do not use Hive's JDBC driver or its bundled legacy 
dependencies. -->
+                <exclusion>
+                    <groupId>org.apache.calcite.avatica</groupId>
+                    <artifactId>avatica</artifactId>
+                </exclusion>
                 <exclusion>
                     <groupId>log4j</groupId>
                     <artifactId>log4j</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-serde</artifactId>
+            <version>${hive.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.thrift</groupId>
+                    <artifactId>libfb303</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-common</artifactId>
+            <version>${hive.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <!-- Generic UDFs need Hive types, not Hive's embedded web 
server or console. -->
+                <exclusion>
+                    <groupId>org.eclipse.jetty</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>jline</groupId>
+                    <artifactId>jline</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>fe-common</artifactId>
diff --git a/fe/pom.xml b/fe/pom.xml
index 4f0a24ee4ca..1f7c38c4028 100644
--- a/fe/pom.xml
+++ b/fe/pom.xml
@@ -234,14 +234,15 @@ under the License.
         
<doris.hive.catalog.shade.version>3.1.3</doris.hive.catalog.shade.version>
         <!-- iceberg 1.9.1 depends avro on 1.12 -->
         <avro.version>1.12.1</avro.version>
-        <parquet.version>1.18.0</parquet.version>
+        <!-- Disable file-controlled KMS URLs by default (CVE-2026-73334). -->
+        <parquet.version>1.18.1</parquet.version>
         <spark.version>3.4.3</spark.version>
         <hudi.version>1.0.2</hudi.version>
         <obs.dependency.scope>compile</obs.dependency.scope>
         <cos.dependency.scope>compile</cos.dependency.scope>
         <qcloud-java-sdk.version>2.0.1</qcloud-java-sdk.version>
         <tencentcos.version>8.2.7</tencentcos.version>
-        <cos-api.version>5.6.211</cos-api.version>
+        <cos-api.version>5.6.269</cos-api.version>
         
<tencentcloud-sdk-java-sts.version>3.1.678</tencentcloud-sdk-java-sts.version>
         <huaweicloud-sdk-iam.version>3.1.20</huaweicloud-sdk-iam.version>
         <esdk-obs.version>3.21.11</esdk-obs.version>
@@ -271,9 +272,8 @@ under the License.
         <commons-validator.version>1.9.0</commons-validator.version>
         <gson.version>2.10.1</gson.version>
         <guava.version>33.2.1-jre</guava.version>
-        <!-- Jackson 2.16.0 is affected by multiple 2026 parser and 
polymorphic-deserialization
-             vulnerabilities, including CVE-2026-54512. Version 2.21.5 
contains the complete fixes. -->
-        <jackson.version>2.21.5</jackson.version>
+        <!-- Keep Jackson 2 aligned on the LTS maintenance release fixing 
CVE-2026-110879. -->
+        <jackson.version>2.21.8</jackson.version>
         <javassist.version>3.18.2-GA</javassist.version>
         <javax.servlet-api.version>3.1.0</javax.servlet-api.version>
         <!-- Spring Framework 7 and Jetty EE11 require Jakarta Servlet 6.1. -->
@@ -294,7 +294,7 @@ under the License.
         <metrics-core.version>4.0.2</metrics-core.version>
         <resilience4j.version>2.4.0</resilience4j.version>
         <!-- Keep Netty compatible with Arrow Flight SQL 19 and other 
transitive Netty users. -->
-        <netty-all.version>4.2.17.Final</netty-all.version>
+        <netty-all.version>4.2.18.Final</netty-all.version>
         <!-- OpenTelemetry versions before 1.62.0 allow unbounded allocation 
while parsing W3C
              baggage (CVE-2026-45292); align the complete OpenTelemetry graph 
on the fixed BOM. -->
         <opentelemetry.version>1.62.0</opentelemetry.version>
@@ -324,6 +324,7 @@ under the License.
         <jetty-servlet.version>11.0.26</jetty-servlet.version>
         <jetty-websocket.version>9.4.58.v20250814</jetty-websocket.version>
         <okhttp.version>5.3.2</okhttp.version>
+        <okio.version>3.16.4</okio.version>
         <snakeyaml.version>2.6</snakeyaml.version>
         <validation-api.version>2.0.1.Final</validation-api.version>
         <zjsonpatch.version>0.2.3</zjsonpatch.version>
@@ -411,7 +412,10 @@ under the License.
         <lz4-java-relocation.version>1.8.1</lz4-java-relocation.version>
         <lz4-java.version>1.11.1</lz4-java.version>
         <immutables.version>2.9.3</immutables.version> 
-        <ivy.version>2.5.2</ivy.version>
+        <!-- Fix PackagerResolver path traversal (CVE-2026-26032). -->
+        <ivy.version>2.6.0</ivy.version>
+        <ant.version>1.10.18</ant.version>
+        <groovy-all.version>2.4.21</groovy-all.version>
         <icu4j.version>78.1</icu4j.version>
         <ini4j.version>0.5.4</ini4j.version>
         <!--todo waiting release-->
@@ -494,6 +498,14 @@ under the License.
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+            <!-- Align legacy cloud clients with the Okio version used by 
OkHttp 5. -->
+            <dependency>
+                <groupId>com.squareup.okio</groupId>
+                <artifactId>okio-bom</artifactId>
+                <version>${okio.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <dependency>
                 <groupId>io.grpc</groupId>
                 <artifactId>grpc-bom</artifactId>
@@ -548,6 +560,22 @@ under the License.
                 <artifactId>ivy</artifactId>
                 <version>${ivy.version}</version>
             </dependency>
+            <!-- Hive's provided dependencies also need the Ant and Groovy 
security fixes. -->
+            <dependency>
+                <groupId>org.apache.ant</groupId>
+                <artifactId>ant</artifactId>
+                <version>${ant.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.ant</groupId>
+                <artifactId>ant-launcher</artifactId>
+                <version>${ant.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.codehaus.groovy</groupId>
+                <artifactId>groovy-all</artifactId>
+                <version>${groovy-all.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.eclipse.jetty.websocket</groupId>
                 <artifactId>websocket-client</artifactId>
@@ -1116,6 +1144,15 @@ under the License.
                 <artifactId>ranger-plugins-common</artifactId>
                 <version>${ranger-plugins-common.version}</version>
                 <exclusions>
+                    <!-- Use Doris's Hadoop modules; these duplicates bundle 
old private dependencies. -->
+                    <exclusion>
+                        <groupId>org.apache.hadoop</groupId>
+                        <artifactId>hadoop-client-api</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>org.apache.hadoop</groupId>
+                        <artifactId>hadoop-client-runtime</artifactId>
+                    </exclusion>
                     <exclusion>
                         <groupId>ch.qos.logback</groupId>
                         <artifactId>logback-classic</artifactId>
@@ -1550,6 +1587,13 @@ under the License.
                 <groupId>org.apache.avro</groupId>
                 <artifactId>avro-mapred</artifactId>
                 <version>${avro.version}</version>
+                <exclusions>
+                    <!-- Scanners read Avro files and do not start Avro's 
Jetty RPC server. -->
+                    <exclusion>
+                        <groupId>org.apache.avro</groupId>
+                        <artifactId>avro-ipc-jetty</artifactId>
+                    </exclusion>
+                </exclusions>
             </dependency>
             <!-- 
https://mvnrepository.com/artifact/org.apache.hudi/hudi-common -->
             <dependency>
@@ -1592,6 +1636,11 @@ under the License.
                 <artifactId>hbase-server</artifactId>
                 <version>${hbase.version}</version>
                 <exclusions>
+                    <!-- Hudi reads HFiles and does not start HBase's embedded 
HTTP server. -->
+                    <exclusion>
+                        <groupId>org.apache.hbase</groupId>
+                        <artifactId>hbase-http</artifactId>
+                    </exclusion>
                     <exclusion>
                         <groupId>org.apache.hbase</groupId>
                         <artifactId>hbase-hadoop2-compat</artifactId>
@@ -1654,6 +1703,11 @@ under the License.
                 <artifactId>parquet-hadoop</artifactId>
                 <version>${parquet.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.parquet</groupId>
+                <artifactId>parquet-hadoop-bundle</artifactId>
+                <version>${parquet.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.parquet</groupId>
                 <artifactId>parquet-common</artifactId>
@@ -1769,6 +1823,11 @@ under the License.
                 <artifactId>hadoop-mapreduce-client-core</artifactId>
                 <version>${hadoop.version}</version>
                 <exclusions>
+                    <!-- File readers do not submit YARN jobs; this client 
brings EOL Jetty 9 WebSockets. -->
+                    <exclusion>
+                        <groupId>org.apache.hadoop</groupId>
+                        <artifactId>hadoop-yarn-client</artifactId>
+                    </exclusion>
                     <exclusion>
                         <groupId>javax.servlet</groupId>
                         <artifactId>servlet-api</artifactId>
@@ -2004,6 +2063,12 @@ under the License.
                     </exclusion>
                 </exclusions>
             </dependency>
+            <!-- hadoop-cos uses classes inside this shaded bundle; keep both 
COS SDK artifacts aligned. -->
+            <dependency>
+                <groupId>com.qcloud</groupId>
+                <artifactId>cos_api-bundle</artifactId>
+                <version>${cos-api.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.qcloud</groupId>
                 <artifactId>qcloud-java-sdk</artifactId>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to