The Pirate Post ha ricondiviso questo.

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

Purtroppo dobbiamo riconoscerlo: il Festival del Giornalismo di Perugia ha deciso di snobbare il Fediverso e di sposare Bluesky


Seguiamo sempre con molto interesse il #internationaljournalismfestival ma, come fondatori di poliversity.it, ll'unica istanza Mastodon italiana dedicata ai giornalisti, non possiamo fingere di non vedere come il Festival di Perugia abbia sposato #Bluesky.

L'account mastodon @journalismfest è infatti morto, così come quello di @arianna (il cui account Bluesky non è nanche bridgiato con il Fediverso) e il nostro account è praticamente l'unico a rilanciare sul Fediverso le notizie della loro newsletter.

Come se non bastasse, oggi mi sono accorto che il profilo di @mellifluousbox (il direttore esecutivo di @Mastodon ) ha dovuto hackerare la casellina del contatto social, indicando l'indirizzo fedibridge di Bluesky... 🤣

journalismfestival.com/speaker…

Spiace dirlo, ma il Festival del Giornalismo sta dicendo ai giornalisti abbandonarsi con fiducia cieca a Bluesky, esattamente come nll'era pre-Musk, ha fatto con Twitter

@giornalismo

#IJF
#ijf26
#ijf2026
#ijf26speaker
#journalism

The Pirate Post ha ricondiviso questo.

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

Confronto tra stringhe in C#: Equals, OrdinalIgnoreCase, StringComparer e le insidie culturali
#tech
spcnet.it/confronto-tra-string…
@informatica


Confronto tra stringhe in C#: Equals, OrdinalIgnoreCase, StringComparer e le insidie culturali


Il confronto tra stringhe è una delle operazioni più comuni in qualsiasi applicazione .NET, eppure è anche una delle fonti più insidiose di bug difficili da riprodurre — specialmente quando l’applicazione viene eseguita in ambienti con culture diverse o in pipeline CI/CD con impostazioni locali variabili. In questo articolo vediamo come funzionano correttamente string.Equals(), OrdinalIgnoreCase, StringComparer e come evitare le trappole più comuni legate alla cultura.

L’operatore == e il confronto ordinale


L’operatore == su stringhe esegue un confronto ordinale case-sensitive, basato sui valori Unicode dei caratteri, senza alcuna considerazione culturale:

var a = "Hello";
var b = "hello";
Console.WriteLine(a == b);       // False
Console.WriteLine(a == "Hello"); // True

Questo è corretto e prevedibile per confronti interni al codice (chiavi di dizionari, nomi di variabili, costanti). Il problema nasce quando si vuole un confronto case-insensitive, o quando si confrontano stringhe con caratteri soggetti a regole culturali.

string.Equals() con StringComparison


La regola d’oro è: passare sempre esplicitamente un parametro StringComparison. Senza di esso, alcuni overload usano CurrentCulture, creando comportamenti potenzialmente incoerenti tra ambienti diversi.

// Confronto case-insensitive, senza dipendenze culturali
bool uguale = string.Equals("admin", input, StringComparison.OrdinalIgnoreCase);

// Equivalente con metodo d'istanza
bool ancheUguale = "admin".Equals(input, StringComparison.OrdinalIgnoreCase);

Panoramica dei valori di StringComparison

ValoreCaseCulturaUso consigliato
OrdinalSensibileNessunaFile, chiavi, dati binari
OrdinalIgnoreCaseInsensibileNessunaComandi, URL, identificatori
InvariantCultureSensibileInvarianteTesto serializzato/persistito
InvariantCultureIgnoreCaseInsensibileInvarianteTesto serializzato, case-indipendente
CurrentCultureSensibileLocale utenteTesto mostrato all’utente
CurrentCultureIgnoreCaseInsensibileLocale utenteRicerca/filtro lato UI

La trappola di ToLower() e ToUpper()


Uno degli antipattern più diffusi è usare ToLower() per normalizzare le stringhe prima del confronto:

// Antipattern: alloca una nuova stringa inutilmente
if (input.ToLower() == "admin") { }
if (input.ToLowerInvariant() == "admin") { }

// Corretto: nessuna allocazione, semantica esplicita
if (string.Equals(input, "admin", StringComparison.OrdinalIgnoreCase)) { }

Il problema non è solo di prestazioni (allocazione di una stringa temporanea), ma di correttezza semantica. La versione con ToLower() dipende dalla cultura corrente del thread, mentre OrdinalIgnoreCase è culturalmente neutro e deterministico.

Il problema della “i” Turca


Questo è forse il bug più famoso legato alla cultura nelle stringhe. In turco esistono quattro varianti della lettera i: la “i” minuscola con punto diventa “İ” maiuscola con punto (non “I” come in italiano), e la “ı” minuscola senza punto diventa “I” maiuscola. Il risultato:

var culture = new System.Globalization.CultureInfo("tr-TR");

// Bug su locale turco!
bool sbagliato = "file".ToUpper(culture) == "FILE"; // False! "file" diventa "FİLE" in turco

// OrdinalIgnoreCase usa regole invarianti
bool corretto = string.Equals("file", "FILE", StringComparison.OrdinalIgnoreCase); // True

Questo bug si manifesta tipicamente in applicazioni multi-tenant o globali dove il server ha una cultura diversa dall’ambiente di sviluppo. La soluzione è sempre usare OrdinalIgnoreCase per confronti tecnici (nomi di file, comandi, URL, header HTTP) e riservare CurrentCulture solo al testo destinato all’utente finale.

StringComparer per collezioni


StringComparer implementa sia IComparer<string> che IEqualityComparer<string>, rendendolo ideale per strutture dati come Dictionary, HashSet e SortedSet:

Dizionario case-insensitive per gli header HTTP

// "Content-Type" e "content-type" devono essere equivalenti
var headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
headers["Content-Type"] = "application/json";

Console.WriteLine(headers["content-type"]); // application/json
Console.WriteLine(headers["CONTENT-TYPE"]); // application/json

SortedSet case-insensitive

var comandi = new SortedSet<string>(StringComparer.OrdinalIgnoreCase);
comandi.Add("Start");
comandi.Add("stop");

bool haStart = comandi.Contains("START"); // True
// I duplicati vengono rilevati correttamente
comandi.Add("START"); // Non aggiunge, esiste già come "Start"
Console.WriteLine(comandi.Count); // 2

Confronto ad alte prestazioni con Span<char>


Per scenari con requisiti di performance elevati (parsing di protocolli, hot paths), .NET offre confronti allocation-free tramite ReadOnlySpan<char>:

var riga = "Content-Type: application/json";

// Confronto senza allocare nuove stringhe
bool isContentType = riga.AsSpan(0, 12).Equals(
    "Content-Type".AsSpan(),
    StringComparison.OrdinalIgnoreCase);

// StartsWith su Span
bool isHttps = url.AsSpan().StartsWith(
    "https://".AsSpan(),
    StringComparison.OrdinalIgnoreCase);

Questo approccio è particolarmente utile in middleware HTTP, parser di configurazione e codice che elabora grandi volumi di testo.

Pattern Matching con Switch


Il pattern matching di C# non supporta nativamente il confronto case-insensitive negli switch, ma esistono due approcci corretti:

// Approccio 1: Guard clause con Equals
var risultato = comando switch
{
    _ when string.Equals(comando, "start", StringComparison.OrdinalIgnoreCase) => "Avvio...",
    _ when string.Equals(comando, "stop", StringComparison.OrdinalIgnoreCase) => "Arresto...",
    _ => "Comando non riconosciuto"
};

// Approccio 2: Normalizzazione con ToUpperInvariant (accettabile per switch)
var risultato2 = comando.ToUpperInvariant() switch
{
    "START" => "Avvio...",
    "STOP" => "Arresto...",
    _ => "Comando non riconosciuto"
};

