Repository navigation
Conversation
InfoSec incident "Intrepid Falcon" (eMudhra intermediate CA compromise). Add .ci/orka/distrust_emudhra_cas.sh and run it from the Orka 3 Packer definition: "early", before install.sh, denies the two roots in the Keychain and removes them from /etc/ssl/cert.pem so everything the image build downloads is fetched with them distrusted; "late" and "verify", after the installs, remove them from the JDK cacerts, Homebrew and certifi bundles and fail the build if any store still trusts them. Point pip at the system bundle in third_party_deps.sh, and update the README, which still described the Orka 2 definition. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
elastic#3026 added brew python@3.12 to install.sh, so the Orka 3 base image may not provide python3 before it runs. Filter /etc/ssl/cert.pem with awk in the "early" mode, which runs first, and fail instead of silently doing nothing if grep itself fails. Python is only used by "late" and "verify", after the installs. Correct the README: the Orka 2 definition built the image CI still uses (migrated to Orka 3, not rebuilt), so it is not "no longer used". Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Building an existing image name succeeds but pushing it to the registry fails, so every new image needs a new name. Name the Orka 3 image ml-macos-14-arm-004, continuing the sequence of the Orka 2 images (the image CI uses today is -003), and say so in the README. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
edsavage
added a commit
to edsavage/ml-cpp
that referenced
this pull request
Oct 23, 2026
…rusted The check steps were soft-fail, so a FAIL was only a warning. Make only exit 2 (inconclusive, for example the test site is unreachable) a warning, so exit 1 (a store still trusts the compromised CAs) fails the build. Two known gaps stay soft-fail until they are fixed: * the aarch64 _test_ container, which runs the unit tests unmitigated. The aarch64 step is split in two, so the build host is checked strictly and only the container check is soft-fail (the two share one agent block) * the macOS agent, whose Homebrew Python uses a CA bundle the runtime mitigation does not touch, so the python3 probe fails until the Orka image is rebuilt with the roots removed (see elastic#3255)
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #3251 (review suggestion): bake the eMudhra intermediate CA compromise mitigation (InfoSec incident "Intrepid Falcon", https://emudhra.we-have-a-problem.com/) into the Orka macOS image instead of applying it at runtime on every job. That removes the runtime authorization workaround on macOS, covers the checkout clone, and handles stores the runtime script doesn't touch on macOS (JDK
cacerts, Homebrew, certifi). Temporary: remove once the base image and Homebrew carry the fix..ci/orka/distrust_emudhra_cas.sh(matches the two roots by SHA-256 fingerprint):early, beforeinstall.sh: deny the roots in the Keychain (security add-trusted-cert -d -r deny, with the temporarycom.apple.trust-settings.adminright if a headless session is refused) and remove them from/etc/ssl/cert.pemusing onlyawk(the Orka 3 base may not havepython3yet: DEV-2062 : Orka 3 Migration #3026 addedbrew install python@3.12toinstall.sh).install.shandthird_party_deps.shdownload the Homebrew installer, Zulu JDK, CMake, Boost and PyTorch over TLS (the last two end up in shipped binaries), so this runs first.late, after the installs:brew upgrade ca-certificates(best effort), then remove the roots from Homebrew's bundle, every certifi and pip-vendoredcacert.pemin the known site-packages locations, and every JDK'scacerts.verify: fail the build unless the bundles and JDK keystores are clean, the Keychain no longer trusts the roots, and/usr/bin/curlrejects both of the incident's test hosts.orka3-macos-14-arm.pkr.hcl: copy the script and run itearlybeforeinstall.sh, thenlateandverifyafterthird_party_deps.sh. The image is renamed toml-macos-14-arm-004: building an existing name succeeds but pushing it to the registry fails, so each new image needs a new name (the image CI uses today is-003).third_party_deps.sh:PIP_CERT=/etc/ssl/cert.pemfor the pip install (pip's vendored certifi still has the roots, and this runs afterearly).README.md: update for the Orka 3 definition (it described the old Orka 2 file, which I kept listed: it builtml-macos-14-arm-003.orkasi, the image CI uses today).Testing
The functions were exercised on copies (nothing on the dev machine was modified), under macOS bash 3.2:
/etc/ssl/cert.pem: 128 -> 126 certs, both roots gone, header lines removed too, idempotent.curl --cacertwith the filtered copy rejects both test hosts (exit 60) and still works for GitHub, PyPI and Maven Central.comodoaaaca [jdk]and contain a space.verifyon an unmitigated machine reports every store and exits non-zero. Its Keychain check usessecurity verify-cert -p basic, which I confirmed returns 0 for trusted roots and non-zero for untrusted certificates.Not tested here (needs the Packer build): the Keychain denial and
authorizationdbhandling (same commands as the runtime script in #3251, which pass on the Orka agent in CI),brew update/upgrade, running as root on a fresh VM, and the Packer run itself (packer validate -syntax-onlypasses).To validate and roll out
packer build orka3-macos-14-arm.pkr.hcl);verifyfails the build if any store is still unmitigated. If the Packer SSH session refuses an action (DEV-2062 : Orka 3 Migration #3026 hit similar headless-session quirks withlaunchctl),earlystops the build with the error rather than continuing.ml-macos-14-arm-003.orkasi(built by the Orka 2 definition and migrated to Orka 3 by MacStadium, not rebuilt: "we should not have to rebuild the image on the new environment as they are transitioning them"). An image built from this definition is namedml-macos-14-arm-004; I don't yet know the exactimagevalue (with or without the.orkasisuffix the migrated image has) to put inbuild_macos.json.pyfor it.main, 9.5 and 9.4 all use-003; 8.19 uses a separate macOS 12 image that is not covered here.Notes
generic-14-sonoma-arm; the Orka 3 definition adds the passwordlesssudoentry itself.packer fmt -checkalready fails on this file upstream (alignment in thelocalsandsourceblocks); I did not reformat lines I didn't change.🤖 Generated with Claude Code