Codul Open Source înseamnă cod vulnerabil?

În majoritatea cazurilor declanșatorul problemei este unul dintre plugin-uri sau tema folosită. Cam asta e consecința folosirii unor plugin-uri/teme cu sursă deschisă.

De fapt, site-ul tău devine o țintă din momentul în care ai ales să-ți construiești site-ul folosind wordpress. Cred că va trebui să te obișnuiești cu ideea că se mai poate întâmpla din când în când.

Asta e security through obscurity și ar însemna, de exemplu, că nu ar trebui să folosească kernelul Linux cateva sute de milioane de dispozitive.

Și nici software-ul cu surse private nu s-a dovedit în practică să aducă beneficii majore de securitate.

2 Likes

Nu prea sunt de acord cu tine. Este ca și cum ai spune că vederea pe care o ai în casă uitându-te pe fereastră din exterior este aceeași cu vederea pe care o ai mergând prin casă.

O aplicație care are codul sursă public este supusă unui risc mai mare de exploatare a posibilelor vulnerabilități. Asta se întâmplă cu orice aplicație. Nu face excepție nimic.

Inițiatorul subiectului avea posibilitatea să-și creeze un site custom și să-și țină departe de ochii lumii codul sursă (cel care rulează pe server). Riscul în cazul ăsta ca cineva să-i atace site-ul ar fi scăzut considerabil.

Fiind vorba de wordpress, site-ul lui a fost cules și pus într-o grămadă.

De asta are Windows reputația de a fi un OS foarte sigur, că e sursă închisă.

Sau Flash.

Sau Solarwinds.

Sau LastPass.

Exact asta înseamnă securitate prin obscuritate.

Gen dacă ești afară nu vezi că ușa e de carton, deci ești în siguranță.

1 Like

Da. Iar Adrian a spus că software-ul cu sursă privată nu aduce un beneficiu. Unde am greșit, că nu mă prind ? :smiley:

S-a plecat de la premisa lansată de tine: fiind open source este, implicit, vulnerabil.

Ori un soft vulnerabil este vulnerabil, indiferent dacă este sau nu open source.


Dincolo de asta, recitește ce ai scris și vezi cât de mult l-ai ajutat pe OP dând un răspuns generic și vag, care spune, de fapt, nimic…

Suggestion

Am recitit și nu am greșit cu nimic. Cred că e destul de clar ce am spus.

Aș zice chiar că mi-ai pus cuvinte în gură. Eu n-am spus că o aplicație în sine este mai vulnerabilă dacă este open source, ci că fiind open source devii o țintă pentru hackeri. Sunt două lucruri diferite. Deci, da, pot să repet, în condițiile astea site-ul lui a fost afectat ca o consecință a folosirii unor plugin-uri/teme cu sursă deschisă.

1 Like

Dacă asta ai vrut să zici, să știi că are mult mai puțin sens. Varianta că open source=mai vulnerabil e măcar o opinie populară.

Cum adică “țintă legitimă”? Dacă lași cheile in ușă ești o țintă legitimă?

legitim, legitimă adjectiv

  1. Care este întemeiat pe lege, care se justifică prin lege, care este recunoscut conform unui drept.

Legea pedepsește și dacă ai intrat în casa cu cheile in ușă, și dacă root era fara parola și se putea autentifica pe SSH. E fapta penală, indiferent de nivelul de securitate la victimei.

Vulnerabilităților ușor de exploatat sunt identificate mai ușor în codul open source și mai greu în codul closed source.

Apoi, cod open source important/popular e analizat de o mulțime de ochi, mult mai mulți decât codul closed source.

Relația dintre closed sau open și număr de vulnerabilități e o funcție mai complexă, zic eu, care include, mai ales, popularitatea aplicației (implicit, cat de multi au încercat să o spargă), calitatea codului și dacă este întreținut activ codul.