Esempio completo: parser di configurazione

public sealed class ConfigParser
{
    private readonly FrozenDictionary<string, string> _impostazioni;

    public ConfigParser(IEnumerable<KeyValuePair<string, string>> rawSettings)
    {
        // FrozenDictionary è ottimizzato per letture frequenti (immutabile dopo la creazione)
        _impostazioni = rawSettings.ToFrozenDictionary(
            kvp => kvp.Key,
            kvp => kvp.Value,
            StringComparer.OrdinalIgnoreCase);
    }

    public string? Get(string chiave) =>
        _impostazioni.TryGetValue(chiave, out var valore) ? valore : null;
}

// Utilizzo
var config = new ConfigParser(new[]
{
    new KeyValuePair<string, string>("DatabaseUrl", "Server=..."),
    new KeyValuePair<string, string>("MaxConnections", "100"),
});

Console.WriteLine(config.Get("databaseurl"));    // "Server=..."
Console.WriteLine(config.Get("MAXCONNECTIONS")); // "100"

Riepilogo: regole pratiche


  1. Usa OrdinalIgnoreCase per chiavi, identificatori, URL, nomi di file, comandi, header HTTP.
  2. Usa CurrentCulture solo per testo mostrato all’utente, quando le regole locali sono rilevanti.
  3. Non usare ToLower() per confronti: alloca inutilmente e dipende dalla cultura.
  4. Specifica sempre StringComparison esplicitamente nelle chiamate a Equals e Compare.
  5. Usa StringComparer quando passi logica di confronto a strutture dati.
  6. Usa MemoryExtensions su Span<char> per hot path ad alta frequenza e senza allocazioni.

Seguendo queste linee guida, si eliminano intere classi di bug difficili da riprodurre e si ottiene codice più robusto, portabile e performante.

Fonte: DevLeader — C# String Comparison: Equals, OrdinalIgnoreCase, StringComparer, and Culture Pitfalls


The Pirate Post ha ricondiviso questo.

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

➡️ Unsere #Databroker Recherche hat gezeigt, wie einfach sich vermeintlich privat geglaubte Standortdaten verkaufen und nutzen lassen.

🚀 Damit wir in Zukunft weiterhin solche Recherchen durchführen können, brauchen wir eure Unterstützung! Unterstützt uns mit einer Spende unter netzpolitik.org/spenden und teilt gerne das Video!

reshared this

The Pirate 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.

Qilin e Warlock BYOVD: come il ransomware disabilita 300+ soluzioni EDR utilizzando driver vulnerabili
#CyberSecurity
insicurezzadigitale.com/qilin-…


Qilin e Warlock BYOVD: come il ransomware disabilita 300+ soluzioni EDR utilizzando driver vulnerabili


Qilin e Warlock, due dei ransomware RaaS (Ransomware-as-a-Service) più sofisticati del panorama criminale, hanno potenziato significativamente le loro capacità di evasione implementando la tecnica BYOVD (Bring Your Own Vulnerable Driver). La nuova strategia consente ai malware di disabilitare oltre 300 soluzioni EDR/XDR utilizzando driver vulnerabili del kernel, rendendo inefficaci quasi tutti i sistemi di rilevamento degli endpoint contemporanei.

Dalla lateralizzazione alla disattivazione: la nuova tattica Qilin


Qilin rappresenta una delle principali operazioni di ransomware RaaS attualmente operative. Il gruppo ha consolidato il controllo su decine di reti aziendali utilizzando metodologie di accesso ben collaudate e movimentazione laterale. Tuttavia, la fase finale dell’attacco era frequentemente rilevata dagli EDR in grado di identificare comportamenti malware tipici durante la crittografia di file.

Con l’introduzione della catena di infezione EDR-Killer, Qilin ha chiuso questa lacuna critica. Gli attacchi moderni seguono un pattern ben definito: accesso iniziale, lateralizzazione (6 giorni medi), disattivazione degli EDR, dispiegamento ransomware.

La catena multi-stadio: msimg32.dll e il carico del Kernel


La catena di infezione EDR-Killer di Qilin utilizza la tecnica classica del DLL Side-Loading per eseguire una DLL malevola denominata “msimg32.dll”. Per mantenere la funzionalità attesa, la DLL malevola invia gli API call legittimi alla libreria legittima in C:\Windows\System32, mascherando completamente la sua attività malevola.

Lo stadio 1 implementa una tabella slot-policy per l’evasione delle syscall e la tecnica “Halo’s Gate”, consentendo al codice malware di invocare direttamente funzioni di kernel bypassando i filtri tradizionali. Gli stadi 2-3 presentano offuscamento del flusso di controllo VEH-based complesso.

Il doppio carico di driver: rwdrv.sys e hlpdrv.sys


rwdrv.sys è una versione rinominata di “ThrottleStop.sys”, uno strumento legittimo di tuning dei processori Intel. Sfruttando una vulnerabilità nel driver originale, Qilin lo utilizza per ottenere accesso diretto alla memoria fisica del sistema. Una volta caricato nel kernel, rwdrv.sys funziona come un livello di accesso hardware di modo kernel.

hlpdrv.sys è il vero “EDR killer”. Lavora in stretto coordinamento con rwdrv.sys per terminare i processi associati a oltre 300 diversi driver EDR appartenenti a praticamente ogni maggiore fornitore di sicurezza. Prima di caricare hlpdrv.sys, il componente EDR-killer annulla la registrazione dei callback di monitoraggio stabiliti dall’EDR, accecando efficacemente lo strumento di rilevamento a livello di kernel.

Meccanismo di disattivazione tecnica: callback unregistration


I sistemi di rilevamento moderni utilizzano callback di kernel registrati per monitorare eventi critici: creazione di processi, creazione di thread, caricamento di moduli/DLL, operazioni di file system. Iterando attraverso una lista hardcoded di oltre 300 driver EDR, Qilin annulla sistematicamente la registrazione dei loro callback di monitoraggio.

Senza questi callback, l’EDR diventa essenzialmente cieco: non può rilevare nuovi processi, non può intercettare thread sospetti, non può monitorare il caricamento di moduli malware. Una volta che i callback sono stati annullati, hlpdrv.sys procede a terminare i processi del servizio EDR stesso, disattivando completamente la protezione in tempo reale.

Timeline e implicazioni per la difesa


L’analisi forense rivela un pattern tattico coerente: accesso iniziale via credenziali compromesse, lateralizzazione (6 giorni medi), EDR disattivazione, dispiegamento ransomware. Questa evoluzione tattica rappresenta una significativa escalation nella sofisticazione dei ransomware RaaS.

Per la difesa: implementare il Kernel Patch Protection (KPP/HVCI), implementare Device Guard per il whitelisting dei driver firmati, implementare segmentazione di rete aggressiva, monitorare il movimento laterale, implementare il privileged access management (PAM). Se il caricamento di un driver sospetto viene rilevato, avviare immediatamente un killchain completo dell’incidente con isolamento di rete e acquisizione forense.


The Pirate Post ha ricondiviso questo.

Wenn die jährliche Statistik zur Kriminalität veröffentlicht wird, folgen oft rassistische Hetze und Rufe nach Strafrechtsverschärfungen. Dabei sagt die Statistik weniger darüber aus, wie die Sicherheitslage im Land wirklich ist, als viele vermuten.

netzpolitik.org/2026/polizeili…

The Pirate Post ha ricondiviso questo.

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

NDR Zapp berichtet, "warum ein Social-Media-Verbot nicht die Lösung ist". Als Gast in der Sendung habe ich gewarnt: Ein Social-Media-Verbot für Minderjährige geht immer einher mit #Alterskontrollen – und zwar Alterskontrollen für alle.

ardmediathek.de/video/zapp/soc…

Questa voce è stata modificata (8 ore fa)

reshared this

The Pirate 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.

