Copilot commented on code in PR #13432:
URL: https://github.com/apache/apisix/pull/13432#discussion_r3297103669


##########
ci/linux-install-openresty.sh:
##########
@@ -22,38 +22,64 @@ source ./ci/common.sh
 export_version_info
 
 ARCH=${ARCH:-`(uname -m | tr '[:upper:]' '[:lower:]')`}
-arch_path=""
-if [[ $ARCH == "arm64" ]] || [[ $ARCH == "aarch64" ]]; then
-    arch_path="arm64/"
-fi
-
-wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
-wget -qO - http://repos.apiseven.com/pubkey.gpg | sudo apt-key add -
-sudo apt-get -y update --fix-missing
-sudo apt-get -y install software-properties-common
-sudo add-apt-repository -y "deb 
https://openresty.org/package/${arch_path}ubuntu $(lsb_release -sc) main"
-sudo add-apt-repository -y "deb 
http://repos.apiseven.com/packages/${arch_path}debian bullseye main"
-
-sudo apt-get update
-sudo apt-get install -y openresty-pcre-dev openresty-zlib-dev build-essential 
gcc g++ cpanminus
 
 SSL_LIB_VERSION=${SSL_LIB_VERSION-openssl}
 ENABLE_FIPS=${ENABLE_FIPS:-"false"}
 
-if [ "$SSL_LIB_VERSION" == "tongsuo" ]; then
-    export openssl_prefix=/usr/local/tongsuo
-    export zlib_prefix=$OPENRESTY_PREFIX/zlib
-    export pcre_prefix=$OPENRESTY_PREFIX/pcre
+if [ "$SSL_LIB_VERSION" == "tongsuo" ] || [ "$ENABLE_FIPS" == "true" ]; then
+    arch_path=""
+    if [[ $ARCH == "arm64" ]] || [[ $ARCH == "aarch64" ]]; then
+        arch_path="arm64/"
+    fi
 
-    export cc_opt="-DNGX_LUA_ABORT_AT_PANIC -I${zlib_prefix}/include 
-I${pcre_prefix}/include -I${openssl_prefix}/include"
-    export ld_opt="-L${zlib_prefix}/lib -L${pcre_prefix}/lib 
-L${openssl_prefix}/lib64 
-Wl,-rpath,${zlib_prefix}/lib:${pcre_prefix}/lib:${openssl_prefix}/lib64"
-fi
+    wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
+    wget -qO - http://repos.apiseven.com/pubkey.gpg | sudo apt-key add -
+    sudo apt-get -y update --fix-missing
+    sudo apt-get -y install software-properties-common
+    sudo add-apt-repository -y "deb 
https://openresty.org/package/${arch_path}ubuntu $(lsb_release -sc) main"
+    sudo add-apt-repository -y "deb 
http://repos.apiseven.com/packages/${arch_path}debian bullseye main"

Review Comment:
   The Tongsuo/FIPS branch fetches the APT repo key and repo metadata over 
plain HTTP and installs the key via `apt-key`. HTTP allows MITM key/repo 
injection, and `apt-key` is deprecated on modern Ubuntu/Debian.
   
   Consider switching to HTTPS URLs (if available) and installing keys into 
`/usr/share/keyrings/*.gpg` (e.g., `gpg --dearmor`) with a `signed-by=` entry 
in the `deb` line instead of `apt-key`.



##########
ci/linux-install-openresty.sh:
##########
@@ -22,38 +22,64 @@ source ./ci/common.sh
 export_version_info
 
 ARCH=${ARCH:-`(uname -m | tr '[:upper:]' '[:lower:]')`}
-arch_path=""
-if [[ $ARCH == "arm64" ]] || [[ $ARCH == "aarch64" ]]; then
-    arch_path="arm64/"
-fi
-
-wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
-wget -qO - http://repos.apiseven.com/pubkey.gpg | sudo apt-key add -
-sudo apt-get -y update --fix-missing
-sudo apt-get -y install software-properties-common
-sudo add-apt-repository -y "deb 
https://openresty.org/package/${arch_path}ubuntu $(lsb_release -sc) main"
-sudo add-apt-repository -y "deb 
http://repos.apiseven.com/packages/${arch_path}debian bullseye main"
-
-sudo apt-get update
-sudo apt-get install -y openresty-pcre-dev openresty-zlib-dev build-essential 
gcc g++ cpanminus
 
 SSL_LIB_VERSION=${SSL_LIB_VERSION-openssl}
 ENABLE_FIPS=${ENABLE_FIPS:-"false"}
 
