Ecosystem metrics

New Repos
3
down 88.0%
Commits
872
up 18.2%
Releases
11
up 120.0%
Contributors
59
up 22.9%
Merges
12
down 55.6%

Repository Explorer

10605 commits in all time May 14, 2026 14:16 – Aug 12, 2026 14:16 UTC
Close the cwd library-hijack in the loader that actually signs
There are two ctypes loaders for the same Falcon signing core:

  sdk/src/trelyan_pq/falcon.py    used by the SDK
  contracts/falcon_det1024.py    used by deploy_testnet.py and
                                 test_inscription.py

Commit eb67e4a (2026-08-10, "close two local library/module load-path
hijack vectors", pre-audit findings TF-01/TF-02) removed the cwd-relative
default. `git show --stat eb67e4a` confirms it touched only two files, both
under sdk/. contracts/falcon_det1024.py has not been modified since the
initial commit a806f63 and still read:

  _LIB_PATH = os.environ.get("FALCON_DET1024_LIB", "./libfalcondet1024.so")

A dlopen path containing a slash resolves against the process working
directory, so that default loads keygen, sign and verify out of whatever
./libfalcondet1024.so happens to be in cwd (CWE-426).

The unfixed copy is the one on the documented deployment path: README.md
tells the operator to run `python contracts/deploy_testnet.py` from the repo
root, and that script imports this module and calls keygen(),
sign_compressed() and verify_compressed() to mint a real inscription. So an
explicit pre-audit security fix was applied everywhere except the path that
signs. Two aggravating details: .gitignore excludes *.so/*.dylib/*.dll, so a
planted library never appears in `git status`; and until yesterday the CI
path filter excluded contracts/ entirely, so nothing here was ever executed.

Fix: default to "" and fail closed with the same message the SDK uses.

sdk/tests/test_loader_parity.py plants a decoy libfalcondet1024.{so,dylib,dll}
in a temp directory, runs each loader from there in a subprocess with
FALCON_DET1024_LIB unset, and requires refusal BEFORE the decoy is touched -
asserting the error names the missing variable and does NOT name the decoy.
Checking the constant alone would only prove a literal changed. A second test
guards the constant too, so a re-introduced relative default is obvious in
review.

Note the SDK case needs m.keygen(), not m.default_signer(): the loader is
lazy, so constructing the signer loads nothing and the test would pass
vacuously. Verified by mutation - restoring the old default turns both the
behavioural and the source test red; the fix turns them green.

The test lives in sdk/tests/ because that is what CI runs; contracts/ has no
test job, and a parity test parked where nothing executes it is the same
defect it exists to prevent.

Found by an adversarial claim-vs-enforcement sweep (TCE-03).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Git Commit 6ae14362 Branch fix/contracts-loader-cwd-hijack Document 2/143 ++ 1 --
joe-p js-algorand-sdk
Merge e16c50c2888a6e481ab000458033956951cc18b1 into 75c72bf720cdf08705f25d121fcce3e3150f72e6
Git Commit ed85b23c Branch pull/1115/merge Document 16/916 ++ 32 --
joe-p js-algorand-sdk
fix: empty signer auth addr check
Git Commit e16c50c2 Branch feat/v42 Document 1/1 ++ 1 --
Ganainmtech devportal
Merge 7c3ec16cd7f80798554a98e90606463cba694a48 into 3373832646a00d4285576642c42c4776cbf71f24
Git Commit 85ee4257 Branch pull/640/merge Document 1/20 ++ 0 --
Ganainmtech devportal
docs: add simulate fee estimation section
Git Commit 7c3ec16c Branch docs/simulate-usage-fees Document 1/20 ++ 0 --
sofinico gGov
wip on general re-read and micro-fixes
Git Commit 91ffba44 Branch wip/ggov-algoquarters Document 2/16 ++ 15 --
joe-p js-algorand-sdk
Merge f8eee9bba75c22d10918be9c0c36d7e64c6856cf into 75c72bf720cdf08705f25d121fcce3e3150f72e6
Git Commit efaa9247 Branch pull/1115/merge Document 16/916 ++ 32 --
joe-p js-algorand-sdk
feat: challenge discout, empty refs, and new deltas
Git Commit f8eee9bb Branch feat/v42 Document 6/133 ++ 0 --
joe-p js-algorand-sdk
Merge branch 'generate/68e0f84a' into feat/v42
Git Commit 873d2e78 Branch feat/v42 Document 1/169 ++ 0 --
joe-p js-algorand-sdk
Merge remote-tracking branch 'origin/main' into feat/v42
# Conflicts:
#	examples/falcon.ts
#	src/falcon-signer.ts
#	src/logicsig.ts
#	src/pq-signer.ts
#	src/signer.ts
#	src/signing.ts
#	tests/12.PQ.ts
#	tests/cucumber/steps/steps.js
Git Commit 686e9f29 Branch feat/v42 Document 26/726 ++ 259 --
Merge 5196f9ee568136a55964876c38c434af2f1d83a7 into c16958b8238c18f3d0762c3772e296e9b7976a02
Git Commit b172fcb7 Branch pull/30/merge Document 40/3,356 ++ 98 --
docs(migrations): document adoption in application extensions and baselining
Git Commit 5196f9ee Branch pull/30/head Document 2/158 ++ 2 --
meetthosar devportal
Merge 1d0195b41a72d3a9e9b90cabd0f2b422f489b8b6 into 3373832646a00d4285576642c42c4776cbf71f24
Git Commit b3ea7b78 Branch pull/639/merge Document 5/186 ++ 14 --
meetthosar devportal
docs: updated Sharing Boxes Between Applications links
Git Commit 1d0195b4 Branch feat/box-family-read-write Document 1/1 ++ 1 --
meetthosar devportal
docs: update box storage links
Git Commit 72db1e47 Branch feat/box-family-read-write Document 1/2 ++ 2 --
meetthosar devportal
docs: clarify family box re-entrancy wording in avm.md
Git Commit 36dd1bd3 Branch feat/box-family-read-write Document 1/12 ++ 8 --
Merge 7d30f921287e64aa52a0e8cceb07eb75ec89d258 into c16958b8238c18f3d0762c3772e296e9b7976a02
Git Commit cec0076e Branch pull/30/merge Document 40/3,200 ++ 98 --
meetthosar devportal
Added high level concept for 'Family box writing' & 'Foreign box reading'
Git Commit 2dfe44d7 Branch feat/box-family-read-write Document 1/31 ++ 21 --
feat(react-native-keystore): track legacy passkey flagging as migration 0001
BREAKING CHANGE: legacy passkey flagging no longer runs automatically on engine
start. It is now revision 0001 of the package's migration manifest and requires
WithMigrations from @algorandfoundation/provider-migrations to be installed on
the provider. Applications that do not add it will never flag legacy passkeys.
Git Commit 7ab0e90f Branch pull/30/head Document 12/247 ++ 47 --
feat(example): wire the migrations engine into the react-native wallet
Git Commit ad0a2f43 Branch pull/30/head Document 7/142 ++ 38 --
feat(react-native-keystore): gate engine hydration behind an optional `before` promise
Git Commit af602290 Branch pull/30/head Document 2/88 ++ 10 --