Vai al contenuto principale

#ia

[🧠 La gente tende ad ammettere meno i suoi limiti quando usa l'IA e a fidarsi della macchina](https://www.theregister.com/ai-and-ml/2026/07/19/using-a

Altro...

🧠 La gente tende ad ammettere meno i suoi limiti quando usa l'IA e a fidarsi della macchina

Chiedere alle persone dettagli di film: questo è stato l'obiettivo di uno studio per capire quanto il comportamento dell'essere umano vari quando ha a disposizione l'IA per farsi aiutare.

Lo studio ha visto coinvolti due gruppi: il primo poteva chiedere una mano all'IA per rispondere alle domande, l'altro invece poteva usare soltanto la propria testa. Inoltre, le domande e il modello di IA coinvolto erano stati selezionati per far in modo che la macchina avrebbe spesso avuto difficoltà nel rispondere correttamente (a insaputa dei gruppi).

Il "gruppo IA" ha ammesso di non sapere la risposta nel 3% dei casi, contro il 44% di chi l'IA non poteva usarla. Tuttavia, è stato il gruppo senza IA a dare più risposte corrette: il 27% delle loro risposte erano esatte, contro il 9% di chi era affiancato dall'IA. La gente si è fidata delle allucinazioni della macchina, forse ingannata dall'apparente coerenza delle risposte fornite da questa.

Non solo: chi aveva usato l'IA ha riportato un livello di fiducia nelle proprie risposte del 76%, contro il 30% dell'altro gruppo. In altre parole, la loro sicurezza era più che raddoppiata, nonostante la correttezza fosse nettamente diminuita.

Si è poi notato come, mettendo un incentivo economico sulle risposte corrette, l'ammissione di ignoranza di chi usa l'IA è salita dal 3 all'8%, mentre la correttezza dal 9 al 16% - suggerendo che l'IA non inibisce tanto la capacità di pensiero, quanto la volontà di pensare; e che un incentivo ha comunque un effetto limitato se si paragonano le percentuali con quelle del gruppo no IA. In generale, l'IA è stata usata meno quando ci sono stati soldi in ballo.

https://www.theregister.com/ai-and-ml/2026/07/19/using-ai-makes-people-less-likely-to-admit-they-dont-know-something/5274567

#notizia #ia #psiche

@eticadigitale@feddit.it

#ia #notizia #psiche

0 0 3

Un agente AI è un sistema distribuito, non un chatbot: pattern di durable orchestration in .NET

Negli ultimi mesi molti team hanno scoperto a proprie spese che il problema più grande di un agente AI in produzione non è la qualità del prompt, ma l

Altro...

Negli ultimi mesi molti team hanno scoperto a proprie spese che il problema più grande di un agente AI in produzione non è la qualità del prompt, ma la sua affidabilità operativa. Un articolo recente su DZone, “Your AI Agent Is a Distributed System, Not a Chatbot”, mette a fuoco un punto che chi progetta sistemi backend conosce bene da anni: se un componente deve sopravvivere a crash, timeout, retry e attese umane di ore, non puoi trattarlo come una semplice chiamata sincrona a un modello. Devi trattarlo come un sistema distribuito, con tutto ciò che questo comporta: stato persistente, checkpoint, idempotenza e recovery.

In questo articolo riprendiamo quei concetti e li caliamo nella pratica con .NET, mostrando come #Azure Durable Functions (o alternative come Temporal) permettano di costruire agenti AI multi-step che non perdono lo stato quando qualcosa va storto — cosa che, in produzione, prima o poi succede sempre.

Perché un chatbot stateless non bastaUn chatbot classico è un ciclo request/response: l’utente scrive, il modello risponde, fine. Un agente AI enterprise, invece, tipicamente deve:

orchestrare più chiamate a modelli e strumenti in sequenza o in parallelo;

interrogare sistemi esterni (CRM, ticketing, knowledge base, database);

attendere l’approvazione di un umano, che può richiedere minuti oppure ore;

gestire fallimenti parziali senza dover ripartire da zero;

garantire che un’azione con effetti collaterali (un rimborso, un invio email, una scrittura su un sistema esterno) non venga eseguita due volte per colpa di un retry.

Nessuno di questi requisiti è nuovo: sono gli stessi problemi che i sistemi distribuiti risolvono da decenni con pattern come saga, checkpointing e idempotency key. La differenza è che oggi il “servizio downstream” spesso è un LLM, e la latenza dominante non è più quella di rete, ma quella dell’attesa umana.

Durable orchestration: lo stato che sopravvive al crashIl pattern architetturale proposto è un runtime di orchestrazione durevole, che mantiene lo stato del workflow indipendentemente dal ciclo di vita del processo che lo esegue. In .NET, l’implementazione più diretta è Azure Durable Functions, che introduce tre concetti chiave:

Orchestrator function: decide “cosa succede dopo”, applica le retry policy e coordina le chiamate, ma non esegue lavoro con effetti collaterali direttamente;

Activity function: esegue il lavoro reale (chiamata al modello, query, side effect) ed è il livello dove si applica l’idempotenza;

Checkpointing automatico: dopo ogni await, il runtime salva lo stato dell’orchestrazione, così un crash del processo non fa perdere il progresso già fatto.

Un’alternativa nota, citata anche nell’articolo originale, è Temporal, che applica lo stesso principio con un modello di programmazione simile ma un runtime a sé stante, spesso preferito in contesti multi-linguaggio o #Kubernetes-native.

Il pattern fan-out/fan-in per agenti multipliQuando un task richiede il contributo di più agenti specializzati (per esempio: un agente diagnostico, uno di ricerca sulla knowledge base, uno che consulta lo storico dei casi e uno che verifica le policy aziendali), il pattern corretto è il fan-out/fan-in: l’orchestratore lancia tutte le attività in parallelo e aggrega i risultati solo quando sono tutte terminate.

Ecco un esempio realistico in C# con il modello isolato di Azure Functions, ispirato agli esempi ufficiali Microsoft:

[Function("SupportInvestigationOrchestrator")]
public static async Task<InvestigationResult> Run(
[OrchestrationTrigger] TaskOrchestrationContext context)
{
var caseId = context.GetInput();

// Fan-out: 4 agenti specializzati lanciati in parallelo
var diagnosticTask = context.CallActivityAsync<AgentFinding>(
    "RunDiagnosticAgent", caseId);
var knowledgeTask = context.CallActivityAsync<AgentFinding>(
    "RunKnowledgeSearchAgent", caseId);
var historyTask = context.CallActivityAsync<AgentFinding>(
    "RunHistoricalCaseAgent", caseId);
var policyTask = context.CallActivityAsync<AgentFinding>(
    "RunPolicyAgent", caseId);

// Fan-in: si attende che tutti i task completino
AgentFinding[] findings = await Task.WhenAll(
    diagnosticTask, knowledgeTask, historyTask, policyTask);

// Sintesi della raccomandazione finale
var recommendation = await context.CallActivityAsync<Recommendation>(
    "SynthesizeRecommendation", findings);

return new InvestigationResult(caseId, findings, recommendation);

}Il vantaggio rispetto a un semplice Task.WhenAll in un servizio stateless è che, se il processo host crasha mentre due agenti su quattro hanno già risposto, l’orchestrazione riparte dal checkpoint e non richiama gli agenti già completati.

Human-in-the-loop senza tenere aperta la computeIl collo di bottiglia più comune non è il modello, ma l’attesa di un’approvazione umana. Un workflow che tenesse una funzione serverless “in ascolto” per ore sarebbe insostenibile in termini di costo e di timeout. Il pattern corretto è sospendere l’orchestrazione in attesa di un evento esterno:

[Function("SupportInvestigationOrchestrator")]
public static async Task<InvestigationResult> Run(
[OrchestrationTrigger] TaskOrchestrationContext context)
{
// ... fan-out/fan-in come sopra ...

await context.CallActivityAsync("NotifyHumanReviewer", recommendation);

// Il workflow si sospende senza consumare risorse compute
// fino a quando l'evento non arriva, anche dopo diverse ore
var decision = await context.WaitForExternalEvent<HumanReviewDecision>(
    "HumanReviewCompleted");

if (decision.Approved)
{
    await context.CallActivityAsync("ApplyResolution", recommendation);
}

return new InvestigationResult(caseId, findings, recommendation, decision);

}L’evento viene “consegnato” all’orchestrazione in pausa tramite una chiamata separata (per esempio da una Function HTTP-triggered collegata a un pulsante “Approva” nella UI), e il runtime si occupa di riprendere l’esecuzione esattamente dal punto in cui era stata sospesa.

Idempotenza: il vero rischio nascostoUn runtime durevole garantisce tipicamente semantica at-least-once: dopo un crash, un’attività può essere rieseguita. Questo va benissimo per operazioni pure (una query di lettura), ma è pericoloso per operazioni con side effect (un rimborso, un invio email, una scrittura irreversibile). Il momento critico è il cosiddetto crash window: l’intervallo tra il completamento effettivo di un’azione e il salvataggio del suo checkpoint.

La soluzione è associare a ogni operazione critica una idempotency key deterministica, così che una riesecuzione accidentale venga riconosciuta e ignorata a livello applicativo:

[Function("ApplyGoodwillRefund")]
public static async Task ApplyGoodwillRefund(
[ActivityTrigger] RefundRequest request)
{
string idempotencyKey = $"{request.CaseId}:goodwill-refund";

if (await _paymentService.WasAlreadyProcessedAsync(idempotencyKey))
{
    return; // operazione già eseguita, nessun effetto collaterale duplicato
}

await _paymentService.ProcessRefundAsync(request, idempotencyKey);

}Questo pattern, ben noto a chi lavora con gateway di pagamento, va applicato sistematicamente a ogni activity che tocchi sistemi esterni non idempotenti per natura.

Successo parziale, non tutto-o-nienteSe uno dei quattro agenti fallisce (per esempio, il servizio di knowledge search va in timeout), il sistema non dovrebbe far fallire l’intera indagine. Meglio trattare i risultati come esiti strutturati, distinguendo tra “successo”, “fallito” e “degradato”, e permettere che la sintesi finale proceda comunque, segnalando esplicitamente quali fonti mancano:

public record AgentFinding(
string AgentName,
AgentStatus Status, // Success, Failed, Degraded
string? Result,
string? FailureReason);Questo approccio “graceful degradation” è preferibile a un fallimento totale che obbliga a rieseguire da capo un’indagine costosa in termini di tempo e token consumati.

Osservabilità come requisito di prodottoIn un sistema dove un’indagine può durare ore e coinvolgere quattro o più agenti, la tracciabilità non è un dettaglio tecnico: è parte dell’esperienza utente e, in molti contesti regolamentati, un requisito di audit. Vale la pena tracciare sistematicamente:

workflow instance ID, correlation ID e case ID;

lo stage corrente e la durata di ogni singolo agente;

il numero di retry e il motivo di ogni fallimento;

la latenza di revisione umana (spesso il fattore dominante);

la tracciabilità delle evidenze usate per la raccomandazione finale, per scopi di audit.

ConclusioneIl messaggio di fondo è semplice ma spesso trascurato: il workflow conta più del prompt. Un agente AI ben progettato non è quello con il prompt più raffinato, ma quello costruito su un runtime capace di sopravvivere a crash, gestire attese umane di ore senza sprecare risorse, ed evitare effetti collaterali duplicati. Per chi lavora nello stack .NET, Azure Durable Functions offre oggi gli strumenti necessari per applicare questi pattern senza dover reinventare un motore di orchestrazione da zero; per contesti poliglotta o già containerizzati, Temporal resta un’alternativa solida con la stessa filosofia.

Fonte originale: “Your AI Agent Is a Distributed System, Not a Chatbot” su DZone.

#ai #ia #microsoft #c #net #azure #dev

0 0 1

5 controlli infrastrutturali per mettere in sicurezza gli agenti AI (oltre il prompt)

Quanti team stanno collegando agenti AI a Slack, a un’interfaccia #web o a server #MCP proteggendo l’accesso solo

Altro...

Quanti team stanno collegando agenti AI a Slack, a un’interfaccia #web o a server #MCP proteggendo l’accesso solo con un prompt di sistema ben scritto? Secondo un’#analisi pubblicata su DZone e basata su findings del Red Team di #NVIDIA, è proprio questo l’errore architetturale più diffuso nelle implementazioni enterprise di agenti AI: “i guardrail basati sul prompt falliscono sotto pressione avversaria”. Un attaccante sufficientemente motivato può camuffare attività malevole da comportamenti legittimi, scalare privilegi gradualmente o nascondere esecuzione di codice dentro interazioni apparentemente normali.

Il punto chiave, riassunto efficacemente dall’articolo originale, è questo: il modello non è il punto di applicazione della sicurezza, è la cosa che va difesa. Va trattato come qualsiasi altro componente non fidato della vostra infrastruttura — proprio come fareste con un processo che esegue codice arbitrario ricevuto da input esterni. In questo articolo ripercorriamo i cinque controlli infrastrutturali proposti, con esempi pratici applicabili su #Kubernetes e nello stack Microsoft.

  1. Identità e propagazione dell’autenticazioneIl primo errore comune è usare credenziali condivise per l’agente, indipendentemente da chi lo stia effettivamente invocando (via Slack, web UI o endpoint MCP). Questo rende impossibile distinguere un’azione legittima da un abuso e complica ogni audit successivo.

La soluzione è propagare l’identità dell’utente umano fino ai sistemi a valle, invece di far agire l’agente con un account di servizio onnipotente. Lo standard di riferimento è OAuth 2.0 Token Exchange (RFC 8693), che permette di scambiare il token dell’utente con un token downstream a scope ridotto e vita breve:

POST /oauth2/token HTTP/1.1
Host: identity.contoso.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&subject_token={USER_TOKEN}
&subject_token_type=urn:ietf:params:oauth:token-type:access_token
&requested_token_type=urn:ietf:params:oauth:token-type:access_token
&audience=ticketing-api
&scope=tickets.read tickets.commentIl token risultante è specifico per l’audience richiesta (in questo caso l’API di ticketing), ha uno scope minimo e una scadenza breve. Ogni chiamata a valle porta con sé l’identità originale dell’utente, non quella generica dell’agente: questo è ciò che rende possibile un audit trail affidabile.

  1. Presupporre l’esecuzione di codice e limitarne gli effettiUn agente con accesso a strumenti di code execution va trattato esattamente come un processo che esegue input non fidato, perché di fatto è quello che è. I controlli minimi da applicare a livello di #container:

filesystem di root read-only;

noexec su tutti i mount scrivibili, per impedire l’esecuzione di binari scaricati a runtime;

drop di tutte le capability #Linux non strettamente necessarie;

configurazione dell’agente montata come read-only da un mount point separato, così che l’agente stesso non possa alterare la propria configurazione;

allowlist esplicita dei binari eseguibili.

Un esempio di securityContext Kubernetes coerente con questi principi:

securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
volumeMounts:

  • name: tmp
    mountPath: /tmp

    mount separato per lo storage scrivibile, con noexec applicato a livello di nodo

  • name: agent-config
    mountPath: /etc/agent
    readOnly: true3. Egress default-denyUn agente compromesso o manipolato tramite prompt injection che possa raggiungere qualunque host su Internet è un rischio enorme: esfiltrazione dati, comando e controllo, o accesso agli endpoint di metadata del cloud provider (il classico 169.254.169.254, spesso usato per rubare credenziali IAM). La difesa è una NetworkPolicy Kubernetes default-deny in uscita, con eccezioni esplicite solo verso ciò che serve realmente:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ai-agent-default-deny-egress
namespace: agents
spec:
podSelector:
matchLabels:
app: ai-agent
policyTypes:
- Egress
egress:
# consente solo DNS e il proxy autenticato interno
- to:
- namespaceSelector: {}
ports:
- protocol: UDP
port: 53
- to:
- podSelector:
matchLabels:
app: egress-proxy
ports:
- protocol: TCP
port: 8080

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: block-cloud-metadata
namespace: agents
spec:
podSelector:
matchLabels:
app: ai-agent
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 169.254.169.254/32Le connessioni realmente necessarie devono passare attraverso un proxy autenticante con allowlist basata su FQDN, con logging completo di ogni richiesta e dell’identità utente associata: in questo modo ogni chiamata in uscita è tracciabile e limitata a destinazioni note.

  1. Nessun segreto persistenteIniettare segreti tramite variabili d’ambiente, file di configurazione o, peggio, direttamente nel context window del modello è una pratica rischiosa: un agente che legge il proprio ambiente, o che viene indotto a farlo tramite prompt injection, può esfiltrare quei segreti con facilità.

L’approccio consigliato è il token brokering per singolo task, con TTL molto brevi (minuti, non ore) e revoca esplicita al completamento del task, non solo alla scadenza naturale:

ogni task riceve un token appena sufficiente per l’operazione richiesta;

il token viene revocato non appena il task termina, indipendentemente dalla sua scadenza nominale;

ogni emissione di segreto viene registrata con l’identità dell’utente umano che ha originato la richiesta.

Strumenti come Azure Key Vault (con identità gestite e token a vita breve) o soluzioni dedicate di secret brokering per workload agentic vanno preferiti rispetto a qualunque forma di credential injection statica.

  1. Controllo della supply chain dei pacchettiUn agente con capacità di installare pacchetti (npm, pip, NuGet) durante l’esecuzione è una superficie di attacco enorme, soprattutto se può installare da repository VCS arbitrari o eseguire script di post-install non controllati. I controlli minimi:

uso di repository proxy interni (Artifactory o equivalente) come unica fonte consentita;

blocco esplicito delle installazioni da URL o VCS diretti (es. pip install git+https://...);

abilitazione di ignore-scripts=true per prevenire l’esecuzione di script post-install, un vettore di attacco noto nell’ecosistema npm;

verifica dell’hash dei pacchetti installati.

.npmrc per l'ambiente dell'agente

registry=https://artifactory.contoso.com/api/npm/npm-proxy/
ignore-scripts=true
audit=trueValidare i controlli con test automatici, non con documentazioneIl consiglio più pratico dell’articolo è forse questo: questi cinque controlli vanno implementati come test case automatici nella pipeline CI/CD, non lasciati a una checklist di sicurezza scritta a mano. Alcuni esempi di assertion da includere:

un chiamante non autenticato deve essere rifiutato;

un tentativo di scrittura su file di configurazione nascosti (dotfile) deve fallire;

ogni connessione in uscita non allowlisted deve essere bloccata e loggata;

nessun segreto deve essere presente nelle variabili d’ambiente del processo agente;

l’endpoint di metadata cloud deve risultare irraggiungibile;

un’installazione di pacchetto da VCS diretto deve essere bloccata dal proxy.

ConclusioneGli agenti AI non introducono nuovi principi di sicurezza: richiedono di applicare con rigore quelli che già conosciamo — least privilege, isolamento, gestione dei segreti a vita breve, egress controllato — a un tipo di workload che, per sua natura, esegue codice e prende decisioni sulla base di input non completamente prevedibili. Chi gestisce infrastrutture Kubernetes o Azure ha già gli strumenti per implementare questi controlli; il passo mancante, spesso, è semplicemente la decisione di applicarli con la stessa serietà riservata a qualunque altro workload che esegue codice non fidato.

Fonte originale: “5 Infrastructure Controls for Securing AI Agents” su DZone.

#sicurezza #ai #ia #devops #azure #kubernetes

0 0 1

per ‘la finestra di antonio syxty’: autorialità e intelligenza artificiale, con antonio pavolini ed elisa davoglio

https://slowforward.net/2026/08/1

Altro...

per ‘la finestra di antonio syxty’: autorialità e intelligenza artificiale, con antonio pavolini ed elisa davoglio

https://slowforward.net/2026/08/18/per-la-finestra-di-antonio-syxty-autorialita-e-intelligenza-artificiale-con-antonio-pavolini-ed-elisa-davoglio/

#AI #IA

#ai #ia

0 0 0

Je le vois mourir le monde autour de moi.
On me parle d' #IA , de conquête de l'espace, de #Dubaï , d' #argent , ... et je pleure mon impuissance face

Altro...

Je le vois mourir le monde autour de moi.
On me parle d' #IA , de conquête de l'espace, de #Dubaï , d' #argent , ... et je pleure mon impuissance face à notre inaction et notre individualisme.

Pourquoi devrais-je accepter de laisser mourir la vie car une poignée d'individus rêvent d'être le plus riche, de vivre dans un bunker avec plein d'Android bien docile ?

Pourquoi ne parvenons nous pas à nous sauver de ce suicide ?

#photography #portrait #ecology #economy #climate #life #business #love

#ia #photography #ecology #portrait #climate #love #life #dubai #business #economy #argent

0 4 1

Ho fatto analizzare all'ultimo DeepSeek la mia mod Luanti più grossa: più del 50% delle segnalazioni non erano corrette.

Analisi del fenomeno e due r

Altro...

Ho fatto analizzare all'ultimo DeepSeek la mia mod Luanti più grossa: più del 50% delle segnalazioni non erano corrette.

Analisi del fenomeno e due riflessioni sulla millantata sostituzione dell'essere umano

https://zughy.bearblog.dev/io-ia-breve-storia-revisione/

@aitech@feddit.it
#IA #Luanti

#ia #luanti

0 2 1

"AI chatbots are the ‘wild west’ for violence against women and girls"

:

https://observer.co.uk/news/science-technology/article/ai-chatbots-are-the-

Altro...

"AI chatbots are the ‘wild west’ for violence against women and girls"

:

https://observer.co.uk/news/science-technology/article/ai-chatbots-are-the-wild-west-for-violent-imagery-of-women-and-girls

#AI #IA #chatbots #violence #genderbasedviolence #theobserver #patriciaclarke #women #girls

#ai #ia #girls #chatbots #violence #genderbasedviolence #theobserver #patriciaclarke #women

0 0 0

CVE-2026-9198: Langflow sotto attacco attivo, ecco perché aggiornare subito

Langflow sotto attacco attivo: cosa sta succedendoIl 4 agosto 2026 la CISA (Cybersecurity and Infrastructure Security Agency statunitense) ha aggiunto

Altro...

Langflow sotto attacco attivo: cosa sta succedendoIl 4 agosto 2026 la CISA (Cybersecurity and Infrastructure Security Agency statunitense) ha aggiunto #CVE-2026-9198 al proprio Known Exploited Vulnerabilities Catalog, la lista delle vulnerabilità sfruttate attivamente in the wild. Il bersaglio è Langflow, il framework open source low-code per costruire applicazioni AI, agenti e pipeline RAG (Retrieval-Augmented Generation), oggi sviluppato e supportato da IBM dopo l’acquisizione di DataStax nel 2025.

Per chi gestisce infrastrutture IT, anche solo per supportare i team che sperimentano con l’AI generativa, questa non è una notizia da ignorare: si tratta di una remote code execution non autenticata, con CVSS 9.8, su un prodotto che viene spesso esposto in rete per comodità di accesso ai team di sviluppo.

Il dettaglio tecnico della vulnerabilitàCVE-2026-9198 nasce dalla combinazione di due endpoint API di Langflow che, singolarmente, sarebbero problemi di severità minore ma che, incatenati, diventano un disastro:

/api/v1/auto_login — su un’installazione con la configurazione di default, questo endpoint rilascia un bearer token con privilegi SUPERUSER a qualsiasi chiamante di rete, senza richiedere credenziali.

/api/v1/validate/code — accetta codice Python fornito dal chiamante e lo esegue tramite la funzione exec(), pensata per validare gli snippet usati nei flow visuali.

Un attaccante non autenticato può quindi ottenere il token dal primo endpoint e usarlo immediatamente per eseguire codice Python arbitrario sul secondo, ottenendo di fatto l’esecuzione di comandi con i privilegi del processo Langflow. Non serve alcuna interazione dell’utente, alcun account preesistente, né credenziali valide: è sufficiente che l’istanza sia raggiungibile in rete.

Perché la finestra di rischio è così strettaA fine luglio 2026 sono comparsi online exploit proof-of-concept pienamente funzionanti, con istruzioni dettagliate per la weaponizzazione. Non è la prima volta che Langflow finisce sotto i riflettori: nei mesi precedenti altre vulnerabilità della piattaforma sono state sfruttate per distribuire miner di Monero e, più recentemente, in campagne di post-exploitation orchestrate da agenti AI autonomi. Uno di questi casi, documentato da Palo Alto Networks Unit 42, descrive un attore cinese che ha usato un agente basato su DeepSeek (framework Hermes) per condurre ricognizione e sfruttamento automatizzato contro oltre 460 target esposti su #Internet, includendo proprio falle Langflow tra i vettori iniziali.

Le agenzie federali civili #USA (FCEB) hanno una scadenza fissata al 7 agosto 2026 per applicare la correzione: un termine estremamente ravvicinato che segnala quanto la CISA consideri urgente questo caso.

Sei esposto? Come verificarloSe gestisci o hai installato Langflow, anche solo per test interni, verifica prima di tutto la versione in uso:

pip show langflow | grep Version

oppure, se installato via Docker

docker exec python -c "import langflow; print(langflow.version)"Le versioni vulnerabili vanno dalla 1.0.0 alla 1.10.0. Se la tua istanza è raggiungibile da reti non fidate (Internet pubblico, VLAN non segmentate, VPN aziendale ad ampio accesso), il rischio è massimo. Puoi anche verificare rapidamente se l’endpoint di auto-login risponde senza autenticazione:

curl -i https://tuo-host-langflow/api/v1/auto_loginUna risposta 200 con un token JWT nel body, su un’istanza che non dovrebbe permetterlo, è un segnale da prendere sul serio.

Come mitigare e correggereLa correzione ufficiale è disponibile dal luglio 2026:

Aggiorna a Langflow OSS 1.10.1 o superiore (al momento la #release più recente è la 1.11.2). Con pip: pip install --upgrade langflow; con #Docker, aggiorna il tag dell’immagine e ricrea il #container.

Non esporre Langflow direttamente su Internet. Se serve accesso remoto, mettilo dietro una VPN o un reverse proxy con autenticazione a livello di rete (es. Basic Auth via Nginx, oppure un identity-aware proxy come #Cloudflare Access o OAuth2 Proxy).

Segmenta la rete: le istanze usate per sviluppo/test AI dovrebbero stare in una VLAN dedicata, non nella stessa rete di produzione critica.

Monitora i log applicativi per chiamate anomale a /api/v1/auto_login seguite da richieste a /api/v1/validate/code, che rappresentano l’impronta tipica di questo exploit chain.

Se non puoi aggiornare subito, valuta di disabilitare temporaneamente l’endpoint di validazione codice a livello di reverse proxy, bloccando le richieste verso /api/v1/validate/code dall’esterno.

Il quadro più ampio: sicurezza delle piattaforme AI low-codeQuesto episodio è un promemoria utile per chi valuta l’adozione di strumenti come Langflow, n8n, Flowise o piattaforme simili in ambito enterprise: sono prodotti giovani, in rapida evoluzione, spesso pensati per la produttività degli sviluppatori più che per un modello di sicurezza hardened by default. La combinazione di autenticazione permissiva e capacità di esecuzione codice arbitrario è un pattern che si ripete in questa categoria di software, ed è probabile che vedremo altre vulnerabilità simili nei prossimi mesi.

Per i sistemisti, la lezione operativa è duplice: trattare ogni piattaforma di orchestrazione AI come una superficie di attacco a tutti gli effetti (patch management, segmentazione, monitoring) e mantenere un inventario aggiornato di dove questi strumenti sono stati distribuiti, spesso al di fuori dei processi IT ufficiali grazie a shadow IT dei team di data science.

ConclusioneCVE-2026-9198 è un caso da manuale: due endpoint singolarmente poco pericolosi che, incatenati, portano a remote code execution non autenticata su un prodotto sempre più diffuso nei reparti che sperimentano con l’AI. Se hai Langflow in produzione o anche solo in un ambiente di test raggiungibile dalla rete aziendale, l’aggiornamento a 1.10.1+ va considerato prioritario, non rimandabile alla prossima finestra di manutenzione.

Fonte: The Hacker News e 4sysops.

#sicurezza #ai #ia

0 0 1

MCP 2026-07-28: il Model Context Protocol diventa stateless, ecco cosa cambia per chi sviluppa agenti AI

Il 28 luglio 2026 entra in vigore la nuova revisione della specifica Model Context Protocol (MCP), lo standard aperto introdotto da Anthropic che perm

Altro...

Il 28 luglio 2026 entra in vigore la nuova revisione della specifica Model Context Protocol (MCP), lo standard aperto introdotto da Anthropic che permette ai modelli AI di collegarsi in modo sicuro a strumenti e sorgenti dati esterne. Non si tratta di un aggiornamento cosmetico: la revisione 2026-07-28 ridisegna il nucleo del protocollo, passando da un modello con stato a uno completamente stateless, e introduce cambiamenti che toccano direttamente chi progetta, ospita o consuma server MCP in produzione.

Per chi lavora con agenti AI e integrazioni enterprise, questa è una di quelle revisioni che vale la pena capire in dettaglio prima che arrivi la versione finale, perché tocca scalabilità, autenticazione e compatibilità con le versioni precedenti.

Dal protocollo con stato al core statelessNelle versioni precedenti di MCP, un client doveva eseguire un handshake initialize prima di poter fare qualsiasi cosa: il server rispondeva con un identificatore di sessione da includere in ogni richiesta successiva. Chi ha provato a mettere in produzione un server MCP dietro un load balancer conosce il problema: il client restava “incollato” a una specifica istanza, e scalare orizzontalmente richiedeva sticky session o uno store di sessione condiviso.

La revisione 2026-07-28 elimina sia l’handshake initialize sia il concetto stesso di sessione a livello di protocollo. Ogni richiesta è ora autosufficiente: versione del protocollo, informazioni sul client e capability dichiarate viaggiano in ogni singola chiamata invece di essere negoziate una volta sola all’apertura della connessione. Un nuovo metodo, server/discover, permette al client di recuperare le capability del server solo quando gli servono davvero.

La conseguenza pratica è che, non esistendo più un identificatore di sessione, qualsiasi richiesta può essere instradata verso qualunque istanza del server. Diventa possibile piazzare un server MCP dietro un banale load balancer round-robin, senza sticky session né store condiviso. Se un’applicazione ha comunque bisogno di mantenere uno stato tra una chiamata e l’altra, la soluzione prevista è restituire un handle esplicito (ad esempio un ID di un “carrello” o di una sessione applicativa) da uno strumento, e far sì che il client lo passi indietro come un normale argomento nelle chiamate successive. È lo stesso pattern usato da anni nelle API REST stateless: lo stato non sparisce, si sposta semplicemente dal trasporto al payload applicativo.

Multi Round-Trip Requests: confermare senza tenere aperta una connessioneUn protocollo stateless ha comunque bisogno di un modo per gestire i casi in cui un server deve chiedere qualcosa al client a metà di una chiamata, per esempio una conferma dell’utente prima di eseguire un’operazione sensibile. Nelle versioni precedenti questo richiedeva tenere aperto uno stream Server-Sent Events per tutta la durata dell’interazione. La nuova revisione sostituisce questo meccanismo con le Multi Round-Trip Requests (MRTR).

Quando un server ha bisogno di input dall’utente durante l’esecuzione di uno strumento, restituisce un oggetto InputRequiredResult contenente le domande da porre e un blob requestState. Il client raccoglie le risposte e riemette la chiamata originale includendo sia le risposte sia lo stato “echoed” ricevuto in precedenza. Poiché tutto ciò che serve al server è contenuto nel payload, qualunque istanza del server può gestire il retry, anche se è diversa da quella che ha generato la richiesta iniziale. È un dettaglio che semplifica enormemente il deployment di server MCP dietro infrastrutture di bilanciamento del carico stateless.

Header instradabili e caching esplicitoDue modifiche più contenute a livello di trasporto rendono il traffico MCP molto più facile da osservare e instradare in produzione. Il trasporto Streamable HTTP richiede ora un header Mcp-Method su ogni richiesta, mentre l’header Mcp-Name è obbligatorio solo per tipi di richiesta specifici, come tools/call, resources/read e prompts/get. Un gateway o un load balancer può leggere questi header per instradare il traffico senza dover analizzare il corpo della richiesta, un vantaggio non trascurabile per chi gestisce infrastrutture MCP a scala aziendale. I server rifiutano le richieste in cui header e corpo non sono coerenti tra loro.

In secondo luogo, i risultati di liste e letture di risorse ora includono i campi ttlMs e cacheScope, modellati sul comportamento dell’header HTTP Cache-Control. I client sanno esattamente per quanto tempo una risposta a tools/list resta valida e se può essere condivisa tra utenti diversi. Non è più necessario mantenere uno stream a lungo termine solo per scoprire che una lista è cambiata: un pattern di polling con cache esplicita è sufficiente.

Autenticazione più rigorosa, allineata a OAuth 2.0La revisione stringe le regole di autorizzazione per allinearle più da vicino a OAuth 2.0 e OpenID Connect. I client devono ora validare il parametro iss nelle risposte di autorizzazione secondo la RFC 9207, una mitigazione contro i “mix-up attack”, una classe di attacchi più rilevante nel pattern tipico di MCP in cui un singolo client dialoga con molti server diversi.

I client devono inoltre dichiarare il proprio application_type durante la Dynamic Client Registration, così gli authorization server non assumono più di default che i client desktop o CLI siano applicazioni “web”, evitando il rifiuto ingiustificato dei redirect URI su localhost. Le credenziali vengono vincolate all’authorization server che le ha emesse, e la specifica chiarisce come richiedere i refresh token durante l’autenticazione step-up.

Funzionalità deprecate: cosa cambia per chi ha già integrato MCPTre funzionalità core vengono formalmente deprecate: Roots, Sampling e Logging. Roots permetteva a un client di dichiarare i confini del filesystem a un server; Sampling permetteva a un server di chiedere al modello del client di generare testo per suo conto; Logging forniva notifiche a livello di protocollo dal server al client.

La deprecazione non significa rimozione immediata: questi metodi, tipi e capability flag continuano a funzionare in questa release e in ogni versione della specifica pubblicata entro un anno da essa. Da qui in poi, però, sono su un orologio di rimozione. Le alternative consigliate sono parametri degli strumenti o URI di risorse al posto di Roots, integrazione diretta con le API dei provider LLM al posto di Sampling, e OpenTelemetry per l’osservabilità strutturata al posto del Logging di protocollo. Chi mantiene librerie o server MCP dovrebbe iniziare a pianificare la migrazione già da ora.

Schema degli strumenti, codici di errore ed estensioniGli schema di input e output degli strumenti utilizzano ora JSON Schema 2020-12 completo. Gli schema di input mantengono il vincolo della radice type: "object" ma ora permettono composizione con oneOf, anyOf e allOf, oltre a condizionali e riferimenti. Gli schema di output non hanno più restrizioni, e structuredContent può essere qualsiasi valore JSON, non solo un oggetto.

Il codice di errore per una risorsa mancante cambia dal valore custom MCP -32002 allo standard JSON-RPC -32602 (Invalid Params). Chi ha client che fanno pattern matching sul valore letterale -32002 deve aggiornare quel codice prima del 28 luglio.

Le estensioni, già presenti nella release precedente ma senza un processo formale, ricevono ora una struttura definita: sono identificate da ID reverse-DNS, negoziate tramite una mappa extensions, e vivono in repository indipendenti con maintainer dedicati, versionando separatamente dalla specifica principale. Due estensioni ufficiali arrivano con questa release: MCP Apps, che permette ai server di fornire interfacce HTML interattive renderizzate dagli host in un iframe sandboxed, e Tasks, promossa da funzionalità sperimentale a estensione ufficiale, che fornisce un modello stateless per lavori a lunga esecuzione: un server può rispondere a tools/call con un task handle, e il client lo gestisce con tasks/get, tasks/update e tasks/cancel.

SDK beta disponibili da subitoSono già disponibili release beta degli SDK Python, TypeScript, Go e C#. Python v2 rinomina FastMCP in MCPServer ma mantiene l’API a decoratori. TypeScript v2 divide l’SDK monolitico in pacchetti focalizzati come @modelcontextprotocol/server e @modelcontextprotocol/client, ed è ora ESM-only. Go integra il supporto alla revisione 2026-07-28 in v1.7.0-pre.1 sullo stesso module path. C# rilascia la versione 2.0.0-preview.1 dei pacchetti ModelContextProtocol.

Per chi ha già server e client in produzione, la buona notizia è che nulla si rompe automaticamente il giorno del rilascio: i nuovi client che parlano la revisione 2026-07-28 tornano automaticamente all’handshake initialize quando raggiungono un server che implementa una versione precedente o uguale al 2025-11-25. Chi però pubblica librerie che dipendono dal pacchetto Python mcp dovrebbe aggiungere un limite superiore esplicito, per esempio mcp>=1.27,<2, in modo che il passaggio alla v2 stabile non colga di sorpresa gli utenti del proprio pacchetto.

ConclusioneLa revisione 2026-07-28 di MCP è un cambiamento strutturale, non un semplice aggiornamento incrementale. Il core stateless elimina la necessità di session affinity e semplifica scaling orizzontale e load balancing di server MCP in produzione. I nuovi pattern come le MRTR e gli header instradabili rendono il protocollo più facile da operare su larga scala. L’irrigidimento delle regole di autorizzazione allinea MCP alle pratiche standard di OAuth e OpenID Connect, riducendo la superficie di attacco tipica delle integrazioni multi-server. Le funzionalità deprecate restano funzionanti per ora, ma vanno sostituite secondo un piano preciso prima che scada la finestra di un anno.

Chi sviluppa o ospita server MCP dovrebbe testare gli SDK beta contro i propri carichi di lavoro prima della data finale del 28 luglio, verificando in particolare la gestione dei codici di errore, la compatibilità dei client con l’handshake legacy e l’impatto delle nuove regole di autorizzazione sulle integrazioni desktop e CLI esistenti.

Fonte: 4sysops.com

#ai #ia #net #dev

0 0 0

Perché ti danno l’AI gratis? La verità da 725 miliardi, l'economia dell'intenzione

Perché Google, Microsoft e OpenAI stanno bruciando 725 miliardi di dollari in infrastrutture AI per darti tutto “gratis”?

La risposta non è solo la

Altro...

Perché Google, Microsoft e OpenAI stanno bruciando 725 miliardi di dollari in infrastrutture AI per darti tutto “gratis”?

La risposta non è solo la tua attenzione. È qualcosa di più profondo: la tua intenzione.

Stiamo passando dall’economia dell’attenzione a quella dell’attaccamento.

Non si tratta più solo di prevedere cosa cliccherai, ma di anticipare cosa desidererai prima ancora che tu lo sappia. Un sistema che usa i tuoi dati comportamentali per modellare la realtà che vedi — e quella che vuoi.

Nel frattempo, mentre usi ChatGPT, Claude e altri strumenti “gratuiti”, le Big Tech stanno costruendo un filtro invisibile tra te e il mondo.

Dentro troviamo i numeri enormi degli investimenti, il “capitalismo della sorveglianza” di Shoshana Zuboff e una direzione chiara: l’AI non vuole solo il tuo tempo. Vuole il tuo legame.

Capire questo non è teoria: è il primo passo per non diventare solo un dato dentro il sistema.

#ai #big tech #ia

0 0 1