Skip to content

Commit 5c3f246

Browse files
authored
Merge pull request #2561 from SatoshiPortal/audit-security-wallet
fix(security): remediate mobile audit findings and remove Ark
2 parents d70d15c + b1eaa03 commit 5c3f246

94 files changed

Lines changed: 567 additions & 14795 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Containerfile.tools

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,22 @@ RUN adduser $USER sudo
107107
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
108108
USER $USER
109109

110-
# Install Rust (pinned via RUST_VERSION arg)
111-
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh
112-
RUN sh /tmp/rustup.sh -y --no-modify-path --default-toolchain ${RUST_VERSION}
113-
RUN rm /tmp/rustup.sh
110+
# Install Rust (pinned via RUST_VERSION arg).
111+
# rustup-init is fetched from the immutable archive path and checked against
112+
# the SHA256 rustup publishes next to it, rather than piping sh.rustup.rs into
113+
# a shell: everything downstream — the FFI crypto in bull_sdk, payjoin and tor
114+
# — is built by whatever this step installs, so it has to be tamper-evident.
115+
# The base image is pinned to linux/amd64, so a single x86_64 digest is right.
116+
# Refresh: curl -fsSL https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/x86_64-unknown-linux-gnu/rustup-init.sha256
117+
ARG RUSTUP_VERSION="1.29.0"
118+
ARG RUSTUP_INIT_SHA256="4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10"
119+
RUN curl --proto '=https' --tlsv1.2 -fsSL \
120+
https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/x86_64-unknown-linux-gnu/rustup-init \
121+
-o /tmp/rustup-init \
122+
&& echo "${RUSTUP_INIT_SHA256} /tmp/rustup-init" | sha256sum -c - \
123+
&& chmod +x /tmp/rustup-init \
124+
&& /tmp/rustup-init -y --no-modify-path --default-toolchain ${RUST_VERSION} \
125+
&& rm /tmp/rustup-init
114126
ENV PATH="/home/$USER/.cargo/bin:${PATH}"
115127

116128
# Pre-install clippy and rustfmt for the pinned toolchain.
@@ -173,10 +185,22 @@ RUN if [ -n "$EXPECTED_RUST_VERSION" ]; then \
173185
fi; \
174186
fi
175187

176-
# Install FVM
177-
RUN curl -fsSL https://fvm.app/install.sh -o /tmp/fvm-install.sh
178-
RUN bash /tmp/fvm-install.sh ${FVM_VERSION}
179-
RUN rm /tmp/fvm-install.sh
188+
# Install FVM from its pinned release tarball rather than piping fvm.app's
189+
# install.sh into bash: that script is itself unversioned, so only the FVM
190+
# version was pinned and never the installer fetching it. The layout below is
191+
# what install.sh produces — it copies the contents of the archive's fvm/
192+
# directory into ${INSTALL_BASE}/bin, which is the directory added to PATH.
193+
# Refresh: sha256sum of the linux-x64 asset on the FVM release for this version.
194+
ARG FVM_SHA256="2d7fdfc3e77591806efe38fab23098a79567a89a9570de713c43f30cc54348d7"
195+
RUN curl -fsSL \
196+
https://github.com/leoafarias/fvm/releases/download/${FVM_VERSION}/fvm-${FVM_VERSION}-linux-x64.tar.gz \
197+
-o /tmp/fvm.tar.gz \
198+
&& echo "${FVM_SHA256} /tmp/fvm.tar.gz" | sha256sum -c - \
199+
&& mkdir -p /home/$USER/fvm/bin /tmp/fvm-extract \
200+
&& tar -xzf /tmp/fvm.tar.gz -C /tmp/fvm-extract \
201+
&& cp -a /tmp/fvm-extract/fvm/. /home/$USER/fvm/bin/ \
202+
&& chmod +x /home/$USER/fvm/bin/fvm \
203+
&& rm -rf /tmp/fvm.tar.gz /tmp/fvm-extract
180204
ENV PATH="/home/$USER/fvm/bin:${PATH}"
181205

182206
# Install Flutter via FVM.
@@ -196,7 +220,13 @@ ENV PATH="/home/$USER/fvm/default/bin:${PATH}"
196220
# podman user namespaces — sudo fails with "account validation failure" —
197221
# and are unnecessary at build time since USER switching achieves the same.)
198222
USER root
199-
RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS_VERSION}_latest.zip -O /tmp/android-cmdline-tools.zip
223+
# The zip is versioned but Google serves it from a _latest.zip URL, so verify
224+
# the digest: this archive provides sdkmanager, which installs the rest of the
225+
# Android SDK used to build the release APK.
226+
# Refresh: sha256sum of the downloaded zip for this ANDROID_CMDLINE_TOOLS_VERSION.
227+
ARG ANDROID_CMDLINE_TOOLS_SHA256="04453066b540409d975c676d781da1477479dde3761310f1a7eb92a1dfb15af7"
228+
RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS_VERSION}_latest.zip -O /tmp/android-cmdline-tools.zip \
229+
&& echo "${ANDROID_CMDLINE_TOOLS_SHA256} /tmp/android-cmdline-tools.zip" | sha256sum -c -
200230

201231
# Set up Android SDK
202232
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools

lib/core/ark/ark.dart

Lines changed: 0 additions & 8 deletions
This file was deleted.

lib/core/ark/entities/ark_balance.dart

Lines changed: 0 additions & 31 deletions
This file was deleted.

lib/core/ark/entities/ark_wallet.dart

Lines changed: 0 additions & 95 deletions
This file was deleted.

lib/core/ark/errors.dart

Lines changed: 0 additions & 24 deletions
This file was deleted.

lib/core/ark/locator.dart

Lines changed: 0 additions & 45 deletions
This file was deleted.

lib/core/ark/usecases/check_ark_wallet_setup_usecase.dart

Lines changed: 0 additions & 25 deletions
This file was deleted.

lib/core/ark/usecases/create_ark_secret_usecase.dart

Lines changed: 0 additions & 96 deletions
This file was deleted.

0 commit comments

Comments
 (0)