{"id":14325,"date":"2023-06-22T04:46:17","date_gmt":"2023-06-22T08:46:17","guid":{"rendered":"https:\/\/www.lpi.org\/blog\/2023\/06\/22\/how-handle-vulnerabilities-third-party-programming-libraries-2\/"},"modified":"2023-06-22T04:46:17","modified_gmt":"2023-06-22T08:46:17","slug":"how-handle-vulnerabilities-third-party-programming-libraries-2","status":"publish","type":"post","link":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/","title":{"rendered":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti"},"content":{"rendered":"<p>Quasi tutto il software chiama pi\u00f9 livelli di librerie di terze parti. Supponiamo, per esempio, che un programma Java invochi una funzione da una libreria standard per formattare una data. Quella funzione potrebbe a sua volta chiamare una funzione da un&#8217;altra libreria che capisce il calendario. E quella funzione ne chiama un&#8217;altra, e cos\u00ec via.<br \/>\nE se una falla di sicurezza in una di queste librerie profondamente annidate viene resa pubblica? Il vostro programma \u00e8 ora a rischio di compromissione, e un malintenzionato pu\u00f2 entrare nel server su cui il vostro programma \u00e8 in esecuzione&#8211;anche se non avete introdotto un vostro bug.<br \/>\nCi sono molti scanner che vi aiutano a trovare le vulnerabilit\u00e0 nelle dipendenze, ma la loro gestione comporta alcune sottigliezze. Vedremo il processo in questo articolo.<br \/>\nFonti di informazioni sulle falle<br \/>\nTutti noi siamo protetti da una lontana rete di esperti di sicurezza che sottopongono il software a tutti i tipi di test tortuosi per rivelare falle pericolose, e riportano queste falle agli sviluppatori. I loro test possono essere semplici come lanciare input insoliti ad una funzione per vedere se la funzione si confonde e permette ad un intruso di prendere il controllo del programma. Un&#8217;interessante disciplina chiamata &#8220;fuzzing&#8221; sottopone grandi quantit\u00e0 di caratteri generati casualmente ai programmi, ed \u00e8 sorprendentemente efficace nel trovare bug e vulnerabilit\u00e0. Ci sono anche strumenti di analisi completi che cercano problemi sospetti nel codice stand-alone (analisi statica) o in un programma in esecuzione (analisi dinamica).<br \/>\n Naturalmente, anche i ricercatori meno ben intenzionati sono alla ricerca di tali falle, con l&#8217;obiettivo di creare exploit malevoli per i clienti dei governi e gruppi transomware. Anche se le falle di sicurezza non ancora note al pubblico (zero day exploit) sono pericolose, la maggior parte degli attacchi utilizza falle che sono pubblicamente note, e che le vittime hanno permesso di rimanere sui loro sistemi. Siate certi che gli attori malintenzionati stanno leggendo le liste pubbliche delle falle.<br \/>\nLe falle pubblicamente note sono pubblicate su database mantenuti da organizzazioni di sicurezza, in particolare il database CVE (Common Vulnerabilities and Exposures). Il National Institute of Standards and Technology (NIST), una delle principali agenzie governative statunitensi per gli standard nel software e altrove, mantiene il National Vulnerability Database, che aggiunge pi\u00f9 dettagli agli exploit nel database CVE. Un altro sforzo recente per raccogliere le falle conosciute nelle librerie di software libero \u00e8 il database Open Source Vulnerabilities (OSV). E alcuni progetti offrono raccolte specifiche di vulnerabilit\u00e0 rilevanti, come il Python Packaging Advisory Database.<br \/>\nNon dovete leggere ossessivamente la sempre crescente lista di vulnerabilit\u00e0; ne vengono scoperte cos\u00ec tante ogni giorno che non potreste nemmeno stare al passo con loro. Per ogni linguaggio di programmazione popolare, \u00e8 possibile eseguire uno strumento per cercare automaticamente le liste e dirvi cosa \u00e8 stato scoperto per tutte le librerie che la vostra applicazione utilizza. Vedere il sito di GitLab per una lista di strumenti automatici. GitHub offre anche controlli automatici attraverso un servizio chiamato Dependabot.<br \/>\n\u00c8 conveniente usare gli strumenti offerti da GitLab e GitHub perch\u00e9, con pochi click, puoi far eseguire il controllo nei punti chiave del tuo ciclo di sviluppo. Ma non \u00e8 necessario essere su GitLab o GitHub per eseguire gli strumenti. Puoi integrarli manualmente nel tuo ciclo di sviluppo. I programmi Java e .NET possono anche usare lo strumento OWASP Dependency-Check.<br \/>\nQuando dovreste eseguire uno strumento? Se potete tollerare il tempo che aggiunge ad un check-in, vi suggerisco di eseguirlo su ogni check-in che potete. In primo luogo, potreste aver aggiunto un nuovo pacchetto alla vostra applicazione durante le vostre ultime modifiche, e se il pacchetto \u00e8 difettoso, vorreste saperlo subito in modo da poter prendere i passi elencati in questo articolo per risolvere il problema. In secondo luogo, le nuove vulnerabilit\u00e0 vengono scoperte cos\u00ec spesso che vi capiter\u00e0 regolarmente di scoprire un nuovo problema in un pacchetto che prima andava bene.<br \/>\nCome minimo, eseguite un controllo automatico delle vulnerabilit\u00e0 prima di un passo importante nel ciclo di vita, come il controllo della qualit\u00e0 o il deployment. Non volete entrare in una fase importante del ciclo di vita con una vulnerabilit\u00e0, perch\u00e9 correggerla diventa molto pi\u00f9 costoso.<\/p>\n<p>L&#8217;esecuzione di scanner di vulnerabilit\u00e0 su base regolare \u00e8 una parte centrale di DevSecOps, una pratica di tendenza che integra la sicurezza nel ciclo di vita dell&#8217;applicazione. Alcuni ambienti normativi, tra cui sia la CIA che l&#8217;FBI, richiedono scansioni che seguono il Security Content Automation Protocol (SCAP). SCAP \u00e8 stato sviluppato dal NIST e ha un&#8217;implementazione open source chiamata Open SCAP.<br \/>\nFacili correzioni<br \/>\nHai scoperto una vulnerabilit\u00e0! Speriamo che la correzione sia rapida e indolore. Se gli sviluppatori del pacchetto hanno rilasciato una nuova versione con la correzione, tutto quello che dovete fare \u00e8 ricostruire la vostra applicazione usando la versione corretta. Naturalmente, ogni modifica ad un pacchetto introduce potenzialmente nuovi problemi, quindi \u00e8 necessario eseguire i test di regressione dopo l&#8217;aggiornamento.<br \/>\nUna tendenza sofisticata nella costruzione del software \u00e8 rappresentata da Project Thoth, uno strumento open source sviluppato da Red Hat per trovare librerie sicure per applicazioni Python. (Thoth non si limita ad estrarre l&#8217;ultima versione stabile di ogni libreria usata dall&#8217;applicazione; consulta vari database pubblici e cerca di raccomandare una combinazione di pacchetti che funzionino insieme senza difetti. Lo stesso approccio \u00e8 stato copiato dagli sviluppatori di altri linguaggi di programmazione.<br \/>\nSe non c&#8217;\u00e8 ancora una nuova versione che ha risolto la vulnerabilit\u00e0 del software, forse potete trovare una vecchia versione della libreria che non contiene la vulnerabilit\u00e0. Naturalmente, se la vecchia versione ha altre vulnerabilit\u00e0, non vi aiuter\u00e0 molto. E se la vecchia versione sembra soddisfare le vostre esigenze, dovete assicurarvi di non dipendere dalle caratteristiche aggiunte alle nuove versioni, e di nuovo dovete eseguire i vostri test di regressione.<br \/>\nDeterminare la portata di un difetto<br \/>\nSupponiamo che le soluzioni suggerite nella sezione precedente non siano disponibili. Siete bloccati a costruire il vostro programma con una libreria che ha una falla di sicurezza identificata. Ora sono necessarie alcune ricerche e ragionamenti sottili.<br \/>\nGuardate le circostanze che possono innescare una violazione. Molti exploit sono teorici quando i ricercatori di sicurezza li segnalano, ma possono diventare rapidamente reali. Quindi leggete il rapporto di vulnerabilit\u00e0 per vedere i requisiti che un attaccante deve avere per diventare un rischio. Hanno bisogno di un accesso fisico al vostro sistema? Hanno bisogno di essere superuser (root)? Una volta che diventano root, probabilmente non hanno bisogno di sfruttare la vostra falla per creare il caos. Potreste decidere che \u00e8 improbabile che un attaccante sia in grado di eseguire l&#8217;exploit nel vostro particolare ambiente.<br \/>\nAlcuni scanner automatici di vulnerabilit\u00e0 sono apertamente sensibili. Potrebbero segnalare qualcosa come un problema, ma voi potreste decidere che non \u00e8 un problema nel vostro caso.<\/p>\n<p>Potreste anche essere in grado di inserire pi\u00f9 controlli per garantire che la falla non venga sfruttata. Supponiamo che un argomento passato alla funzione vulnerabile sia la lunghezza di un buffer, e che l&#8217;exploit sia un rischio solo se tale argomento \u00e8 negativo. Naturalmente, la lunghezza di un buffer dovrebbe essere sempre zero o positiva. Il vostro programma non chiamer\u00e0 mai legittimamente la funzione con un valore negativo in quell&#8217;argomento. Potete rafforzare la sicurezza aggiungendo questo prima di ogni chiamata alla funzione:<br \/>\n\u00a0\u00a0\u00a0 if (argument < 0)\n, exit; \nAltri exploit funzionano iniettando caratteri che non dovrebbero mai essere usati in input legittimi, quindi potete controllare questi caratteri prima di passare input alle funzioni. Alcuni linguaggi, seguendo un'innovazione introdotta molti anni fa in Perl, marcano le variabili a rischio come \"contaminate\" in modo da sapere che le avete controllate per violazioni della sicurezza.\nPotrebbe essere pi\u00f9 facile aggiungere un controllo per l'input pericoloso in un proxy dell'applicazione o in un altro wrapper, invece di inserire tali controlli in tutta l'applicazione.\nQuesto workaround dovrebbe essere temporaneo, perch\u00e9 i manutentori della libreria dovrebbero risolvere presto il bug.\nSe nessuno ha condiviso questo workaround con la comunit\u00e0, aggiungete un commento al problema che ha riportato la falla, e offrite la vostra soluzione agli altri.\nA proposito, potreste determinare che la falla riportata colpisce una funzione che non state chiamando. Ma fate attenzione, perch\u00e9 potreste chiamare qualche altra funzione nella libreria che chiama indirettamente la funzione insicura. Ci sono strumenti di tracciamento e profilazione che vi permettono di guardare l'intera gerarchia delle chiamate di funzione nella vostra applicazione, cos\u00ec potete vedere se siete a rischio.\nForse siete proprio nel mirino degli attaccanti: state usando una funzione con una falla che non potete aggirare. Quindi considerate: avete bisogno della funzione con la falla? Ci sono spesso librerie alternative che offrono funzioni simili. Oppure l'uso particolare che state facendo della funzione potrebbe essere abbastanza semplice per voi da codificarla da soli. Ma scrivere la propria versione della funzione \u00e8 una cattiva idea, perch\u00e9 \u00e8 pi\u00f9 probabile che introduciate dei bug piuttosto che risolvere il problema. Dopo tutto, siete anche meno esperti di codifica sicura dei manutentori della libreria. (Se siete pi\u00f9 esperti di loro, aiutateli a sistemare la libreria!)\nC'\u00e8 anche la possibilit\u00e0 che vi sentiate abbastanza sicuri delle vostre capacit\u00e0 di codifica, e che abbiate abbastanza familiarit\u00e0 con il pacchetto che state usando, per offrire una correzione di bug. Questa \u00e8 un'opzione solo per i pacchetti open source, ma spero che stiate usando pacchetti open source ogni volta che potete.\nNon voglio concludere senza ricordare che la difesa in profondit\u00e0 \u00e8 sempre importante. Per esempio, se la vostra applicazione \u00e8 per uso interno, le regole del firewall e l'autenticazione dovrebbero assicurare che state comunicando solo con utenti legittimi. D'altra parte, anche un utente interno potrebbe essere malintenzionato, o potrebbe essere compromesso da un estraneo che lo usa come passaggio per entrare nel vostro server. Quindi un'applicazione sicura \u00e8 ancora necessaria.\nConclusione\nLe falle di sicurezza sono un rischio costante nello sviluppo del software, e sono tutte intorno a noi. Dovete stare attenti a queste vulnerabilit\u00e0, perch\u00e9 una falla nel vostro sistema potrebbe permettere un attacco ransomware, il furto di dati sensibili dei clienti, lo sfruttamento del vostro sistema in una botnet, o qualche altro brutto risultato. Cercate di non essere vittime.\nMa ci sono cos\u00ec tante falle che non potete semplicemente assumere l'atteggiamento di eliminare ogni libreria contro cui \u00e8 stata segnalata una falla. Se \u00e8 disponibile un aggiornamento, installatelo prontamente. Negli altri casi, spero che questo articolo vi abbia aiutato a prendere decisioni ragionevoli per preservare la vostra sicurezza.\n\u00a0\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quasi tutto il software chiama pi\u00f9 livelli di librerie di terze parti. Supponiamo, per esempio, che un programma Java invochi una funzione da una libreria standard per formattare una data. Quella funzione potrebbe a sua volta chiamare una funzione da &#8230; <a href=\"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/\" class=\"button-link\">Per saperne di pi\u00f9<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[8],"country":[],"language":[431],"ppma_author":[491],"class_list":["post-14325","post","type-post","status-publish","format-standard","hentry","category-non-categorizzato","language-english-it"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti - Linux Professional Institute (LPI)<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti\" \/>\n<meta property=\"og:description\" content=\"Quasi tutto il software chiama pi\u00f9 livelli di librerie di terze parti. Supponiamo, per esempio, che un programma Java invochi una funzione da una libreria standard per formattare una data. Quella funzione potrebbe a sua volta chiamare una funzione da ... Per saperne di pi\u00f9\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Linux Professional Institute (LPI)\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LPIConnect\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-22T08:46:17+00:00\" \/>\n<meta name=\"author\" content=\"developer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:site\" content=\"@lpiconnect\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"developer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/\"},\"author\":{\"name\":\"developer\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#\\\/schema\\\/person\\\/a000f7d75edad76fc8f2dd5dc0399f1a\"},\"headline\":\"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti\",\"datePublished\":\"2023-06-22T08:46:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/\"},\"wordCount\":1724,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#organization\"},\"articleSection\":[\"Non categorizzato\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/\",\"name\":\"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti - Linux Professional Institute (LPI)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#website\"},\"datePublished\":\"2023-06-22T08:46:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/articles\\\/how-handle-vulnerabilities-third-party-programming-libraries-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/\",\"name\":\"Linux Professional Institute (LPI)\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#organization\",\"name\":\"Linux Professional Institute (LPI)\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"contentUrl\":\"https:\\\/\\\/www.lpi.org\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/logo.png\",\"width\":496,\"height\":175,\"caption\":\"Linux Professional Institute (LPI)\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/LPIConnect\",\"https:\\\/\\\/x.com\\\/lpiconnect\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/35136\",\"https:\\\/\\\/www.instagram.com\\\/lpi_org\\\/\",\"https:\\\/\\\/fosstodon.org\\\/@LPI\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.lpi.org\\\/it\\\/#\\\/schema\\\/person\\\/a000f7d75edad76fc8f2dd5dc0399f1a\",\"name\":\"developer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ad516503a11cd5ca435acc9bb6523536?s=9615105800a0270a384212262298083881\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ad516503a11cd5ca435acc9bb6523536?s=96\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ad516503a11cd5ca435acc9bb6523536?s=96\",\"caption\":\"developer\"},\"sameAs\":[\"https:\\\/\\\/www.lpi.org\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti - Linux Professional Institute (LPI)","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/","og_locale":"it_IT","og_type":"article","og_title":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti","og_description":"Quasi tutto il software chiama pi\u00f9 livelli di librerie di terze parti. Supponiamo, per esempio, che un programma Java invochi una funzione da una libreria standard per formattare una data. Quella funzione potrebbe a sua volta chiamare una funzione da ... Per saperne di pi\u00f9","og_url":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/","og_site_name":"Linux Professional Institute (LPI)","article_publisher":"https:\/\/www.facebook.com\/LPIConnect","article_published_time":"2023-06-22T08:46:17+00:00","author":"developer","twitter_card":"summary_large_image","twitter_creator":"@lpiconnect","twitter_site":"@lpiconnect","twitter_misc":{"Scritto da":"developer","Tempo di lettura stimato":"8 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/#article","isPartOf":{"@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/"},"author":{"name":"developer","@id":"https:\/\/www.lpi.org\/it\/#\/schema\/person\/a000f7d75edad76fc8f2dd5dc0399f1a"},"headline":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti","datePublished":"2023-06-22T08:46:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/"},"wordCount":1724,"commentCount":0,"publisher":{"@id":"https:\/\/www.lpi.org\/it\/#organization"},"articleSection":["Non categorizzato"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/","url":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/","name":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti - Linux Professional Institute (LPI)","isPartOf":{"@id":"https:\/\/www.lpi.org\/it\/#website"},"datePublished":"2023-06-22T08:46:17+00:00","breadcrumb":{"@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lpi.org\/it\/articles\/how-handle-vulnerabilities-third-party-programming-libraries-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lpi.org\/it\/"},{"@type":"ListItem","position":2,"name":"Come gestire le vulnerabilit\u00e0 nelle librerie di programmazione di terze parti"}]},{"@type":"WebSite","@id":"https:\/\/www.lpi.org\/it\/#website","url":"https:\/\/www.lpi.org\/it\/","name":"Linux Professional Institute (LPI)","description":"","publisher":{"@id":"https:\/\/www.lpi.org\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lpi.org\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.lpi.org\/it\/#organization","name":"Linux Professional Institute (LPI)","url":"https:\/\/www.lpi.org\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.lpi.org\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","contentUrl":"https:\/\/www.lpi.org\/wp-content\/uploads\/2023\/04\/logo.png","width":496,"height":175,"caption":"Linux Professional Institute (LPI)"},"image":{"@id":"https:\/\/www.lpi.org\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LPIConnect","https:\/\/x.com\/lpiconnect","https:\/\/www.linkedin.com\/company\/35136","https:\/\/www.instagram.com\/lpi_org\/","https:\/\/fosstodon.org\/@LPI"]},{"@type":"Person","@id":"https:\/\/www.lpi.org\/it\/#\/schema\/person\/a000f7d75edad76fc8f2dd5dc0399f1a","name":"developer","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/ad516503a11cd5ca435acc9bb6523536?s=9615105800a0270a384212262298083881","url":"https:\/\/secure.gravatar.com\/avatar\/ad516503a11cd5ca435acc9bb6523536?s=96","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ad516503a11cd5ca435acc9bb6523536?s=96","caption":"developer"},"sameAs":["https:\/\/www.lpi.org"]}]}},"views":119,"authors":[{"term_id":491,"user_id":1,"is_guest":0,"slug":"developer","display_name":"developer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ad516503a11cd5ca435acc9bb6523536?s=96","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/posts\/14325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/comments?post=14325"}],"version-history":[{"count":0,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/posts\/14325\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/media?parent=14325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/categories?post=14325"},{"taxonomy":"country","embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/country?post=14325"},{"taxonomy":"language","embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/language?post=14325"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.lpi.org\/it\/wp-json\/wp\/v2\/ppma_author?post=14325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}