-if [ "$SSL_LIB_VERSION" == "tongsuo" ]; then
-    export openssl_prefix=/usr/local/tongsuo
-    export zlib_prefix=$OPENRESTY_PREFIX/zlib
-    export pcre_prefix=$OPENRESTY_PREFIX/pcre
+if [ "$SSL_LIB_VERSION" == "tongsuo" ] || [ "$ENABLE_FIPS" == "true" ]; then
+    arch_path=""
+    if [[ $ARCH == "arm64" ]] || [[ $ARCH == "aarch64" ]]; then
+        arch_path="arm64/"
+    fi
 
-    export cc_opt="-DNGX_LUA_ABORT_AT_PANIC -I${zlib_prefix}/include 
-I${pcre_prefix}/include -I${openssl_prefix}/include"
-    export ld_opt="-L${zlib_prefix}/lib -L${pcre_prefix}/lib 
-L${openssl_prefix}/lib64 
-Wl,-rpath,${zlib_prefix}/lib:${pcre_prefix}/lib:${openssl_prefix}/lib64"
-fi
+    wget -qO - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
+    wget -qO - http://repos.apiseven.com/pubkey.gpg | sudo apt-key add -
+    sudo apt-get -y update --fix-missing
+    sudo apt-get -y install software-properties-common
+    sudo add-apt-repository -y "deb 
https://openresty.org/package/${arch_path}ubuntu $(lsb_release -sc) main"
+    sudo add-apt-repository -y "deb 
http://repos.apiseven.com/packages/${arch_path}debian bullseye main"
+
+    sudo apt-get update
+    sudo apt-get install -y openresty-pcre-dev openresty-zlib-dev 
build-essential gcc g++ cpanminus
+
+    if [ "$SSL_LIB_VERSION" == "tongsuo" ]; then
+        export openssl_prefix=/usr/local/tongsuo
+        export zlib_prefix=$OPENRESTY_PREFIX/zlib
+        export pcre_prefix=$OPENRESTY_PREFIX/pcre
+
+        export cc_opt="-DNGX_LUA_ABORT_AT_PANIC -I${zlib_prefix}/include 
-I${pcre_prefix}/include -I${openssl_prefix}/include"
+        export ld_opt="-L${zlib_prefix}/lib -L${pcre_prefix}/lib 
-L${openssl_prefix}/lib64 
-Wl,-rpath,${zlib_prefix}/lib:${pcre_prefix}/lib:${openssl_prefix}/lib64"
+    fi
+
+    install_apisix_runtime
+
+    if [ ! "$ENABLE_FIPS" == "true" ]; then
+        curl -o /usr/local/openresty/openssl3/ssl/openssl.cnf \
+            
https://raw.githubusercontent.com/api7/apisix-build-tools/apisix-runtime/${APISIX_RUNTIME}/conf/openssl3/openssl.cnf
+    fi
+else
+    sudo apt-get -y update --fix-missing
+    sudo apt-get install -y build-essential gcc g++ cpanminus
+
+    case "$ARCH" in
+        x86_64|amd64)
+            DEB_ARCH="amd64"
+            ;;
+        arm64|aarch64)
+            DEB_ARCH="arm64"
+            ;;
+        *)
+            echo "Unsupported architecture: $ARCH" >&2
+            exit 1
+            ;;
+    esac
 
-install_apisix_runtime
+    
DEB_NAME="apisix-runtime-debug_${APISIX_RUNTIME}-0.debianbookworm-slim_${DEB_ARCH}.deb"
+    
RELEASE_URL="https://github.com/api7/apisix-build-tools/releases/download/apisix-runtime%2F${APISIX_RUNTIME}/${DEB_NAME}";
 
-if [ ! "$ENABLE_FIPS" == "true" ]; then
-curl -o /usr/local/openresty/openssl3/ssl/openssl.cnf \
-    
https://raw.githubusercontent.com/api7/apisix-build-tools/apisix-runtime/${APISIX_RUNTIME}/conf/openssl3/openssl.cnf
+    wget --no-verbose --tries=3 --retry-connrefused "$RELEASE_URL" -O 
"/tmp/$DEB_NAME"
+    sudo apt-get install -y "/tmp/$DEB_NAME"
+    rm -f "/tmp/$DEB_NAME"

Review Comment:
   The default OpenSSL path downloads a `.deb` from a GitHub release and 
installs it as root without any integrity verification. If the download is 
tampered with (or a compromised release asset is served), this becomes a CI 
supply-chain risk.
   
   Consider verifying a published SHA256/SHA512 checksum (stored in-repo or 
fetched from the same release and validated) before `apt-get install`, or 
consuming the runtime via a signed APT repository instead of a direct artifact 
URL.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to