Cum reacționezi atunci când găsești o gaură de securitate?

Salut!

O sa raspund, pe rand, unora de aici (sper tuturor), dar, in primul rand, vreau sa fac doua precizari. Un fel de tl;dr:

  • In primul rand, multi oameni m-au acuzat ca i-am insultat pe cei de acolo. Din pacate, asta este demonstrabil fals, avand in vedere ca dupa faza de sambata seara, solutia lor a fost sa schimbe host-ul din fisierul de config (in localhost, fara sa scoata port forwarding-ul) si sa schimbe parola din fisierul de config. Acesti oameni sunt, prin definitie, incompetenti.
  • In al doilea rand, eu cand le-am sters baza de date, aveam un backup si ma uitasem prin el, nu era absolut nimic acolo. Nu contest ca poate am procedat gresit avand datele de la inceput, dar timpul mi-a demonstrat ca nu am gresit. Rationamentul meu la momentul respectiv a fost: “daca doar le zic asta, nu se va intampla nimic”. A doua zi am gasit solutia mai buna, doar sa le schimb parola. Oh, well, hindsight.

Acum, o sa o iau punctual:

@iamntz:

O reacție foarte… interesantă din partea unui utilizator ce a găsit o gaură majoră de securitate. Atenție, limbaj elevat :slight_smile:

Nu stiu de ce crezi ca sunt ‘(un) utilizator’, si cred ca limbajul meu, desi nu sunt un Cartarescu mai mic, este destul de elocvent incat sa comunice ceea ce vreau sa zic. Ce ai citat tu acolo este raspunsul meu cuiva care mi-a dat un link catre ‘cum sa-ti faci prieteni’.

Abordarea mea ar fi fost, în ordine:

un mesaj în privat celui ce a făcut acel commit
și/sau un pull request cu o variantă securizată
public shaming după câteva zile, dar fără a demonstra că am fost birjar în ultimii zece ani.

Nu, dar ce faci tu aici nu demonstreaza ca nu ai fost birjar.

Mai mult, nu pot sa dau pull request cu o varianta securizata (that’s the whole point… asta se face in afara repo-ului), si, oricum, nu vad ce ar fi rezolvat. Hackathonul s-a terminat, nimeni de acolo nu a inteles nimic, data viitoare vor continua sa faca asta.

@horia141

Aparent “descoperitorul” este “Security Bug Bounty Hunter”. Deci ar trebui sa stie mai bine modul corect de a aborda o organizatie in legatura cu security issues. Abordarea a fost in schimb “din topor”/“dau cu bata in balta”. Did not win any friends.

Ca fapt divers, eu nu fac asta ca ‘day job’. Da, am badge-ul ala pentru ca am gasit o vulnerabilitate in github si le-am raportat-o. Si am mai gasit cateva in diverse alte servicii (din cauza unuia din ele ma gandesc sa-mi fac un ‘site’ ca sa pot sa public, la vreo 2 luni dupa ce le-am raportat problemele initial)
Stiu modul de a aborda o_organizatie in legatura cu asta. Aici nu era o organizatie, ci un grup de oameni care incearca sa dovedeasca ca (nu cred in cacafonii, inainte sa-mi zica cineva ceva) sunt capabili de a face asa ceva. Nu sunt capabili, si imi pare rau ca si-au pierdut timpul aici. Mai mult, nu vreau sa imi fac prieteni, vreau sa avem ceva facut calumea. Vezi, apropos, mai sus faptul ca admit ca nu a fost abordarea ideala, pentru ca le-am sters baza de date (care era aproape complet goala), in loc sa fac un script care verifica repo-ul si schimba parola daca aparea in cod. Nu am distrus nimic si asa ii incurajam sa faca o chestie corecta.

Ce ma deranjeaza pe mine, ca o paranteza, nu este faptul ca mai multe persoane de acolo habar nu au cum se face asta, ci ca nimeni nu are un project skeleton, un template, o chestie, ceva care sa rezolve problemele astea. Totul duhneste a incompetenta (nu numai din punct de vedere al securitatii, asa cum mentioneaza si @emanuel, majoritatea proiectelor sunt teribile) si asta ma deranjeaza. Incepand cu faptul ca site-ul govithub nu are un certificat valid, continuand cu ce mi s-a spuns despre unele persoane alese ca fellows, si terminand cu ce s-a realizat prin acest hackathon, cred ca acest proiect, desi bine intentionat, sufera de mari probleme de management.