APT28 PRISMEX: la suite malware di spionaggio dell’esercito russo colpisce l’Ucraina e gli alleati NATO
#CyberSecurity
insicurezzadigitale.com/apt28-…


APT28 PRISMEX: la suite malware di spionaggio dell’esercito russo colpisce l’Ucraina e gli alleati NATO


Si parla di:
Toggle


L’APT28 (noto anche come Pawn Storm, Forest Blizzard, Fancy Bear) lancia una sofisticata campagna di spear-phishing che distribuisce la suite malware PRISMEX, combinando steganografia avanzata, spoofing COM e abuso di servizi cloud legittimi. La campagna prende di mira infrastrutture critiche ucraine e partner logistici NATO in Polonia, Romania, Slovenia, Turchia, Slovacchia e Repubblica Ceca, segnalando un’escalation significativa delle operazioni di cyber-spionaggio russo.

La campagna PRISMEX: steganografia e doppi intenti


A partire da almeno settembre 2025, l’APT28 ha dispiegato la suite PRISMEX in una campagna mirata a enti governativi ucraini (corpi esecutivi centrali, servizi di idrometeorologia, difesa, gestione delle emergenze) e partner logistici militari in tutta Europa orientale e i Balcani. La campagna è particolarmente preoccupante per due motivi: la rapidità di sfruttamento di vulnerabilità zero-day e la sofisticazione dell’infrastruttura di comando e controllo.

PRISMEX combina quattro componenti malware distinti, ognuno con funzioni specifiche nella catena infettiva. Lo spionaggio e le capacità distruttive coesistono nello stesso malware, suggerendo una doppia intenzione: raccogliere intelligence militare-strategica e preparare potenziali operazioni di sabotaggio dirompente contro infrastrutture critiche alleate.

Anatomia della suite PRISMEX


PrismexSheet è il componente iniziale: un documento Excel malevolo con macro VBA che estrae payload nascosti nel file tramite steganografia. Dopo che la macro è abilitata, il componente stabilisce persistenza tramite hijacking COM e visualizza un documento esca relativo a inventari di droni e prezzi di equipaggiamento militare per ingannare l’utente.

PrismexDrop è un dropper nativo che prepara l’ambiente per lo sfruttamento successivo, utilizza task pianificati e hijacking COM DLL per mantenere la persistenza nel sistema compromesso.

PrismexLoader è la componente più sofisticata dal punto di vista tecnico. Funziona come un proxy DLL che estrae il payload .NET successivo disperso nella struttura di un file PNG (“SplashScreen.png”) utilizzando un algoritmo personalizzato denominato “Bit Plane Round Robin”. Questo metodo di steganografia distribuisce i dati attraverso il file per eludere la rilevazione, consentendo l’esecuzione completamente in memoria con tracce minime su disco.

PrismexStager è un impianto COVENANT Grunt che abusa del servizio cloud Filen.io per le comunicazioni di comando e controllo. Questa infrastruttura consente al traffico malevolo di mimetizzarsi con le comunicazioni web normali crittografate, bypassando i filtri basati sulla reputazione e le regole firewall.

Sfruttamento Zero-Day e tattica di preparazione dell’infrastruttura


L’APT28 ha dimostrato una capacità straordinaria di sfruttare le vulnerabilità quasi immediatamente dopo la divulgazione pubblica. Le vulnerabilità CVE-2026-21509 (sfruttamento RTF) e CVE-2026-21513 (bypass della protezione del browser) sono state integrate nella campagna PRISMEX con velocità allarmante.

Ancora più preoccupante: l’infrastruttura preparatoria è stata osservata il 12 gennaio 2026, esattamente due settimane prima della divulgazione pubblica di CVE-2026-21509. Questo suggerisce fortemente che l’APT28 possedeva una conoscenza zero-day della vulnerabilità, anticipando di settimane la divulgazione ufficiale da parte di Microsoft.

Catena di accesso iniziale e vettori di infezione


Gli attacchi iniziano con email di spear-phishing particolarmente sofisticate che sfruttano contesti geopolitici attuali. I temi utilizzati includono briefing su addestramento militare, avvisi meteorologici critici, documenti su contrabbando di armi e logistica militare, e inventari di equipaggiamento difensivo.

CVE-2026-21509 (una vulnerabilità di esecuzione di codice remoto in file RTF) forza una connessione ai server WebDAV controllati dagli attaccanti, consentendo il download e l’esecuzione di PrismexSheet. CVE-2026-21513 consente l’esecuzione silenziosa di codice bypassando le protezioni del browser.

Indicatori tecnici e meccanismi di persistenza


I meccanismi di persistenza includono COM hijacking, task pianificati che riavviano explorer.exe a intervalli regolari, esecuzione senza file tramite caricamento runtime .NET, e abuso del servizio cloud Filen.io per C2. La steganografia “Bit Plane Round Robin” di PrismexLoader è particolarmente insidiosa, distribuendo il payload nei piani di bit di un file PNG per consentire ai difensori di vedere un’immagine visivamente normale mentre nasconde efficacemente la logica malware.

Implicazioni strategiche e di difesa


Per le organizzazioni nel settore della difesa, della logistica e delle infrastrutture critiche in Europa orientale e nei Balcani: monitorare le connessioni a Filen.io da endpoint aziendali, cercare file PNG in posizioni inusuali, analizzare le macros di Excel per riferimenti a URL di download, implementare il whitelisting delle applicazioni, disabilitare i task scheduler non autorizzati, e applicare immediatamente le patch per CVE-2026-21509 e CVE-2026-21513.


The Pirate Post ha ricondiviso questo.

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

🕵️ Would you like to receive regular updates on our current projects and stay on top of all things #privacy and data protection?

🐦 Sign up to our #newsletter via newsletter.noyb.eu/pf/433/TdOo…

reshared this

The Pirate Post ha ricondiviso questo.

Idris lebt seit mehr als 40 Jahren in Deutschland und soll nach Eritrea abgeschoben werden. Das gilt als praktisch unmöglich. Trotzdem durchsucht das Ausländeramt Köln sein Smartphone, während er im Gefängnis sitzt. Eine Geschichte über einen Kontrollapparat, der sich verselbstständigt hat.

netzpolitik.org/2026/abschiebe…

Подпишите обращение о спасении интернета


В России нарастает давление на интернет-инфраструктуру под видом регулирования и обеспечения устойчивости сети. Новые инициативы Минцифры и стоящих за ним людей и организаций вызывают серьёзную обеспокоенность у отрасли связи.

Операторами связи был создан сайт save-internet.org/feed, на котором размещено обращение к депутатам Госдумы, в Правительство и профильные ведомства.

Суть обращения заключается не просто в критике отдельных инициатив, а в предупреждении о системных рисках.

Операторы связи прямо указывают на следующие угрозы:

  • Рост стоимости интернета. Предлагаемые меры требуют дорогостоящего оборудования и модернизации сетей. Эти расходы неизбежно будут переложены на пользователей.
  • Удар по малым и региональным провайдерам. Дополнительные требования могут оказаться непосильными для небольших операторов. Это приведёт к их уходу с рынка и дальнейшей монополизации отрасли.
  • Снижение качества и устойчивости связи. Избыточное вмешательство в инфраструктуру (включая фильтрацию и контроль трафика) увеличивает риски сбоев и деградации сети.
  • Расширение инструментов блокировок. Технические механизмы, вводимые под предлогом управления сетью, фактически усиливают возможности для цензуры и ограничения доступа к информации.
  • Отсутствие диалога с отраслью. Ключевые решения принимаются без полноценного обсуждения с профессиональным сообществом, несмотря на прямые последствия для всей цифровой экономики.

