Socket a descoperit pachete malițioase pe NuGet: Sharp7Extend și alte biblioteci ce compromit .NET și PLC-urile Siemens

Când un pachet software pare util dar ascunde o capcană, situația devine gravă, aici vorbim despre pachete malițioase publicate pe NuGet care includ cod de sabotaj programat să se activeze între 2027 și 2028 și țintesc atât implementări de baze de date folosite în .NET, cât și echipamente industriale Siemens S7. Istoric, încrederea în depozitele publice de pachete a fost fundamentală pentru dezvoltarea open-source, dar și o oportunitate pentru actori rău-voitori de a masca amenințări; acest caz leagă problema veche a încrederii în terți de riscurile actuale din mediile industriale.

Cercetătorii de la Socket au identificat nouă pachete periculoase pe NuGet, toate publicate de același cont, shanhai666. La prima vedere, majoritatea codului din ele pare legitim, aproape 99%, ceea ce le face ușor de trecut cu vederea. Din acest motiv pachetele păreau inofensive: ofereau funcționalități valide pentru baze de date și, în unele situații, pentru comunicarea cu PLC-urile Siemens S7. Totuși, ascunse printre liniile utile se regăsesc fragmente scurte de cod, de circa 20 de rânduri, care acționează ca un mecanism de sabotaj activat pe baza unei condiții temporale și a unui element aleator. Ca să fie clar: nu toate apelurile cauzează dezastru, dar suficiente apeluri pot produce opriri sau coruperea unor operațiuni critice.

Pachetele afectează toate cele trei implementări majore de baze de date utilizate în aplicațiile .NET: SQL Server, PostgreSQL și SQLite. Cel mai periculos este Sharp7Extend, care imită o bibliotecă legitimă, Sharp7, folosită pentru comunicarea cu PLC-urile Siemens. Adăugarea lui “Extend” la numele unui pachet cunoscut determină mulți dezvoltatori să caute extensii sau îmbunătățiri, iar autorul amenințării a exploatat acest comportament. Sub numele shanhai666, NuGet afișase inițial 12 pachete, dintre care nouă conțineau cod malițios: SqlUnicorn.Core, SqlDbRepository, SqlLiteRepository, SqlUnicornCoreTest, SqlUnicornCore, SqlRepository, MyDbRepository, MCDbRepository și Sharp7Extend. Când Socket a raportat descoperirea, pachetele dispăruseră din listările publice, dar asta s-a întâmplat după ce descărcările totale aproape ajunseseră la 9.500.

Mecanismul de activare e remarcabil prin simplitate și eficiență: codul adaugă metode de extensie în C#, astfel încât logica malițioasă este invocată transparent ori de câte ori aplicația efectuează o interogare la baza de date sau o operațiune asupra PLC-ului. Există și o verificare a datei curente, comparată cu date trigger hardcodate, care variază între 8 august 2027 și 29 noiembrie 2028. Dacă sistemul se află în acea fereastră, se generează un număr aleator între 1 și 100, iar dacă rezultatul depășește 80 (deci în 20% din cazuri) se apelează Process.GetCurrentProcess().Kill(), ceea ce determină terminarea imediată a procesului gazdă. Pentru clienții PLC care fac frecvent apeluri tranzacționale sau de conectare, acest comportament poate opri operațiunile aproape instantaneu.

Sharp7Extend utilizează două tactici: pe de-o parte, întrerupe imediat comunicația cu PLC-urile în 20% din cazuri; pe de altă parte, conține cod care încearcă să citească o valoare de configurare inexistentă, ceea ce face ca inițializarea să eșueze sistematic. În plus, există un filtru intern pentru operațiile PLC și o întârziere a activării payload-ului între 30 și 90 de minute. După această întârziere, scrierile către PLC care trec prin filtrul respectiv au 80% șansă să fie corupte: comenzile către actuatoare pot să nu ajungă, setpoint-urile pot rămâne neschimbate, sistemele de siguranță pot să nu se activeze și parametrii de producție pot rămâne afectați. Combinarea întreruperii aleatoare imediate cu corupția întârziată a scrierilor generează un atac în mai multe etape, care evoluează în timp și e mai dificil de detectat din primele momente.

Deși originea și motivațiile exacte ale acestor extensii nu sunt încă determinate, recomandarea cercetătorilor este clară: organizațiile trebuie să-și auditeze imediat activele pentru prezența celor nouă pachete și să considere compromiterea posibilă dacă oricare dintre ele este descoperit. În mediile industriale care rulează Sharp7Extend e necesar un audit al operațiilor de scriere către PLC-uri pentru integritate, verificarea jurnalelor sistemelor de siguranță pentru comenzi lipsă sau activări eșuate și implementarea unor mecanisme de verificare a scrierilor pentru operațiunile critice.

Sharp7Extend figurează în lista pachetelor malițioase și sugerează compatibilitate cu biblioteci folosite de Siemens S7; dezvoltatorii și operatorii trebuie să verifice versiunile, să scaneze proiectele pentru dependențe și să controleze integritatea comunicărilor cu PLC-urile. Auditul ar trebui să includă căutarea numelor pachetelor SqlUnicorn.Core, SqlDbRepository, SqlLiteRepository, SqlUnicornCoreTest, SqlUnicornCore, SqlRepository, MyDbRepository, MCDbRepository și Sharp7Extend în registrul de pachete folosit intern, în fișierele proiectelor și în mediile de build. Dacă vreunul este prezent, tratați-l ca indicator de posibilă compromitere și urmați proceduri de răspuns: izolare, restaurare din backupuri verificate și revizuire a jurnalelor pentru opriri sau comenzi corupte.

Dintr-o perspectivă mai largă: delegarea încrederii către depozite publice, împreună cu obiceiul de a folosi pachete terțe pe scară largă, poate crea vulnerabilități greu de detectat. Exemplele concrete din acest caz, numele pachetelor, datele trigger (8 august 2027, 29 noiembrie 2028, 6 iunie 2028), numărul descărcărilor aproape de 9.500 și comportamentul probabilistic de 20% pentru terminarea procesului, arată cum detalii aparent minore pot produce impact operațional semnificativ. Auditul dependențelor, controlul versiunilor și verificarea integrității în pipeline-urile CI/CD nu mai sunt opționale; sunt practici esențiale pentru a preveni ca o bibliotecă descărcată din obișnuință să devină punctul de intrare pentru sabotaj.

Vrei să verifici acum dacă proiectele tale folosesc vreunul dintre pachetele enumerate și cum poți automatiza o scanare rapidă?

Fii primul care comentează

Lasă un răspuns

Adresa ta de email nu va fi publicată.


*