From 69905b693f0df36f7eb3d27b51213f74f7b64c2a Mon Sep 17 00:00:00 2001 From: Florin Dzeladini Date: Mon, 12 Oct 2026 10:25:38 +0200 Subject: [PATCH 1/2] fix(stellar-snap): drop Blockaid description for OTHER to use generic security alerts --- packages/stellar-wallet-snap/CHANGELOG.md | 4 +++ .../TransactionScanService.test.ts | 34 ++++++++++++++++--- .../TransactionScanService.ts | 7 +++- .../components/ConfirmationAlerts.test.tsx | 3 ++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/packages/stellar-wallet-snap/CHANGELOG.md b/packages/stellar-wallet-snap/CHANGELOG.md index ffa16c633..b25f45362 100644 --- a/packages/stellar-wallet-snap/CHANGELOG.md +++ b/packages/stellar-wallet-snap/CHANGELOG.md @@ -16,6 +16,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Render confirmation asset rows and icons with the shared `Asset` and `AssetIcon` components from `@metamask/snap-networks-utils` ([#428](https://github.com/MetaMask/internal-snaps/pull/428)) +### Fixed + +- Use MetaMask generic security-alert copy for Stellar (Solana/Tron pattern) instead of Blockaid `description`, which can embed machine labels when `reason` is `OTHER` ([#433](https://github.com/MetaMask/internal-snaps/pull/433)) + ## [1.1.1] ### Fixed diff --git a/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.test.ts b/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.test.ts index b2e1c34c2..8e479ae06 100644 --- a/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.test.ts +++ b/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.test.ts @@ -142,7 +142,7 @@ describe('TransactionScanService', () => { validation: { type: TransactionScanValidationType.Benign, reason: '', - description: '', + description: null, }, error: null, }); @@ -173,7 +173,7 @@ describe('TransactionScanService', () => { validation: { type: TransactionScanValidationType.Benign, reason: '', - description: '', + description: null, }, error: null, }); @@ -210,7 +210,7 @@ describe('TransactionScanService', () => { validation: { type: TransactionScanValidationType.Benign, reason: '', - description: '', + description: null, }, error: null, }); @@ -243,7 +243,7 @@ describe('TransactionScanService', () => { validation: { type: TransactionScanValidationType.Benign, reason: '', - description: '', + description: null, }, error: null, }); @@ -331,6 +331,32 @@ describe('TransactionScanService', () => { }); }); + it('drops Blockaid description so the banner uses MetaMask generic copy', async () => { + const { service, securityAlertsApiClient } = setup(); + securityAlertsApiClient.scanTransaction.mockResolvedValue({ + simulation: null, + validation: { + status: 'Success', + result_type: TransactionScanValidationType.Malicious, + reason: 'OTHER', + classification: 'other', + description: + 'Gaining account GDUW4TP24B3PF2CCUZJ4AOSCHVXXQGKF3RDVCLFYFTL3XWB2YGTTXGIT is classified as stellar_expert_malicious', + }, + }); + + const result = await service.scanTransactionSafe(scanParams); + + expect(result).toMatchObject({ + status: 'SUCCESS', + validation: { + type: TransactionScanValidationType.Malicious, + reason: 'OTHER', + description: null, + }, + }); + }); + it('keeps free-form API errors as messages instead of codes', async () => { const { service, securityAlertsApiClient } = setup(); securityAlertsApiClient.scanTransaction.mockResolvedValue({ diff --git a/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.ts b/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.ts index 375424ab3..f458561bf 100644 --- a/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.ts +++ b/packages/stellar-wallet-snap/src/services/transaction-scan/TransactionScanService.ts @@ -321,10 +321,15 @@ export class TransactionScanService { { status: 'Success' } >, ): TransactionScanValidation { + // Match Solana/Tron: drive the banner from `result_type` and MetaMask + // generic copy. Do not pass Blockaid `description` / `classification` — + // they can embed machine labels (e.g. `stellar_expert_malicious`) when + // `reason` is `OTHER`. Placeholder until Blockaid provides mappable + // reasons (WPN-2215). return { type: validation.result_type, reason: validation.reason ?? null, - description: validation.description ?? null, + description: null, }; } diff --git a/packages/stellar-wallet-snap/src/ui/confirmation/components/ConfirmationAlerts.test.tsx b/packages/stellar-wallet-snap/src/ui/confirmation/components/ConfirmationAlerts.test.tsx index f4a54a2e7..1414787fe 100644 --- a/packages/stellar-wallet-snap/src/ui/confirmation/components/ConfirmationAlerts.test.tsx +++ b/packages/stellar-wallet-snap/src/ui/confirmation/components/ConfirmationAlerts.test.tsx @@ -180,6 +180,9 @@ describe('ConfirmationAlerts', () => { severity: 'danger', title: 'This is a deceptive request', }); + expect(JSON.stringify(component)).toContain( + 'If you approve this request, a third party known for scams will take all your assets.', + ); }); it('renders warning validation alerts with softer warning copy', () => { From f0a40c4db3e2949a151f7ac675f5398ffe213019 Mon Sep 17 00:00:00 2001 From: khanti42 Date: Mon, 12 Oct 2026 11:11:48 +0200 Subject: [PATCH 2/2] Update packages/stellar-wallet-snap/CHANGELOG.md Co-authored-by: Stanley Yuen <102275989+stanleyyconsensys@users.noreply.github.com> --- packages/stellar-wallet-snap/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stellar-wallet-snap/CHANGELOG.md b/packages/stellar-wallet-snap/CHANGELOG.md index b25f45362..75c74c323 100644 --- a/packages/stellar-wallet-snap/CHANGELOG.md +++ b/packages/stellar-wallet-snap/CHANGELOG.md @@ -18,7 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Use MetaMask generic security-alert copy for Stellar (Solana/Tron pattern) instead of Blockaid `description`, which can embed machine labels when `reason` is `OTHER` ([#433](https://github.com/MetaMask/internal-snaps/pull/433)) +- Use generic security-alert copy instead of Blockaid `description` ([#433](https://github.com/MetaMask/internal-snaps/pull/433)) ## [1.1.1]