// npm 패키지
@aztec/end-to-end
This package includes end-to-end tests that cover Aztec's main milestones. These can be run locally either by starting anvil on a different terminal.
버전
981
메인테이너
6
최초 publish
2025-02-07
publisher
charlielye
tarball
37,137,108 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-06-04
// exfil path
what is read → where it shipssteals
- ● Seed phrase
sends to
(no destination string extracted — payload may be dynamic / obfuscated)
evidence in excerpt
> const { execFileSync } = require('child_process');// publisher 캠페인by charlielye
이 계정에서 catch된 패키지 9건고립된 catch가 아닙니다. 동일 publisher가 8개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @4.3.1· 3 files flagged
- @4.3.1··AUTO-PUBLISHED·publisher: charlielyeheuristic 64/100static flags 7llm skippednew-publisher:15dmature-packagepublisher-multi-name-burst:24publisher-version-pump:25child-process-spawnreads-env-varsreads-seed-phrasebase64-decodelong-base64-literalhex-decodelong-hex-literal
// offending code· 3 files flaggedpatterns: 7
--- package/src/install_legacy_contracts.cjs (excerpt) --- #!/usr/bin/env node // Installs pinned legacy @aztec/* contract-artifact packages into .legacy-contracts/<version>/. // // Called from two places: // - bootstrap.sh ci-compat-e2e: pre-populates the cache on the host before hermetic test // containers launch. The containers run with --net=none (see ci3/docker_isolate), so on-demand // installs from inside them fail with EAI_AGAIN. // - legacy-jest-resolver.cjs: on-demand install for local dev, where jest runs with network. // // Idempotent: no-op when all packages are already present. /* eslint-disable @typescript-eslint/no-require-imports */ const path = require('path'); const fs = require('fs'); const { execFileSync } = require('child_process'); const REDIRECTED = ['@aztec/noir-contracts.js', '@aztec/noir-test-contracts.js', '@aztec/accounts']; const e2eRoot = path.resolve(__dirname, '..'); function cacheRoot(version) { return path.join(e2eRoot, '.legacy-contracts', version); } function pkgJsonPath(version, pkg) { return path.join(cacheRoot(version), 'node_modules', pkg, 'package.json'); } function installLegacyContracts(version) { if (!version) { throw new Error('installLegacyContracts: version is required'); } if (REDIRECTED.every(pkg => fs.existsSync(pkgJsonPath(version, pkg)))) { return; } const cacheDir = cacheRoot(version); fs.mkdirSync(cacheDir, { recursive: true }); // Seed a standalone package.json so `npm install --prefix` treats cacheRoot as its own project. Without th --- package/src/test-wallet/worker_wallet.ts (excerpt) --- import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization'; import type { InteractionWaitOptions, SendReturn } from '@aztec/aztec.js/contracts'; import type { Aliased, AppCapabilities, BatchResults, BatchedMethod, ContractClassMetadata, ContractMetadata, ExecuteUtilityOptions, PrivateEvent, PrivateEventFilter, ProfileOptions, SendOptions, SimulateOptions, TxSimulationResultWithAppOffset, Wallet, WalletCapabilities, } from '@aztec/aztec.js/wallet'; import type { ChainInfo } from '@aztec/entrypoints/interfaces'; import type { Fr } from '@aztec/foundation/curves/bn254'; import { jsonStringify } from '@aztec/foundation/json-rpc'; import { createLogger } from '@aztec/foundation/log'; import { promiseWithResolvers } from '@aztec/foundation/promise'; import type { ApiSchema } from '@aztec/foundation/schemas'; import { sleep } from '@aztec/foundation/sleep'; import { NodeConnector, TransportClient } from '@aztec/foundation/transport'; import type { PXEConfig } from '@aztec/pxe/config'; import type { ContractArtifact, EventMetadataDefinition, FunctionCall } from '@aztec/stdlib/abi'; import type { AuthWitness } from '@aztec/stdlib/auth-witness'; import type { AztecAddress } from '@aztec/stdlib/aztec-address'; import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract'; import type { ExecutionPayload, TxProfileResult, UtilityExecutionResult } from '@aztec/stdlib/tx'; import { Tx } from '@aztec/stdlib/tx'; import { Worker --- package/src/spartan/setup_test_wallets.ts (excerpt) --- import { generateSchnorrAccounts } from '@aztec/accounts/testing'; import { NO_FROM } from '@aztec/aztec.js/account'; import { AztecAddress } from '@aztec/aztec.js/addresses'; import { NO_WAIT } from '@aztec/aztec.js/contracts'; import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum'; import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee'; import { type FeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee'; import { Fr } from '@aztec/aztec.js/fields'; import { type AztecNode, createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node'; import type { Wallet } from '@aztec/aztec.js/wallet'; import { createEthereumChain } from '@aztec/ethereum/chain'; import { createExtendedL1Client } from '@aztec/ethereum/client'; import type { Logger } from '@aztec/foundation/log'; import { retryUntil } from '@aztec/foundation/retry'; import { TokenContract } from '@aztec/noir-contracts.js/Token'; import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client'; import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing'; import { getACVMConfig } from '../fixtures/get_acvm_config.js'; import { getBBConfig } from '../fixtures/get_bb_config.js'; import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js'; import { TestWallet } from '../test-wallet/test_wallet.js'; import { proveInteraction } from '../test-wallet/utils.js'; import { WorkerWallet } from '../test-wallet/worker_wallet.js'; export i