Măsuri minime pentru a nu avea WordPress spart:

  1. Actualizează WordPress periodic, cat mai curând după ce apare un update. Eventual automat.
  2. Nu folosi pluginuri obscure sau neactualizate. Pluginuri care nu au macar câteva mii de instalări active și nu au actualizări in ultimele luni ridica semne de întrebare. Un plugin neactualizat de un an sau mai mult e probabil abandonat și nu ar trebui folosit.
  3. Actualizează periodic pluginuri. E principalul vector prin care e spart un WordPress. Iar daca ai cod custom, aloca buget pentru un dev să îți faca actualizări cu focus pe securitate (eventual audit de la un terț).
  4. E bine sa ai ceva plugin de securitate, ex. Wordfence, să te protejeze macar de brute force pe parole.
  5. Pregătește-te să fii spart (sau Disaster Recovery Plan). 1. Backup (evident, userul sub care rulează PHP nu trebuie sa aibă acces să îți șteargă sau modifice backup-uri :slight_smile: ). 2. Limiteaza codul PHP să ruleze sub un user Linux dedicat pentru WordPress. Adică adică după ce atacatorul poate uploada codul lui PHP, custom, care rulează sub userul sub care rulează tot WordPressul, să nu aibă acces la alte date (ex. idee proasta sa rulezi WordPress și un CRM sub același user Linux).
  6. Deci tema recurenta e întreținerea unui site. E un șablon comun: faci site, zero efort de întreținere. E șablonul prin care site-ul va fi cu siguranță spart. E doar o problema de timp.
  7. Dacă se poate, înlocuiește WordPress cu un static CMS (Jekyll, Hugo, Pelican etc.). Obții performanta de sute sau mii de ori mai buna și limitezi drastic problemele de securitate.
5 Likes

Îmi pare rău, dar mi-e greu să-ți răspund pe larg pentru că aș pune aici informații prea sensibile care ar putea să afecteze utilizatorii într-un fel sau altul. Prefer să-mi văd de treabă.

Totuși, n-am cum să nu-ți spun că începutul mesajului tău este o interpretare greșită față de cum stau lucrurile în realitate. Aș putea să demontez începutul mesajului tău și la final ai spune “a, ok”.

Iar prin țintă legitimă m-am referit la faptul că hackerii au motive întemeiate/justificate să aleagă wordpress. Pentru că este open-source. Nu am intenționat să spun că este moral corect sau legal ce fac ei.

Nu este o corelație directă între open source și vulnerabilitate.

Firefox, Chrome (prin Chromium) .NET Core, Python, PHP, MySql, MariaDB sunt open source și aș zice că ar aduce un ROI mai mare pentru un potențial atacator.

Poate că la WP este o altă problemă, nu că-i open source?[1]


  1. amânarea actualizărilor și teme/plugin-uri din surse dubioase fiind pe primele locuri. ↩︎

1 Like

La WP ai și opțiunea de a-l utiliza ca un API GraphQL pentru un front-end headless sau pur si simplu publici doar o pagină statică și ascunzi panoul de admin.

Open-source poate fi vulnerabil, este mai vulnerabil dar este și foarte ușor de întreținut.

Cand a fost nebunia cu log4shell, comunitatea open source s-a miscat repede si vulnerabilitatea a fost mitigata si reparata.

2 Likes

Eu înțeleg ce vrea să spună OP și în general tind să am aceeași opinie.

Deși securitatea prin obscuritate nu elimină riscul teoretic de a fi “spart”, poate reduce drastic șansele practice de a se întâmpla acest lucru.

De exemplu, probabil mulți dintre noi schimbă portul pe care ascultă ssh-ul. Din acest motiv, chiar dacă apare un 0-day vulnerability pe ssh, este foarte probabil ca cei care au făcut acest lucru să scape neafectați, sau măcar să câștige timp până apare un bugfix. De ce? Din simplul motiv că boții care scanează după vulnerabilitățile ssh-ului s-ar putea să nu ghicească portul, nu în timp util sau nu în timpul vieții noastre, decât dintr-un noroc chior.

La fel și pentru o aplicație web non-standard, o astfel de aplicație nu este interesantă pentru a fi spartă, din simplul motiv că nu merită efortul să o spargi, multă muncă, pentru un câștig minimal.