Также на сайте есть возможность подписать обращение (save-internet.org/#appeal). Представители инициативной группы операторов связи направляют обращения к Президенту, в Правительство, Генпрокурору и депутатам. Каждая подпись — это реальный человек или компания, за которыми стоит голос. Чем больше подписей, тем убедительнее позиция отрасли перед властью.

Пиратская партия России поддерживает данную инициативу, несмотря на её мягкость и запоздалость. Будущее интернета, не только в России, но и в мире, зависит от того, насколько своевременно общество реагирует на подобные угрозы.

Призываем граждан, специалистов отрасли и общественные организации поддержать инициативу, распространить информацию о ней, заполнить и направить обращение своим депутатам и местным властям.

Сообщение Подпишите обращение о спасении интернета появились сначала на Пиратская партия России | PPRU.

rur reshared this.

The Pirate Post ha ricondiviso questo.

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

MuddyWater-Linked APT Campaign Scanned 12,000+ Systems Before Striking Middle East Critical Infrastructure
#CyberSecurity
securebulletin.com/muddywater-…
The Pirate Post ha ricondiviso questo.

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

Booking.com Confirms Data Breach: Reservation Data and Personal Details of Customers Exposed
#CyberSecurity
securebulletin.com/booking-com…
The Pirate Post ha ricondiviso questo.

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

Fake Ledger Live App on Apple’s Mac App Store Steals $9.5 Million in Crypto from 50+ Victims
#CyberSecurity
securebulletin.com/fake-ledger…
The Pirate Post ha ricondiviso questo.

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

.NET 11 Preview 3: tutte le novità del terzo rilascio anticipato
#tech
spcnet.it/net-11-preview-3-tut…
@informatica


.NET 11 Preview 3: tutte le novità del terzo rilascio anticipato


.NET 11 è ancora in fase di sviluppo, ma il terzo Preview rilasciato il 14 aprile 2026 porta con sé una serie di novità concrete e già sperimentabili. Dalle librerie di sistema al runtime JIT, dall’SDK alla toolchain, questo rilascio intermedio offre uno sguardo chiaro su dove sta andando l’ecosistema .NET. Vediamo nel dettaglio cosa c’è di nuovo e cosa vale la pena testare subito nei propri progetti.

Novità nel Runtime e JIT


Il team del runtime ha rimosso il requisito del flag di opt-in per le API async previewed nelle versioni precedenti: alcune funzionalità asincrone del runtime sono ora accessibili senza annotazioni speciali. Sul fronte delle prestazioni, il JIT compiler è stato ottimizzato in tre aree chiave:

  • Switch statement: migliorata la generazione di codice macchina per costrutti switch complessi
  • Bounds check: eliminati controlli ridondanti sugli array in scenari comuni
  • Type cast: ridotta la latenza nelle operazioni di cast tra tipi gerarchicamente correlati

Sul fronte WebAssembly, .NET 11 introduce il formato WebCIL, un nuovo formato di packaging per i moduli .wasm, insieme a miglioramenti al debugging in ambiente browser. Chi sviluppa applicazioni Blazor WebAssembly beneficerà di esperienze di debug più fluide.

Librerie di Sistema: JSON, Compressione e Regex


System.Text.Json riceve controllo più granulare sulla naming strategy e sulla gestione dei valori di default. Sarà possibile configurare i serializzatori per ignorare specifiche proprietà con valori predefiniti in modo più preciso rispetto a quanto offriva il parametro DefaultIgnoreCondition.

La novità più interessante lato compressione è l’aggiunta di Zstandard (zstd) in System.IO.Compression. Zstandard è l’algoritmo di compressione sviluppato da Meta, noto per offrire un ottimo trade-off tra velocità e rapporto di compressione — spesso superiore a gzip e deflate. Esempio di utilizzo:

using System.IO.Compression;

// Compressione con Zstandard
using var input = File.OpenRead("dati.json");
using var output = File.Create("dati.json.zst");
using var compressor = new ZstandardStream(output, CompressionMode.Compress);
await input.CopyToAsync(compressor);

In aggiunta, la lettura di file ZIP ora valida i checksum CRC32 automaticamente, rendendo più robusta la gestione degli archivi corrotti o manomessi.

Per le espressioni regolari, il motore riconosce ora tutte le sequenze Unicode di newline, migliorando la portabilità del parsing testuale cross-platform.

SDK: Nuove Funzionalità da CLI


L’SDK riceve alcune aggiunte molto pratiche per chi lavora da terminale:

Passare variabili d’ambiente con dotnet run -e

# Passare una variabile d'ambiente al processo durante lo sviluppo
dotnet run -e ASPNETCORE_ENVIRONMENT=Development -e ConnectionStrings__Default="Server=..."

Finalmente si può sovrascrivere variabili d’ambiente senza toccare launchSettings.json o esportare variabili nello shell corrente.

Top-level programs multi-file


I programmi con top-level statements (introdotti in C# 9) potranno ora distribuirsi su più file sorgente. Questo alleggerisce il vincolo di avere tutto in un unico Program.cs per i progetti di tipo file-based, come script o tool CLI leggeri.

dotnet watch migliorato


Lo strumento dotnet watch ha ricevuto tre miglioramenti rilevanti: supporto ai progetti .NET Aspire, crash recovery automatico e miglioramenti specifici per applicazioni Windows desktop (WPF/WinForms).

C# 14: Union Types in Anteprima


Preview 3 include un’anteprima degli union types in C# 14. Questa funzionalità, molto attesa, consente di dichiarare tipi che possono contenere uno tra un insieme definito di tipi, avvicinando C# a pattern già presenti in F#, TypeScript e Rust:

// Sintassi ipotetica - ancora in preview, soggetta a variazioni
union Result<T>
{
    T Value,
    Exception Error
}

var result = GetData();
var output = result switch
{
    Result<string>.Value(var v) => $"Successo: {v}",
    Result<string>.Error(var e) => $"Errore: {e.Message}"
};

Attenzione: la sintassi è ancora sperimentale e potrebbe cambiare nelle release successive.

ASP.NET Core in .NET 11 Preview 3


Tre aggiornamenti principali per il framework web:

Compressione Zstandard per le risposte HTTP


ASP.NET Core ora supporta la compressione zstd nelle risposte HTTP e la decompressione delle richieste in arrivo. Da configurare in Program.cs:

builder.Services.AddResponseCompression(options =>
{
    options.Providers.Add<ZstandardCompressionProvider>();
    options.EnableForHttps = true;
});

Blazor Virtualize con altezze variabili


Il componente <Virtualize> di Blazor ora si adatta a elementi di altezza variabile a runtime, risolvendo un limite storico che richiedeva di specificare un’altezza fissa per gli elementi della lista virtualizzata.

HTTP/3 più reattivo


L’avvio dell’elaborazione delle richieste HTTP/3 è anticipato, riducendo la latenza percepita nelle prime connessioni su protocollo QUIC.

Entity Framework Core: GetEntriesForState()


EF Core in .NET 11 introduce ChangeTracker.GetEntriesForState(), un metodo che consente di interrogare le entry per stato (Added, Modified, Deleted) senza scatenare un cycle di change detection — operazione potenzialmente costosa in grafi di oggetti complessi:

// Prima: scatenava change detection su tutto il grafo
var modified = context.ChangeTracker.Entries()
    .Where(e => e.State == EntityState.Modified)
    .ToList();

// Ora: accesso diretto per stato, senza overhead di detection
var modified = context.ChangeTracker
    .GetEntriesForState(EntityState.Modified)
    .ToList();

Container Images Firmati


Le immagini container ufficiali di .NET sono ora firmate digitalmente, permettendo la verifica della catena di custodia prima del deployment. Questo è un passo importante per le pipeline DevSecOps che richiedono provenance verificabile dei componenti software.

Come Provare .NET 11 Preview 3

# Scaricare il SDK da https://dotnet.microsoft.com/download/dotnet/11.0
dotnet --version
# Output atteso: 11.0.0-preview.3.xxxxx

# Creare un progetto di test
dotnet new console -n test-dotnet11 --framework net11.0

Conclusione


.NET 11 Preview 3 è un rilascio ricco, che tocca trasversalmente runtime, SDK, ASP.NET Core ed EF Core. Le novità più impattanti per la produzione futura sono il supporto a Zstandard, gli union types in C# 14 e le ottimizzazioni JIT. Si consiglia di testare le nuove funzionalità dell’SDK — in particolare dotnet run -e — già ora, poiché entreranno probabilmente stabili con il rilascio di novembre 2026.

Fonte: devblogs.microsoft.com — .NET 11 Preview 3 is now available!, 14 aprile 2026


The Pirate Post ha ricondiviso questo.

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

Critical Fortinet FortiClient EMS Vulnerability CVE-2026-21643 Actively Exploited — CISA Demands Patch Today
#CyberSecurity
securebulletin.com/critical-fo…
The Pirate Post ha ricondiviso questo.

Idris lebt seit mehr als 40 Jahren in Deutschland und soll nach Eritrea abgeschoben werden. Das gilt als praktisch unmöglich. Trotzdem durchsucht das Ausländeramt Köln sein Smartphone, während er im Gefängnis sitzt. Eine Geschichte über einen Kontrollapparat, der sich verselbstständigt hat.

netzpolitik.org/2026/abschiebe…

The Pirate Post ha ricondiviso questo.

Facebook e Instagram inaspriscono le regole di censura per chi usa il termine "Antifa".

Le nuove regole di Meta consentono di bannare gli utenti o sopprimere i commenti che includono la parola "antifa" insieme a "segnali di minaccia a livello di contenuto".

theintercept.com/2026/04/14/fa…

@pirati@feddit.it

in reply to Pirati.io

evidentemente i morti americani(non solo)nella seconda guerra mondiale non sono bastati.
ma si rendono conto che con questo ostracismo già solo alla parola antifascista uccidono per la seconda volta tutti quelli che hanno combattuto e perso la vita per sconfiggere nazifascismo,non solo loro ma anche tutte le vittime dei campi di concentramento compreso l'Olocausto degli ebrei cui adesso gli USA d Europa permettono di fare a Gaza anche se con proporzioni diverse la stessa cosa!?

Marco reshared this.

in reply to Pirati.io

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

mastodon.uno/@DigiDavidex/1119…

mastodon.uno/@DigiDavidex/1138…


"libertà di espressione" e "un luogo sicuro e rispettoso", #facebook
AHAHAHAHAHHAHAHHAAH

Questa voce è stata modificata (18 ore fa)
The Pirate Post ha ricondiviso questo.

"Siamo la Commissione UE: ogni resistenza è inutile!". La nostra regina Borg ci regala l'app per la verifica dell’età online

Per i cittadini non c'è più scampo le grandi piattaforme digitali “non ci sono più scuse”. Parola di Ursula von der Leyen, che annuncia il nuovo sistema europeo per la verifica dell’età degli utenti online

wired.it/article/app-europea-v…

@Privacy Pride

The Pirate Post ha ricondiviso questo.

Il passaggio del robo-cone: In Ucraina, per la prima volta nella storia, i robot hanno conquistato una postazione nemica

Zelensky annuncia un’operazione senza fanteria né perdite ma solo con l'uso di sistemi senza equipaggio e droni. È il risultato della svolta tecnologica voluta da Kyiv. E il ministro Fedorov spinge per la trasformazione dell’esercito in chiave robotica

ilfoglio.it/esteri/2026/04/14/…

@informatica

The Pirate Post ha ricondiviso questo.

Im Bundestag wurde heute erstmals darüber gesprochen, wie die Arbeitsbedingungen von Datenarbeiter:innen hinter KI und Sozialen Medien verbessert werden können.

Bei einem Fachgespräch der Ausschüsse für Arbeit und für Digitales lieferten Joan Kinyua von der Data Labelers Association, Milagros Miceli von der TU Berlin und Julia Kloiber von @superrr zahlreiche konkrete Vorschläge.

Angeschaut und zusammengefasst von @roofjoke :

netzpolitik.org/2026/outsourci…

Questa voce è stata modificata (1 giorno fa)

reshared this

The Pirate Post ha ricondiviso questo.

Die EU Age Verification App verwendet Elemente, die eigentlich eher so nach Terrorabwehr klingen:

- ID Card Abfotografien
- ID Card auslesen (biometrische Infos)
- Liveness Probe dieser biometrischen Infos

Das ist damit auf einer Ebene von dem, was vor Jahren maximal zur Terrorabwehr von Polizei möglich war.

Damit werden dann Kinder sozialisiert, das das ja normal und "privacy-freundlich" sei.

Nun. Geht mal nen Meter zurück.

youtube.com/watch?v=ULFTrTznG7…

in reply to Bianca Kastl

Ich lebe in Italien und habe meine eID. Ich nehme an, dass dies in anderen EU-Staaten früher oder später ebenso der Fall sein wird. Dann wird die 2. Methode mit der ID Card nicht benötigt. Wenn dann in der App nur das Alter (Geburtsdatum) abgelegt ist, dann sollte mit einer OpenSource-App die Altersverifikation ohne Datenverlust überprüfbar möglich sein.

Ich finde eine Altersverifikation prinzipiell für sinnvoll und würde sie nicht nur auf Kinder/Jugendliche beschränken.

Schlecht finde ich hingegen, dass die UnSocials nicht gezwungen werden auf Maßnahmen zu verzichten und stattdessen diese Altersverifikation als Scheinlösung angestrebt wird.
#unplugBigTech #opensource

in reply to linterfranz

@linterfranz Also musst du jede Interaktion mit deiner eID authorisiert haben. Der Schritt doch mehr an Daten abzurufen wird dann minimal -- und was machen Leute ohne eID?

Aus einer gewalttätigen Partnerschaft geflohen, neues Smartphone, aber du hast deinen neuen Ausweis noch nicht (der alte ist "weg")? Blöd, wenn das bedeutet, dass du aus technisch erzwungenen Gründen (Altersverifikation) Zugang zu Diensten verlierst, die du brauchst.

@bkastl

The Pirate Post ha ricondiviso questo.

Log Out @ Roma

🕒 28 aprile, 18:30 - 28 aprile, 21:30

🔗 mobilizon.it/events/e411e86a-2…


Log Out @ Roma


Martedì 28 aprile torniamo con il Logout di TWC Roma, il ritrovo per tech workers che vogliono incontrarsi dopo il lavoro: un'occasione per socializzare, conoscersi, parlare del nostro lavoro e come organizzarci nei prossimi mesi!

Ci vediamo martedi 28 aprile, dalle 18:30 alle 21:30, alla Casa del Parco in Caffarella (ingressolargo Tacchi Venturi angolo Via Latina)

E' raggiungibile a piedi dalla Metro A fermata Colli Albani.

Unisciti ai gruppi Telegram Tech Workers Coalition !

Roma

t.me/twcroma

Italia

t.me/twcitagruppo


reshared this

The Pirate Post ha ricondiviso questo.

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

LLM Chat in .NET con IChatClient: guida completa all’integrazione
#tech
spcnet.it/llm-chat-in-net-con-…
@informatica


LLM Chat in .NET con IChatClient: guida completa all’integrazione


Introduzione: l’astrazione che unifica i servizi LLM


Integrare Large Language Model in .NET ha sempre comportato un problema: ogni servizio (OpenAI, Azure OpenAI, Ollama, Claude) ha il proprio SDK con API diverse. IChatClient della libreria Microsoft.Extensions.AI risolve questo problema fornendo un’astrazione unificata. Scrivi una volta, cambia provider senza modificare la logica applicativa.

Cosa è IChatClient?


IChatClient è un’interfaccia che rappresenta un client per servizi AI con capacità chat. Astrae i dettagli di comunicazione con LLM remoti o locali, permettendo di:

  • Inviare e ricevere messaggi con contenuto multi-modale (testo, immagini, audio)
  • Ottenere risposte complete o streaming incrementale
  • Mantenere contesto di conversazione
  • Usare funzionalità avanzate come tool calling e structured outputs

L’interfaccia fa parte del pacchetto Microsoft.Extensions.AI.Abstractions, mentre Microsoft.Extensions.AI aggiunge middleware per telemetria, caching, function calling automatico e patterns familiari di dependency injection.

Setup iniziale con DI


Il punto di partenza è registrare il chat client nel contenitore di dependency injection. Ecco l’approccio canonico:

var builder = Host.CreateApplicationBuilder();
builder.Services.AddChatClient(
    new OllamaChatClient(new Uri("http://localhost:11434"), "llama3"));
var app = builder.Build();
var chatClient = app.Services.GetRequiredService<IChatClient>();

In questo esempio, usiamo Ollama con il modello llama3 locale. La bellezza di questa astrazione: la stessa registrazione funziona con OpenAI, Azure OpenAI o qualsiasi provider che implementi IChatClient. Il codice che usa il client rimane invariato.

Risposta semplice da un LLM


Il caso più basilare: inviare un prompt e ottenere una risposta:

var response = await chatClient.GetResponseAsync("What is .NET? Reply in 50 words max.");
Console.WriteLine(response.Message.Text);

Il metodo GetResponseAsync restituisce un oggetto ChatCompletion con il messaggio della risposta. Semplice, sincrono dal punto di vista dello sviluppatore (anche se asincrono sottostante).

Streaming per risposte lunghe


Per applicazioni interattive come chatbot, lo streaming è essenziale. Permette all’utente di vedere il testo apparire gradualmente, come in ChatGPT:

var chatResponse = "";
await foreach (var item in chatClient.GetStreamingResponseAsync(chatHistory))
{
    Console.Write(item.Text);
    chatResponse += item.Text;
}

Il metodo GetStreamingResponseAsync ritorna un IAsyncEnumerable<StreamingChatCompletionUpdate>. Ogni item contiene un frammento di testo che puoi visualizzare in tempo reale.

Conversazioni multi-turno con cronologia


Mantenere una conversazione richiede di raccogliere la storia dei messaggi. Ecco un loop interattivo completo:

var chatHistory = new List<ChatMessage>();
while (true)
{
    Console.Write("You: ");
    var userPrompt = Console.ReadLine();
    
    chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
    var chatResponse = "";
    Console.Write("Assistant: ");
    await foreach (var item in chatClient.GetStreamingResponseAsync(chatHistory))
    {
        Console.Write(item.Text);
        chatResponse += item.Text;
    }
    Console.WriteLine();
    
    chatHistory.Add(new ChatMessage(ChatRole.Assistant, chatResponse));
}

Ogni turno aggiunge alla lista: il user message, poi il response dell’assistant. Al turno successivo, passi l’intera cronologia a GetStreamingResponseAsync. L’LLM usa questo contesto per mantenere coerenza conversazionale.

Structured output: JSON tipizzato


Spesso vuoi che l’LLM restituisca dati strutturati (JSON). Puoi chiederlo esplicitamente nel prompt:

var prompt = $"""
You will receive an article and extract its metadata.
Respond ONLY with valid JSON following this format without any deviation.

{{
    "title": "...",
    "summary": "...",
    "keywords": ["...", "..."]
}}

Article:
{File.ReadAllText("article.md")}
""";

var response = await chatClient.GetResponseAsync(prompt);
var jsonText = response.Message.Text;
var metadata = JsonSerializer.Deserialize<ArticleMetadata>(jsonText);

L’approccio funziona, ma richiede gestione manuale di parsing e validazione. C’è una soluzione migliore.

Deserialization tipizzata con generics


La libreria Microsoft.Extensions.AI supporta il generic GetResponseAsync<T> che deserializza automaticamente il JSON in una classe C#:

public class ArticleMetadata
{
    public string Title { get; set; } = string.Empty;
    public string Summary { get; set; } = string.Empty;
    public string[] Keywords { get; set; } = [];
}

var metadata = await chatClient.GetResponseAsync<ArticleMetadata>(prompt);
Console.WriteLine($"Title: {metadata.Result.Title}");
Console.WriteLine($"Keywords: {string.Join(", ", metadata.Result.Keywords)}");

Questa API offre sicurezza in fase di compilazione e supporto IDE completo per il refactoring. Se cambi la struttura di ArticleMetadata, il compilatore avvisa i punti di utilizzo.

Portabilità tra provider: da locale a cloud


Una delle promesse di IChatClient è la portabilità. Ecco come implementare una strategia “local in dev, cloud in prod”:

// Avvio locale con Ollama
if (app.Environment.IsDevelopment())
{
    builder.Services.AddChatClient(
        new OllamaChatClient(new Uri("http://localhost:11434"), "mistral"));
}
else
{
    // Avvio cloud con Azure OpenAI
    builder.Services.AddChatClient(
        new AzureOpenAIClient(
            new Uri(azureEndpoint),
            new DefaultAzureCredential()).AsChatClient());
}

Il resto dell’applicazione non cambia. Chiede semplicemente IChatClient al DI container e riceve l’implementazione appropriata. Niente hardcoding, niente API specifiche sparse nel codice.

Middleware per telemetria e caching


Il pacchetto Microsoft.Extensions.AI fornisce middleware composabile. Uno uso comune è aggiungere OpenTelemetry:

var builder = Host.CreateApplicationBuilder();

// Registra OpenTelemetry
builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation());

// Registra il chat client con middleware di telemetria
builder.Services.AddChatClient(baseChatClient)
    .UseOpenTelemetry(builder.Services.BuildServiceProvider()
        .GetRequiredService<ILoggerFactory>());

Con questo setup, ogni chiamata a IChatClient genera automaticamente span OpenTelemetry tracciabili in strumenti come Application Insights o Jaeger. Nessuna strumentazione manuale necessaria.

Integrazione con il framework Agent


Il framework Agent di Microsoft costruisce sopra IChatClient aggiungendo astrazioni a livello agent: gestione persistente del contesto, tool calling automatico, prompt di sistema, API streaming pulita. Se usi agent, IChatClient rimane il cuore della comunicazione LLM.

Conclusione


IChatClient rappresenta una maturazione nell’integrazione LLM in .NET. Invece di accoppiare il codice a provider specifici, definisci un’astrazione e lascia che l’infrastruttura scelga l’implementazione. Lo streaming, la deserialization tipizzata, la composizione di middleware e la portabilità del provider diventano proprietà di prima classe dell’architettura.

Per qualsiasi team che integra LLM in .NET 2026, IChatClient è il fondamento su cui costruire. Richiede poca configurazione iniziale e ripaga con flessibilità architetturale a lungo termine.

Fonte originale: Microsoft.Extensions.AI libraries – .NET | Microsoft Learn e Working with LLMs in .NET using Microsoft.Extensions.AI


The Pirate Post ha ricondiviso questo.

Log Out @ Roma


27 aprile 2026 22:00:00 UTC - GMT
Apr 28
Log Out @ Roma
Mar 0:00 - 1:00 Europe/Rome
murre

Martedì 28 aprile torniamo con il Logout di TWC Roma, il ritrovo per tech workers che vogliono incontrarsi dopo il lavoro: un'occasione per socializzare, conoscersi, parlare del nostro lavoro e come organizzarci nei prossimi mesi!

Ci vediamo martedi 28 aprile, dalle 18:30 alle 21:30, alla Casa del Parco in Caffarella (ingressolargo Tacchi Venturi angolo Via Latina)

E' raggiungibile a piedi dalla Metro A fermata Colli Albani.

Unisciti ai gruppi Telegram Tech Workers Coalition !

Roma

t.me/twcroma

Italia

t.me/twcitagruppo

reshared this

The Pirate Post ha ricondiviso questo.

Der legendäre Urheberrechtsfall „Metall auf Metall“ geht in die letzte Runde. Der europäische Gerichtshof hat gerade nach weitläufiger Auffassung das Recht auf Remix und Sampling gestärkt. Jetzt muss noch der Bundesgerichtshof final entscheiden. netzpolitik.org/2026/eugh-prae…

reshared this

The Pirate 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.

Handala e la Cyber-Offensiva dell’Iran: 6 Petabyte distrutti e 149 Terabyte rubati dall’infrastruttura critica di Dubai
#CyberSecurity
insicurezzadigitale.com/handal…


Handala e la Cyber-Offensiva dell’Iran: 6 Petabyte distrutti e 149 Terabyte rubati dall’infrastruttura critica di Dubai


Si parla di:
Toggle


Il 12 aprile 2026, il gruppo Handala, collegato ai servizi di intelligence iraniani, ha annunciato il successo di un attacco di proporzioni senza precedenti contro l’infrastruttura critica degli Emirati Arabi Uniti. L’operazione ha mirato alla Dubai Courts Authority, Dubai Land Authority e Dubai Roads & Transport Authority, risultando nel furto di 149 terabyte di documenti classificati e nella distruzione di 6 petabyte di dati, rappresentando una chiara escalation nella campagna di cyberguerra iraniana.

Portata e natura dell’attacco


L’attacco coordinato dal gruppo Handala rappresenta una categoria di operazione cybernetiche rara: la combinazione di dati wiper (per la distruzione) e exfiltration (per il furto). La selezione degli obiettivi rivela una strategia sofisticata focalizzata su istituzioni critiche che controllano documenti di valore geopolitico, proprietà intellettuale sensibile e informazioni su infrastrutture strategiche.

L’enorme volume di dati distrutti (6 petabyte equivale a circa 6 milioni di gigabyte) suggerisce che gli attaccatori avevano accesso profondo alle infrastrutture di storage primarie e di backup, un indicativo di una lunga permanenza nei sistemi target senza essere rilevati. Il gruppo ha pubblicamente rivendicato l’operazione con comunicati dettagliati, indicando che l’obiettivo non era nascondere l’attacco bensì massimizzare l’impatto psicologico e geopolitico.

Attribution e legami con l’Iran


Sebbene Handala si presenta pubblicamente come collettivo di hacker hacktivist pro-resistenza, analisti di sicurezza e agenzie governative hanno stabilito con elevata confidenza il collegamento con il Ministero dell’Intelligence iraniano (MOIS). Il gruppo fa parte di quello che DomainTools Investigations ha descritto come “un ecosistema coordinato di cyber-influenza” che include anche i gruppi Karma/KarmaBelow80 e Homeland Justice.

Questa struttura a facciata permette all’Iran di mantenere una negazione plausibile mentre conduce operazioni cybernetiche offensive contro i nemici geopolitici e gli alleati regionali. La scelta di Dubai specificamente è significativa: gli EAU hanno in anni recenti normalizzato relazioni con Israele e hanno aumentato partnership strategiche con Stati Uniti e alleati occidentali, rendendoli un bersaglio prioritario per la rappresaglia iraniana.

Motivazione dichiarata e contesto geopolitico


Nel comunicato di rivendicazione, Handala ha caratterizzato l’operazione come risposta al “tradimento eclatante” dei leader degli Emirati, tracciando paralleli con figure storiche infami come Jeffrey Epstein. Questa retorica è coerente con la narrativa iraniana che dipinge gli EAU come traditori della causa palestinese per le relazioni normalizzate con Israele. Tuttavia, gli esperti di sicurezza sottolineano che la motivazione dichiarata funziona principalmente come cover narrativo per un’operazione principalmente geopolitica e economica.

Dati dell'Operazione:
- Data: 12 Aprile 2026
- Bersagli: 3 istituzioni critiche di Dubai
- Dati Rubati: 149 Terabyte (TB) di documenti classificati
- Dati Distrutti: 6 Petabyte (PB) = 6.000 Terabyte
- Attribution: MOIS Iran via Handala/Karma/Homeland Justice
- Reivindicazione: Pubblica tramite comunicati del gruppo

Implicazioni di sicurezza e defensive posture


L’attacco Handala rivela vulnerabilità critiche nelle infrastrutture di protezione dei dati dei servizi pubblici. La capacità di distruggere 6 petabyte di dati suggerisce che gli attaccatori avevano accesso non solo ai sistemi primari ma anche ai backup, compromettendo le fondamentali pratiche di business continuity e disaster recovery. I responsabili della sicurezza negli Emirati e nei governi alleati devono riconsiderare gli assunti di base sulla separazione geografica, logica e procedurale dei backup critici.

La scala dell’exfiltration (149 TB) suggerisce inoltre che l’attacco non è stato una penetrazione improvvisa ma il risultato di un accesso sostenuto nel tempo. Durante il dwell time (periodo di permanenza), gli attaccatori hanno avuto il tempo di identificare, localizzare e esfiltrare i dati di massimo valore geopolitico prima di eseguire le operazioni di wiper.

Raccomandazioni di difesa


  • Implementare una strategia di backup geograficamente distribuita con separazione logica e procedurale dai sistemi primari
  • Stabilire un sistema di detection comportamentale focalizzato su volume-based anomalies (movimentazione anomala di dati in massa)
  • Implementare encryption at-rest per tutti i backup critici, con gestione chiavi separata dai sistemi operativi
  • Eseguire un threat hunt specificamente focalizzato su indicatori di accesso persistente da attori iraniani
  • Aumentare la collaborazione tra agenzie governative regionali per identificare indicatori comuni di compromesso
  • Sviluppare incident response protocols specifici per scenari di wiper-plus-exfiltration

L’operazione Handala rappresenta un’ulteriore escalation nella campagna iraniana di cyberguerra regionale. Con la Corea del Nord che diversifica gli attacchi verso il settore DeFi e l’Iran che consolida la sua capacità offensiva contro lo stato regionale, il 2026 è emergendo come anno critico di ricalibramento della strategia di cyberwarfare a livello globale.


The Pirate Post ha ricondiviso questo.

🎁 EU-Kommissionspräsidentin Ursula von der Leyen (CDU) hat heute Mittag die Alterskontroll-App der EU für fertig erklärt. Sie soll auf jedem Gerät laufen und komplett anonym sein.

👨‍💻 Es gibt da nur ein paar Probleme.

🎉 Die App ist noch nicht "fertig", läuft nicht auf "jedem" Gerät und setzt auf Pseudonyme. Außerdem bringt sie Handyzwang und Gesichtsscans.

Aber lest selbst.

netzpolitik.org/2026/gesichtss…

The Pirate Post ha ricondiviso questo.

Mit einer Handy-App für iOS und Android sollen Menschen in der EU künftig ihr Alter gegenüber Plattformen nachweisen. Doch der Nutzen zum Schutz von Kindern und Jugendlichen ist fraglich. Nutzende sollen zudem ihr Gesicht scannen lassen, fasst @sebmeineck zusammen.

netzpolitik.org/2026/gesichtss…

The Pirate Post ha ricondiviso questo.

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

Agent Skills in .NET: tre paradigmi di composizione per gli agenti AI
#tech
spcnet.it/agent-skills-in-net-…
@informatica


Agent Skills in .NET: tre paradigmi di composizione per gli agenti AI


Introduzione: L’evoluzione dei skill negli agent .NET


Gli agent AI richiedono un modo flessibile e modulare di estendere le loro capacità: questo è il ruolo dei skill. Con il framework Agent di Microsoft per .NET, gli sviluppatori dispongono di tre paradigmi complementari per definire e comporre skill, permettendo ai team di scegliere l’approccio più adatto al loro contesto.

I tre paradigmi per creare skill

1. Skill basati su file (File-Based Skills)


L’approccio più dichiarativo parte da una struttura di directory semplice. Ogni skill è organizzato come una cartella contenente:

  • Un file SKILL.md con metadati nel frontmatter YAML
  • Una sottocartella opzionale scripts/ con il codice eseguibile
  • Una sottocartella opzionale references/ con documentazione di supporto

Questo paradigma è particolarmente vantaggioso per i team che vogliono gestire i skill come assets indipendenti dentro un repository condiviso. Il caricamento è automatico: l’agent scopre e carica i skill quando l’utente ne fa richiesta.

Ecco come si registra un provider file-based:

var skillsProvider = new AgentSkillsProvider(
    Path.Combine(AppContext.BaseDirectory, "skills"),
    SubprocessScriptRunner.RunAsync);

Il vantaggio decisivo è la separazione tra definizione del skill e implementazione. Non è necessario riconfigurare il codice C# per aggiungere nuovi skill; basta creare una nuova directory.

2. Skill basati su classe (Class-Based Skills)


Per chi preferisce la sicurezza dei tipi e il supporto IDE completo, gli skill basati su classe offrono un’alternativa fortemente tipizzata. Si eredita da AgentClassSkill<T> e si usano attributi di reflection per marcare le risorse e gli script:

public sealed class BenefitsEnrollmentSkill : AgentClassSkill<BenefitsEnrollmentSkill>
{
    [AgentSkillResource("available-plans")]
    public string AvailablePlans => "Plan A, Plan B, Plan C...";
    
    [AgentSkillScript("enroll")]
    private static string Enroll(string employeeId, string planCode)
    {
        // Logica di iscrizione
        return $"Iscrizione di {employeeId} al piano {planCode} completata";
    }
}

Questo approccio è ideale per skill complessi che richiedono logica C# sofisticata. Gli attributi [AgentSkillResource] e [AgentSkillScript] permettono al framework di scoprire automaticamente quali metodi e proprietà esporre all’agent.

Un vantaggio cruciale: i team possono sviluppare e distribuire skill indipendentemente come pacchetti NuGet, mantenendo il proprio ciclo di rilascio e permettendo il riuso tra progetti.

3. Skill inline (Inline Code-Defined Skills)


Il terzo paradigma è il più flessibile: skill definiti a runtime usando AgentInlineSkill. Sono perfetti per bridge temporanei, skill generati dinamicamente o implementazioni condizionate dallo stato dell’applicazione:

var timeOffSkill = new AgentInlineSkill(
    name: "time-off-balance",
    description: "Calcola i giorni di ferie e malattia rimanenti per un dipendente...")
    .AddScript("calculate-balance", (employeeId, leaveType) => 
    {
        // Logica runtime
        return $"Giorni rimanenti: {remaining}";
    });

I skill inline supportano anche risorse dinamiche:
.AddResource("policies", () => PolicyRepository.GetActivePolicies());

Questa capacità di aggiungere risorse come delegate è cruciale: le politiche possono aggiornarsi senza ricompilare l’applicazione.

Composizione flessibile con AgentSkillsProviderBuilder


La vera potenza del design emerge quando si combinano tutti e tre i paradigmi in un’unica applicazione. Il builder pattern permette una composizione dichiarativa:

var skillsProvider = new AgentSkillsProviderBuilder()
    .UseFileSkill(Path.Combine(AppContext.BaseDirectory, "skills"))
    .UseSkill(new BenefitsEnrollmentSkill())
    .UseSkill(timeOffSkill)
    .UseFileScriptRunner(SubprocessScriptRunner.RunAsync)
    .Build();

In questa configurazione:
  • I skill nel filesystem vengono caricati e resi disponibili
  • La classe BenefitsEnrollmentSkill registra i suoi metodi annotati
  • Lo skill inline timeOffSkill aggiunge capacità runtime

Il framework astrae completamente il “come” carica ogni tipo di skill; l’agent li vede come una superficie unificata.

Funzionalità avanzate

Approvazione degli script


Per ambienti ad alto rischio, è possibile richiedere una revisione umana prima dell’esecuzione:

.UseScriptApproval(true)

In questo caso, l’agent formula il comando ma non lo esegue autonomamente; un operatore deve approvare.

Filtraggio di sicurezza


Quando si condividono directory di skill tra team, il filtraggio garantisce che solo gli skill approvati siano disponibili:

.UseFilter(skill => approvedSkills.Contains(skill.Frontmatter.Name))

Iniezione di dipendenze


I metodi degli skill possono ricevere IServiceProvider come parametro. Questo consente l’accesso a servizi registrati nel contenitore DI, indipendentemente dal paradigma di skill:

[AgentSkillScript("send-notification")]
private static string SendNotification(string userId, IServiceProvider services)
{
    var emailService = services.GetRequiredService<IEmailService>();
    return emailService.SendAsync(userId, "Notification");
}

Conclusione


Il design tripartito dei skill in .NET Agent Framework non è una complicazione: è un’architettura di composizione che rispetta gli usi diversi. Gli skill basati su file servono la semplicità e la dinamica; quelli basati su classe offrono sicurezza e riusabilità via NuGet; quelli inline forniscono agilità runtime.

Per i team che costruiscono sistemi agent complessi, questa flessibilità è fondamentale. Permette di iniziare in semplicità (skill inline), evolversi verso la modularità (skill basati su classe in NuGet) e mantenere agilità operativa (skill file-based per aggiustamenti dinamici) — tutto nello stesso agent, senza compromessi architetturali.

Fonte originale: Agent Skills in .NET: Three Ways to Author, One Provider to Run Them — Microsoft Agent Framework Blog


The Pirate Post ha ricondiviso questo.

Soziale Netzwerke und ihre auf Überwachung und Personalisierung basierenden Geschäftsmodelle schaffen Anreize, die letztlich die Demokratie gefährden. Für die EU ist es höchste Zeit, dem etwas entgegenzusetzen, fordert eine umfassende Studie der Forschungsabteilung der EU-Kommission. netzpolitik.org/2026/eu-forsch…

reshared this

The Pirate Post ha ricondiviso questo.

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

🩷 We can only provide all these high-quality summaries because of our brilliant ✨volunteer Country Reporters✨ working in the background. To highlight this work and all our contributors, we are going to present one of them periodically.

Today: Lígia Lage Vieira

reshared this

The Pirate Post ha ricondiviso questo.

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

frei0r 3.0.0 dropped 🎛

Video editors, this one’s for you:
✔️ Fewer crashes
✔️ Smoother effect parameters
✔️ Better color handling
✔️ Long-term stability in your video editor

Upgrade for peace of mind during exports.
🔗 frei0r.dyne.org

#video #videoEditing #VJ #FX @art

The Pirate Post reshared this.

The Pirate Post è una rassegna informativa per chi vuole conoscere le iniziative dei Pirati del mondo.

Friendica mi consente di impostare a ricondivisione automatica di alcuni account di area #pirata.
Questo non mi rende un "bot", ma sicuramente può dare fastidio a qualcuno. Fortunatamente esiste il silenziamento!
La selezione che effettuo comunque è abbastanza stringente e nel tempo mi preoccupo di effettuare qualche accorgimento per rendere la mia timeline meno noiosa. I miei follower talvolta mi fanno notare che alcuni contenuti non sono più in linea con il tema principale del mio account e mi è capitato di accogliere alcune di queste richieste e di rimuovere la ricondivisione automatica da alcuni fonti.

The Pirate Post is a review of information for those who want to know the initiatives of the Pirates of the world

Friendica allows me to set up automatic resharing for some #pirate accounts.
This doesn't make me a "bot," but it can definitely annoy some people. Fortunately, there's a mute option!
My selection is quite strict, and over time, I've made some adjustments to make my timeline less boring. My followers sometimes point out that certain content no longer aligns with the main theme of my account, and I've granted some of these requests and removed automatic resharing from some sources.