In alta ordine de idei, “stocarea secretelor”, nu e o problema usor de rezolvat, si clar nu intr-un hackaton in care lumea incerca sa faca ceva ce sa mearga in 12 ore, nu sa scrie codul de productie. Cut the folks some slack.

Scuze, dar asta e o afirmatie stupida. Problema este rezolvata, exista zeci de solutii, incepand cu A NU LASA BAZA DE DATE ACCESIBILA DIN AFARA. Asta nu e neaparat problema lor, ci a celor de la ICI sau STS, depinde cine s-a ocupat de a organiza asta, dar asta nu ii scuza. Pe fostul issue din github existau niste alte solutii, eu personal folosesc (in ultima vreme) secrets in Kubernetes, dar inteleg ca nu e usor sa ai un proiect in k8n la un hackathon, dar exista multe alte solutii. Vault este o solutie buna

Mai mult, scurtaturile luate acum duc numai la technical debt. Peste 3 luni, cineva de la Teamnet (pentru ca PSD a castigat alegerile) o sa vina si o sa zica “ah, deci e okay sa faci asta”, si o sa ajungem ca toate datele noastre personale sa fie publice.

Toate bazele de date care accepta SQL ca input, sufera de SQL injection. E ceva ce tine de aplicatie.
IDK daca MySQL face treaba mai usoara, cu reguli grele de escaping etc., dar nu te scuteste pe tine sau ORM-ul ales sa faci query-uri cum trebuie.

Nu implementezi tu regulile, ci folosesti mysql_irealescape_forrealz_plz(), sau cum ii zice functiei aleaia. In fine, uita-te la restul proiectelor de acolo, ca sa vezi cat de stupida este situatia.

@redecs

Exact, sunt un birjar!

@dakull

I think everyone is missing the elephant in the room - bad publicity? someone doesn’t like that project? this literally started a shit storm si toate comentariile pe langa de fapt vor sa demonteze proiectul in sine.

Sincer, mie mi se pare okay ideea. Implementarea e de cacat, si faptul ca i-as suge lupa lu’ Ciolos nu o sa ma faca sa nu critic cacatul generat de hackathonul asta. Pe bune. Stiu ca @emanuel a dat linkul (intre timp au mutat totul intr-un singur repo, pentru ca…), dar uita-te aici, serviciul care ar trebui sa tina autentificarea si autorizarea tuturor platformelor guvernului romaniei.

Daca nu iti vine sa fugi dupa 5 minute, hai sa-ti dau un exemplu:

  $sql = "SELECT email, password, active, rights FROM users WHERE email = '".$email."' and password = '".md5(md5($password.$pass))."'"; //urmeaza sa schimb metoda de criptare

Imi pare rau, dar nici nu stiu de unde sa incep in a comenta codul asta.

@adavidoaiei

intr-un limbaj mai putin obscen

Obscen? Unde am fost eu obscen?

@Bogdan_Ciubotariu

parcă românii erau cei mai jmecheri IT-iști și erau bazați pe toată programarea din lume. Cum se poate ca după un eveniment de asemenea anvergură de genul hackatlon-ului organizat de guvern să se plângă lumea de „calitatea slabă a programatorilor” de acolo? :)))))

A doua limba vorbita la microsoft? Ce limbaj elevat, birjarii sunt invidiosi.

Nu o sa raspund postului de pe facebook al lui Lucian Ghinda (o sa raspund maine, deja aman de 3 zile raspunsul asta), dar, o sa zic la final o singura… okay, DOUA chestii:

Multa lume m-a acuzat ca nu ma implic, ca nu fac nimic. Din pacate, nu pot sa particip (asa cum stiu toti cei care s-au dus sa faca brigading pe reddit) la chestii in Romania. Nu mai sunt in Romania, si desi nu sunt foarte departe, nu imi permit sa petrec 6 ore pe drum pentru un hackathon de genul. In viitor, o sa urmaresc contul lor de github, si probabil voi avea contributii mai utile. Dar, atacurile facute la adresa mea, de la “esti birjar”, trecand prin “esti idiot”, si terminand cu “vrei doar sa discreditezi proiectul”, sper ca vor inceta, si vom putea sa avem o conversatie despre ce s-a intamplat.