De altfel, forțând un pic, autetificarea prin user și parolă este prin definiție securitate prin obscuritate, right? În cele din urmă parola poate fi ghicită, întrebarea e dacă merită efortul.

LE Apropo de chestia asta, am mai argumentat pe tema obscurității: Securitate prin obscuritate

exact,
pana la urma conteaza foarte tare cat de “interesant” esti pentru atacator.
lasand la o parte instalarile standard de wordpress (fara macar cateva adaugiri de securitate de baza)… problema e in cat timp / efort cade siteul, nu daca o face.

cat despre custom vs open… e si aici o balanta:

  • la custom ai avantajul ca nu e codul public
  • dar la open ai avantajul ca o gramada de lume lucreaza la a corect probleme (pe care uneori nu esti constient ca le ai).

eu nu cred ca exista “cea mai buna solutie” in mod universal, ci solutia potrivita pentru fiecare problema in parte,
deci n-as spune ca una da si alta nu.

Pentru foarte mulți utilizatori de Wordpress este irelevant câtă lume lucrează la el, pentru că nu-l actualizează niciodată. Fiind o chestie de tipul “clica-clica”, amatorilor li se pare simplu să pună pe picioare un website în Wordpress, îl burdușesc cu pluginuri, după care uită de el.

Apoi, fiind o platformă foarte răspândită, merită efortul să faci un bot pentru el, din câteva milioane de website-uri tot nimerești câteva vulnerabile, fără multă muncă.

pai daca vorbim de amatori… nu mai are sens comparatie cu un custom.
un amator care nu poate pune minim la punct un wordpress… nu prea are sanse sa aduca macar in stare de rulare altceva (nici nu sic de securitate).

da, exista si beneficiul prin volum, dar repet, nu cred ca are sens sa analizam secuitate in custom vs open cand vorbim de siteuri construite de amatori sau neintretinute.

si daca ai un custom neintretinut… cu un bot prin care ataci in alt loc tot neintretinut (server web, db, so, etc) tot poti avea succes, nu iti trebuie musai un wordpress

Clar, există mulți vectori de atac, dar dacă dacă îi și multiplici… Până la urma securitatea se rezumă la “doamne ajută să fie bine ca să nu fie rău” :slight_smile: Ideea e să încerci să reduci numărul vectorilor de de atac la minimum și să faci să fie cât mai neprofitabil efortul de a fi “spart”.

E codul public in cazul open-source un vector atat de mare incat sa anuleze celelalte avantaje?

Sa zicem ca esti un atacator si ti s-a pus pata pe serviciul X care stii ca foloseste un soft open-source. Cu ce te ajuta asta?

  • Trebuie sa stii exact versiunea codului pentru a stii pe ce cod sa te uiti dupa vulnerabilitati. Nu chiar usor de aflat daca e un serviciu decent ce nu tipa pe toate gardurile ca ruleaza versiunea X sub apache Y cu PHP Z
  • Descarci codul si te apuci de cautat vulnerabilitati. La zeci/sute de mii de linii pe care nici autorii nu le mai inteleg… multa bafta. Ar trebui sa fie cod de amatori sa te prinzi cu usurinta in cateva minute ca aici sau dincolo e o vulnerabilitate.
  • Treci codul printr-un soft de detectare a vulnerabilitatiilor. Daca e asa usor, oare nu s-a gandit nici un autor sa faca asta inainte?

A nu se confunda cu ascunderea unui serviciu (gen SSH pe port de care doar tu stii). Poti avea un serviciu destul de vulnerabil dar daca sa nu pateasca nimic daca nu e accesibil publicului larg (restrictie pe IP de exemplu, nu port schimba).

raspunsul meu e… depinde de situatie.
pentru multe din scenariile standard… probabil ca un open bine construit ar trebui sa rezolve situatia.
dar sunt si cazuri in care faptul ca e open e tocmai piedica.
fiecare alege in functie de nevoi si resurse.

daca unul ar fi mereu bun si altul mereu rau… nu cred ca astazi ar mai exista ambele.