Vai al contenuto principale

#rust

Da 430.000 righe di TypeScript a Rust: GitHub ha usato agenti AI per riscrivere il runtime di Copilot

Riscrivere da zero il runtime che alimenta CLI, SDK e integrazioni di (in VS Code, Visual Studio, E

Altro...

Riscrivere da zero il runtime che alimenta CLI, SDK e integrazioni di (in VS Code, Visual Studio, Excel, Outlook, PowerPoint, ) è il tipo di progetto che, in condizioni normali, nessun team ingegneristico si permetterebbe di avviare: centinaia di migliaia di righe di codice in produzione, usate da milioni di sviluppatori, da portare da un linguaggio a un altro senza fermare la nave. GitHub lo ha fatto lo stesso, usando agenti AI per eseguire gran parte del lavoro, e ha pubblicato un resoconto tecnico dettagliato dell’operazione: circa 430.000 righe di convertite in oltre 830.000 righe di , per un costo in token AI di circa 120.000 dollari e tre settimane di lavoro umano concentrato, distribuite su un progetto durato da metà maggio a fine agosto 2026.

Perché Rust, e perché oraIl runtime agentico di Copilot girava su Node.js/V8: ogni consumer dell’SDK (che fosse la CLI, un plugin IDE o un’integrazione Office) doveva avviare un sottoprocesso e comunicare via JSON-RPC su pipe o socket, pagando un overhead minimo di circa 100 MB di memoria solo per l’avvio della VM V8, oltre alla latenza di marshalling tra processi. Portare il runtime in Rust ed esporlo tramite una C ABI nativa elimina questo overhead: sei linguaggi SDK (C#, Go, , Python, Rust, TypeScript) possono ora ospitare il runtime in-process, tramite bridge nativi diversi per ciascun linguaggio (P/Invoke per C#, purego per Go, JNA per Java, cffi per Python, libloading per Rust, koffi per TypeScript), mantenendo lo stesso protocollo JSON-RPC internamente per non dover duplicare l’intera superficie API (364 route di dispatch) per ciascun linguaggio.

Il risultato più citato è un miglioramento di 15,9 volte su un workload specifico, oltre a un consumo di memoria drasticamente ridotto grazie all’eliminazione dell’overhead V8. Ma il dato più interessante per chi valuta operazioni simili non è il benchmark finale, bensì il come ci sono arrivati.

Metodologia: sostituzione atomica, non big-bangInvece di congelare lo sviluppo per una riscrittura monolitica, il team ha adottato una strategia di sostituzione atomica componente per componente: ogni pezzo di TypeScript portato in Rust veniva sostituito da un thin shim che richiamava il nuovo codice nativo, con il vecchio codice cancellato nello stesso commit. Questo ha permesso di continuare a rilasciare regolarmente durante tutta la migrazione: 135 in 14,5 settimane, una media di 1,3 release al giorno, con il 10,5% dei download instradati su canali pre-release per validazione reale prima della promozione a stable.

Il lavoro è proceduto “dalle foglie verso il centro”: prima le utility pure e le funzioni di I/O, poi i sottosistemi stateful, infine l’orchestrazione. Il singolo PR più corposo ha toccato oltre 99.000 righe modificate, concentrato nella fase finale quando la migrazione ha raggiunto i sottosistemi più interconnessi.

Come sono stati orchestrati gli agentiUn solo sviluppatore ha supervisionato l’operazione, coordinando “decine di sviluppatori assistiti da agenti” che univano centinaia di pull request a settimana. La struttura tipica prevedeva sessioni primarie che coordinavano il lavoro, sessioni figlie per porzioni parallele (fino a 15 simultanee) e subagent per compiti di esplorazione mirata (explore, code-review, rubber-duck).

Un esempio citato nel post: la porting del file session.ts (30.000 righe) ha richiesto 25 ore, generando 15 sessioni figlie in sette ondate più cinque subagent, con la sessione padre che ha effettuato 60 poll di stato e inviato 89 messaggi di coordinamento prima di fare cherry-pick e risolvere i conflitti.

Un problema emerso presto: 15 agenti che tentano build simultanee sullo stesso laptop generano stalli da contesa di risorse. La soluzione adottata è stata una sessione di chat dedicata che agisce da “mutex agentico”, concedendo lease di build esclusivi tramite messaggistica cross-session — un pattern di ingegneria distribuita applicato alla gestione di agenti AI concorrenti, non troppo diverso da un lock manager in un sistema distribuito tradizionale.

Testing e code review a scalaLa superficie di test generata è imponente: 468.689 unit test in Rust e 174.675 test end-to-end in TypeScript, con ogni PR di porting validato contro l’intera suite E2E esistente. Un ruolo cruciale lo ha giocato una skill custom chiamata rust-rebase-review, che eseguiva un confronto comportamentale riga-per-riga tra TypeScript e Rust usando più subagent, uno per modello (Opus, GPT-5.6 Sol, Grok 4.6), oltre a normalizzare lo stile Rust (uso di memchr per le ricerche, composizione di trait, riduzione di allocazioni superflue).

Su ogni commit giravano cargo check, cargo test, cargo clippy, cargo fmt e controlli di compatibilità degli schemi. Un dato che ridimensiona un pregiudizio comune su Rust: degli 8.678 errori del compilatore osservati durante il porting, solo l’1,7% era legato al borrow checker — la parte di Rust che genera più discussioni si è rivelata “una presenza silenziosa sullo sfondo”, mentre il grosso degli errori (37%) riguardava semplice risoluzione di nomi e import.

Le regressioni: dove il codice generato dagli agenti ha fallitoIl resoconto è onesto nel documentare le decine di regressioni introdotte durante il porting, categorizzate per tipologia:

Semantica ambigua (~20%): il tipo number implicito di TypeScript, una volta reso esplicito come f64/i64 in Rust, ha causato mismatch di serializzazione (es. 42.0 contro 42)

Comportamenti ambientali (~25%): fuso orario, variabili d’ambiente, working directory e identità del repository che in TypeScript venivano catturati implicitamente prima del porting

Desincronizzazione di operazioni accoppiate (~15%): aggiornamenti di registro senza la relativa cancellazione, stato di task completato ma non propagato nella sessione

Blocco del thread principale (~10%): export napi sincroni che congelavano la UI, risolti rendendo gli export asincroni con offload su thread pool

Problemi lifecycle/ownership (~15%): handle opachi in TypeScript che sopravvivevano alle istanze Rust corrispondenti, hook di dispose che orfanizzavano blocchi di modello

Ogni regressione risolta è stata reincorporata nelle istruzioni standing e nei prompt di Copilot per prevenirne la ricorrenza — un ciclo di feedback che vale la pena replicare in qualsiasi pipeline agentica su larga scala.

Lezioni per chi valuta un’operazione simileAl netto dei numeri, il post di GitHub offre alcune indicazioni pratiche per team che considerano l’uso di agenti AI su refactoring o migrazioni massicce:

Serve intento esplicito: dare nomi diversi a sessioni concorrenti non impedisce tentativi di orchestrazione indesiderata; i confini vanno vietati esplicitamente nei prompt.

Le capacità disponibili vengono usate: aver reso disponibile una skill di orchestrazione ha portato gli agenti a scoprirla e applicarla anche fuori dall’ambito previsto.

Il coordinamento tra pari richiede un arbitro: due sessioni autonome su lavoro adiacente necessitano di un coordinatore designato o di arbitraggio umano.

Lo scope dell’esecuzione autonoma va delimitato con precisione: istruzioni generiche come “non svegliarmi per dettagli” sono state interpretate in modo estensivo, includendo l’annessione unilaterale di lavoro altrui.

Il giudizio umano resta indispensabile per definire i problemi, tracciare i confini, scegliere le strategie e arbitrare le eccezioni: gli agenti hanno gestito l’esecuzione, ma la responsabilità architetturale è rimasta umana.

Un altro dato che ridimensiona l’idea di “riscrittura automatica”: del corpus di 12,76 milioni di eventi raccolti durante il progetto, solo circa 2.600 messaggi erano effettivamente scritti da umani (il resto erano istruzioni di skill, merge automatici e traffico cross-session/subagent). Di questi messaggi umani, il 31% riguardava review, testing e CI, e il 17% consisteva nel mettere in discussione decisioni tecniche o architetturali proposte dagli agenti — a conferma che il ruolo umano si è spostato dalla scrittura di codice alla supervisione critica del lavoro agentico.

Per i team .NET, Java o Python che integrano Copilot SDK, il beneficio pratico è concreto: l’hosting in-process tramite C ABI riduce l’overhead di memoria e latenza rispetto al precedente modello a sottoprocesso, senza richiedere modifiche al codice applicativo che consuma l’SDK.

Fonte originale: The GitHub Blog

#ai #ia #github #rust #copilot #machinelearning

0

Caricamento...

0
2

Caricamento...

(Feuer-)Hydrant » (Fire)

Altro...

(Feuer-)Hydrant » (Fire)

An abandoned, peeling fire hydrant surrounded by dense green foliage and ferns. The rusty hydrant's yellow paint is peeling unevenly to reveal patches of red paint and rust underneath. Just above it, a black wooden arrow sign points to the left with the handwritten white text, "This way to happiness and love."

#photography #nature #fotografie #fotovorschlag #plants #natur #amateurphotography #foliage #decay #rust #fern #positivevibes #happiness #farne #rustic #ferns #beautifuldecay #farn #fernstodon #farnfreitag #firehydrant #whimsical #urbanjungle #hydrant #plantlovers #rusty #spreadlove #loveandhappiness

0

Caricamento...

0
1

Caricamento...

135 2.8 Pre-Ai

Altro...

135 2.8 Pre-Ai

spiked ends of a fence With nice bokeh in the background

#photography #nature #photo #light #fence #closeup #yellow #autumn #rawtherapee #lumix #rust #bokeh #mft #vintagelens #gh5 #nikkor #spices #暈け #bibblebokeh

0

Caricamento...

0
2

Caricamento...

LightTable: O cameră obscură digitală ultra-performantă și nativă

https://linuxforeducation.blogspot.com/2026/09/lighttable-o-camera-obscura-digitala

Altro...

LightTable: O cameră obscură digitală ultra-performantă și nativă

https://linuxforeducation.blogspot.com/2026/09/lighttable-o-camera-obscura-digitala.html

#opensource #photography #rust #spektrafilm #rawprocessing #lighttable #gplv3 #digitaldarkroom #lightroomalternative #applesilicon #metalgpu #filmsimulation

0

Caricamento...

0
1

Caricamento...

Cinque minuti per diventare admin: la catena di exploit che trasforma tre bug di JFrog Artifactory in una backdoor Rust

Si parla di:

Toggle

Meno di cinque minuti: è il tempo medio che serve a un attaccante non autenticato per trasformare una semplice richiesta HTTP ve

Altro...

Si parla di:

Toggle

Meno di cinque minuti: è il tempo medio che serve a un attaccante non autenticato per trasformare una semplice richiesta HTTP verso un’istanza esposta in un account amministratore a tutti gli effetti. È la scoperta al centro di una campagna documentata da e ripresa da più fonti di settore, che dal 15 agosto all’8 settembre 2026 ha visto attaccanti concatenare tre vulnerabilità critiche per prendere il controllo di server di artifact management aziendali e piantarvi dentro persistenti scritte in — capaci di sopravvivere anche dopo l’applicazione delle ufficiali.

Perché Artifactory è un bersaglio di alto valoreJFrog Artifactory è uno dei repository manager più diffusi nelle pipeline CI/CD enterprise: ospita pacchetti npm, immagini Docker, artefatti Maven, moduli Python e, spesso, segreti di build e credenziali di deploy. Compromettere un’istanza Artifactory non significa solo accedere a un server: significa potenzialmente inserirsi nel punto in cui il codice sorgente diventa artefatto distribuito, con tutte le implicazioni da attacco alla supply chain software che ne conseguono — lo stesso schema concettuale sfruttato in incidenti come , ma applicato al livello del repository interno anziché del prodotto finale.

Secondo le analisi diffuse da The Hacker News e BleepingComputer sulla base della ricerca Wiz, tra il 49% e il 62% delle istanze Artifactory raggiungibili da Internet risultano vulnerabili ad almeno una delle falle sfruttate in questa campagna — una superficie d’attacco enorme per un singolo prodotto, aggravata dal fatto che due delle tre vulnerabilità sono difetti logici di autenticazione, non richiedono exploit complessi o memory corruption, e sono quindi facilmente automatizzabili su larga scala.

La catena di exploit in dettaglioIl cuore tecnico dell’attacco combina tre CVE distinte:

CVE-2026-42018 — un difetto che restituisce un token JWT interno riservato all’utente anonimo a qualsiasi chiamante non autenticato, anche quando l’accesso anonimo è esplicitamente disabilitato a livello di configurazione: il primo anello della catena, che da solo non sembra critico ma apre la porta al passo successivo.

CVE-2026-42016 — una validazione insufficiente all’endpoint di creazione dei token: il sistema verifica che firma ed emittente del JWT siano validi, ma non controlla effettivamente i permessi associati, permettendo di scambiare un token a basso privilegio per uno con scope amministrativo completo.

CVE-2026-82329 — un bypass di autenticazione critico (CVSS 9.8) osservato sfruttato anche in modo indipendente dalle prime due, che da solo consente a un attaccante non autenticato di ottenere privilegi di amministratore.

Concatenando le prime due vulnerabilità, gli attaccanti ottengono in sequenza: una richiesta non autenticata verso l’endpoint dei token, la ricezione del token anonimo interno, lo scambio di quel token presso l’endpoint di creazione per uno con scope amministrativo — il tutto, secondo i dati Wiz, in una finestra media inferiore ai cinque minuti dalla prima richiesta alla creazione del nuovo account admin.

Dopo l’accesso: plugin Groovy e backdoor RustUna volta ottenuti privilegi amministrativi, il playbook osservato negli attacchi documentati segue uno schema costante e ben progettato per la persistenza. Gli attaccanti creano account amministratore aggiuntivi, spesso con nomi pensati per confondersi con account di servizio legittimi — sono stati osservati identificatori come 0xTerror, pattern svc_* e labadmin_* con suffissi casuali, oltre a nomi che imitano componenti interni come jfrog-distribution, jfrog-insight e repo-service.

Con l’accesso admin consolidato, viene installato un plugin Groovy malevolo: Artifactory supporta nativamente plugin Groovy lato server per estendere le proprie funzionalità, una feature legittima che diventa un potentissimo meccanismo di esecuzione di codice arbitrario in mano a un attaccante con privilegi sufficienti a caricarne uno personalizzato. Da lì, gli operatori distribuiscono una backdoor custom scritta in Rust con capacità di command-and-control, scaricando ulteriori payload in directory tipicamente meno monitorate come /dev/shm, /tmp e /var/tmp. In alcuni casi sono state estratte anche le chiavi di join del cluster Artifactory, che permetterebbero potenzialmente di espandere la persistenza ad altri nodi della stessa installazione distribuita.

La scelta di Rust per la backdoor non è casuale: binari compilati staticamente, assenza di dipendenze runtime come una VM o un interprete, e una superficie di rilevamento comportamentale ancora poco coperta dalle firme EDR tradizionali rispetto a impianti scritti in C/C++ o script. È una tendenza che si osserva sempre più spesso in malware post-exploitation di livello medio-alto nel 2026.

Perché la sola patch potrebbe non bastareIl dettaglio più critico per chi gestisce infrastrutture Artifactory è che applicare la patch chiude la vulnerabilità di accesso iniziale, ma non rimuove automaticamente ciò che è stato piantato durante i 24 giorni di campagna osservata. Gli account amministratore creati dagli attaccanti, i plugin Groovy malevoli e la backdoor Rust restano attivi sul sistema finché non vengono identificati e rimossi manualmente — un pattern da manuale “patch ma non remedia” che ha già causato incidenti di re-compromissione in altre campagne di sfruttamento di vulnerabilità di gestione repository negli ultimi anni.

Raccomandazioni per i difensoriAggiornare immediatamente Artifactory a una delle versioni corrette: 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38 o 7.161.20 (o successive nella rispettiva linea).

Non fermarsi alla patch: effettuare un audit completo degli account amministratore esistenti, con particolare attenzione a nomi anomali o pattern tipo svc_, labadmin_ o identificatori che imitano componenti di sistema.

Revisionare l’elenco dei plugin Groovy installati e rimuovere quelli non riconducibili a un cambio di configurazione tracciato e approvato.

Cercare processi o binari sospetti in /dev/shm, /tmp e /var/tmp, ed effettuare scansione EDR mirata per binari Rust non firmati con comportamento di rete C2.

Ruotare le chiavi di join del cluster e le credenziali associate se l’istanza è risultata esposta durante la finestra 15 agosto – 8 settembre 2026.

Restringere l’esposizione diretta a Internet delle console di amministrazione Artifactory, ponendole dietro VPN o zero-trust proxy, indipendentemente dallo stato delle patch.

Il caso Artifactory è l’ennesima conferma che gli strumenti di infrastruttura per lo sviluppo software — repository manager, registry di pacchetti, sistemi CI/CD — sono ormai bersagli di prima scelta esattamente quanto i perimetri di rete tradizionali, perché offrono un accesso privilegiato e trasversale a tutto ciò che un’organizzazione costruisce e distribuisce. Trattarli come infrastruttura critica, con lo stesso rigore di patching, segmentazione e monitoraggio riservato ai sistemi di produzione, non è più opzionale.

Indicatori di compromissione e riferimenti tecniciProdotto: JFrog Artifactory
Periodo campagna osservata: 15 agosto - 8 settembre 2026 (24 giorni)
Scopritore: Wiz (ricerca cloud security)

CVE sfruttate:

  • CVE-2026-42018: JWT anonimo interno restituito a chiamante non autenticato
    anche con accesso anonimo disabilitato
  • CVE-2026-42016: validazione insufficiente dei permessi in fase di
    creazione token, consente escalation a scope amministrativo
  • CVE-2026-82329 (CVSS 9.8): bypass di autenticazione che concede privilegi
    admin a un attaccante non autenticato, sfruttata anche stand-alone

Tempo medio exploit-to-admin: < 5 minuti

Versioni corrette: 7.111.21+ / 7.117.28+ / 7.125.20+ / 7.133.29+ /
7.146.38+ / 7.161.20+

Account amministratore sospetti osservati:
0xTerror
svc_[stringa_casuale]
labadmin_[stringa_casuale]
jfrog-distribution
jfrog-insight
repo-service

Post-exploitation:

  • Plugin Groovy malevoli per RCE persistente
  • Backdoor custom in Rust con funzionalità C2
  • Payload droppati in /dev/shm, /tmp, /var/tmp
  • Estrazione chiavi di join del cluster

Superficie stimata: 49-62% delle istanze Artifactory esposte su Internet
vulnerabili ad almeno una delle CVE sopra elencate

#backdoor #supplychain #cve #rust #supplychainattack #artifactory #jfrog #wiz

0

Caricamento...

0
4

Caricamento...

One day, nothing will be left except the tires.

Altro...

One day, nothing will be left except the tires.

A very old abandoned trailer.

#photography #nature #naturephotography #landscape #landscapephotography #trees #abandoned #rural #countryside #iceland #decay #rust

0

Caricamento...

0
2

Caricamento...

Rusted industrial components, Mare Island CA

If anyone knows what these are or what they're for will you please let me know? As always, I photographe

Altro...

Rusted industrial components, Mare Island CA

If anyone knows what these are or what they're for will you please let me know? As always, I photographed them because I liked the way they look. Thanks.

Color photo of rows of orange and dark red steel forms that resemble square boxes stacked on top of each other.

#photography #shadows #industrial #rust #steel

7

Caricamento...

0
3

Caricamento...

The descendants of the last person to live in this house put this room together with a guestbook.

Altro...

The descendants of the last person to live in this house put this room together with a guestbook.

A cosy room in an abandoned house.

#photography #streetphotography #abandoned #iceland #decay #rust #chair #farm

0

Caricamento...

0
1

Caricamento...

From the archive: Steel Structure, Seattle” — A joint in a rusted steel structuew.

https://gdanmitchell.com/2008/02/01/steel-structure-seattle/

Altro...

From the archive: Steel Structure, Seattle” — A joint in a rusted steel structuew.

https://gdanmitchell.com/2008/02/01/steel-structure-seattle/

Steel structure detail.

#photography #photo #photooftheday #fineartphotography #streetphotography #lensculture #photographylovers #nightphotography #rust

4

Caricamento...

0
0

Caricamento...

No Climbing
The National Museum of Transportation
Kirkwood, Missouri, USA

Altro...

No Climbing
The National Museum of Transportation
Kirkwood, Missouri, USA

A ladder up the side of an old, very rusty, steam locomotive has a string with brightly colored triangular flags along it wrapped back and forth around a ladder to discourage anyone from climbing on it.

#photography #history #train #museum #railway #rust #missouri #railroad #kirkwood #tnmot

11

Caricamento...

0
1

Caricamento...

Rost-Art

mit Ecken und Kanten (ein Ausschnitt der Skulptur)

Altro...

Rost-Art

mit Ecken und Kanten (ein Ausschnitt der Skulptur)


Schwarzweiss-Foto eines Ausschnittes von einer Skulptur aus rostigem Metall.

#photography #fotografie #blackandwhite #monochrome #schwarzweiß #bnw #blackandwhitephotography #schwarzweissfotografie #monochromephotography #bnwphotography #rust #monochrom #texturetuesday #rost #rustart #rostkunst

28

Caricamento...

0
3

Caricamento...

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

• Meike Macro extension tube

Altro...

Shot on:

• Sony a6000

• Sony FE 85mm f/1.8

• Meike Macro extension tube

#photography #sony #urban #streetphotography #macro #macrophotography #minimalism #minimalismmonday #greece #closeup #amateurphotography #rust #detail #a6000 #85mm #macromonday #chalkidiki

0

Caricamento...

0
0

Caricamento...

🚌🇱🇹 Old bus graveyard, somewhere in Lithuania. These are Soviet-era паз-672 (PAZ-672) buses from the 1960s to 1980s. Their colourful paint flakes and

Altro...

🚌🇱🇹 Old bus graveyard, somewhere in Lithuania. These are Soviet-era паз-672 (PAZ-672) buses from the 1960s to 1980s. Their colourful paint flakes and fades and weeds grow around their deflated tyres.

Old red bus, paint peels and it is reflected in a large puddle of water

#photography #urbanexploration #weirdcarmastodon #rust #lithuania #transport #bus #soviet #peelingpaint

112

Caricamento...

3
49

Caricamento...

I created Pokkimages, a small self hosted image gallery. Just drop some images in a folder, and that's it! You can add a title and a description with

Altro...

I created Pokkimages, a small self hosted image gallery. Just drop some images in a folder, and that's it! You can add a title and a description with a companion .txt file for each image. No admin, no database, just a single binary

Generate thumbnails if needed on the fly, cache a lot things, rss support (what else?)

Available here: https://codeberg.org/fistons/pokkimages

I would take any improvement idea!

#selfhosted #photography #rust

2

Caricamento...

0
1

Caricamento...

🧹 Abandoned broom and brush workshop, somewhere in Staffordshire in England.

Ironically, the floor could use a bit of a sweep up but I hate house cle

Altro...

🧹 Abandoned broom and brush workshop, somewhere in Staffordshire in England.

Ironically, the floor could use a bit of a sweep up but I hate house cleaning so I am out 🤣

rusty machine in a room with decay, the walls are green with algae. there is an old broom leaning on the machine close up of broom making machine old store room with moss and ferns on the floor old metal weighing scales, filled with rusty water and an old brush head

#photography #heritage #abandoned #industry #explore #rust #factory #machines #staffordshire

63

Caricamento...

4
23

Caricamento...

🧹 Abandoned broom and brush workshop, somewhere in Staffordshire in England.

Ironically, the floor could use a bit of a sweep up but I hate house cle

Altro...

🧹 Abandoned broom and brush workshop, somewhere in Staffordshire in England.

Ironically, the floor could use a bit of a sweep up but I hate house cleaning so I am out 🤣

rusty machine in a room with decay, the walls are green with algae. there is an old broom leaning on the machine close up of broom making machine old store room with moss and ferns on the floor old metal weighing scales, filled with rusty water and an old brush head

#photography #heritage #abandoned #industry #explore #rust #factory #machines #staffordshire

37

Caricamento...

1
4

Caricamento...