Si, pe bune, ultimul lucru pe care-l zic! Daca nu am raspuns vreunui punct/unei persoane, va rog sa-mi spuneti. Nu am facut-o intentionat, si imi cer scuze. Sincer, chiar vreu sa avem o discutie despre de ce asa de cacat software-ul facut pentru guvern (si zic asta ca persoana o persoana direct interesata, care a stat 3 ore sa-si faca un pasaport temporar la o ambasada), si de ce nu cerem mult mai mult de la cei care scriu software pentru guvern decat de la cei care ne fac temele de wordpress…

10 Likes

I agree(d):

Bine ai venit pe forum! :slight_smile:

Permite-mi să te citez din discuția de pe Reddit:

gcbirzan 16 points 6 days ago
Ce idioti… […] Cum *** mea au fost angajati astia?

Asta ca să lămurim treaba cu birjărismele și insultele.


Da, știu că nu e vorba[1] de boboci, dar gândește-te cum ar fi fost ca la primul tău loc de muncă (sau primul proiect la care ai contribuit) să vină cineva să-ți spună că ai făcut o mizerie, că ești incompetent, că ești idiot etc. Cel mai probabil ar fi fost profund demoralizator și te-ar fi afectat mai mult sau mai puțin pe tot parcursul carierei tale.

Cred că suntem de acord că poți să tragi pe cineva de urechi astfel încât să nu rămâi cu urechile în mână…

Nu mă înțelege greșit, nu vreau sub nici o formă să minimizez gravitatea erorii. Doar abordarea este un pic… deplasată.

Te așteptăm pe DevForum, ai categorie de Blogs :wink:


[1] Nu ar trebui.

2 Likes

Argumentul ăsta este complet invalid pentru că la astfel de aplicații nu au ce căuta să scrie cod începătorii.

2 Likes

De exemplu la SPIT in Constanta construiau query-uri prin concatenare de string-uri din input, ca sa ii hackuiesti solutia era simpla, completai query-ul curent, si dupa mai adaugai altul.

Cred ca ar treb. sa facem un security hackaton i.e. hack everything from the gov. send the report and then, maybe, maybe they’ll actually invest in fixing all that stemming pile of crap they call sistem informatic.

Revenind la what grinds my gears with GovITHack: nu inteleg de ce nu rezolva sistemul mai intai si apoi aplicatii dragute peste un API consistent, documentat, securizat si functional. It’s like putting a nice flower over a stemming pile of crap.

EDIT:

Am vazut ca este un proiect cu SSO - cu ce ma ajuta asta daca ceea ce este sub el poate fi hacked via SQL injection?

Aici vorbim nu de software care sa ajunga sa fie folosit de guvernul unui stat. Cine ajunge sa scrie soft de genul asta nu e la primul job. La un alt proiect a lucrat un elev de clasa a 12-a.

Tind să cred că atât tu cât și @Bogdan_Ciubotariu ați sărit nota de subsol :slight_smile:

4 Likes

Am facut un fork la proiectele de la GovIT, mi-ar placea sa contribui dar dupa cum am spus nu imi place fiindca nu prea se aplica:

• It is applying best practices in software engineering like clean code, unit testing, integration testing, dependancy injection, code review, scrum, technical and user documentation, the code is high quality and very stable.

parca am fi in epoca de piatra.

1 Like

Un sfat bun pe care l-am primit recent in legatura cu notele de subsol a fost sa incetez sa le mai folosesc. Lumea e prea putin obisnuita cu ele in texte online, si strica flow-ul citirii. Am reflectat putin si i-am dat dreptate persoanei, iar scrisul meu este mai bun, drept urmare.

2 Likes

Nu era un raspuns adus lui @iamntz, era o parere personala, 90% din seniori pe care ii stiu nu aplica principiile de mai sus, si lucreaza in multinationale, nu e vorba de boboci, e vorba de cultura fiecaruia.

1 Like

@adavidoaiei era complet off-topic ce ziceam eu. Inca n-am apucat sa inteleg ce s-a mai intamplat in thread-ul asta :). Ar trebui cineva sa o separe intr-un alt thread chiar.

da, ce poti spune despre politicienii romani, in special de psd.

https://birzan.org/~gcbirzan/voanews.txt