Infizierte Python Bibliotheken

Gute Links und Tutorials könnt ihr hier posten.
Antworten
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Vielleicht ist das für den einen oder anderen von Euch interessant.
https://www.zdnet.com/article/twelve-ma ... from-pypi/
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Ich befürchte, dass das momentan schon ein alt bekanntes Problem ist. Unglücklicherweise scheint es dafür keine automatisierten Verfahren zu geben, die so etwas rausfiltern, was mit Blick auf die Bedeutung der Plattform schon überrascht.

Warum nicht z. B. ähnlich aussehende Namen geblockt werden, kann ich nicht beantworten.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

pixewakb hat geschrieben: Dienstag 30. Oktober 2018, 16:21 Warum nicht z. B. ähnlich aussehende Namen geblockt werden, kann ich nicht beantworten.

Was ist denn ähnlich? Ist psycopg ähnlich zu psycopg2 weil es die nächste Version ist, oder weil es boshaft ist?

Solche Dinge zu entscheiden benötigt gesunden Menschenverstand. Bei der Menge der gelisteten Inhalte ist der nicht zu bezahlen. Außer man fordert Geld wie Apple für den AppStore, aber das ist ja auch wieder nicht recht.....
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Also ich würde schon meinen, dass man es regeln könnte, wenn man wollte. Versuch mal bei der Wikipedia einen Namen zu verwenden, der einem bereits registrierten Benutzer ähnlich ist. Das geht nicht und wird technisch verhindert. Ausnahmen im Einzelfall sollten auch technisch automatisch geprüft und genehmigt werden können. Ich meine, dass ein Hauptautor, der die Version eins eingestellt hat, auch die Version 2 einstellen darf. Weitere Prüfungen sollten ebenfalls automatisch beigegeben werden können. Wenn ich mich bei einem Webdienst an einem anderen Rechner anmelde, dann bekomme ich eine Nachricht und die Möglichkeit Missbrauch zu melden. Warum geht das bei PyPi nicht? Das Vertrauen der Nutzer ins System sollte ein hohes Gut sein, dass einigen Programmieraufwand wert ist. Meine Meinung.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe nichts gegen deine Meinung, ich teile die. Nur unterschätzt du den Aufwand. Wenn es so einfach wäre, schreib ein Programm das Spam so zuverlässig erkennt wie gefälschte Paketnamen, und werd reich. Ich bezweifele, dass du das hinbekommst. Ich genauso wenig. Es gibt genau gleich gelagerte Fälle mit Open Source Software wie zb Firefox im Google Play Store. Und Google mit seinem Geld, seiner AI Expertise, und seinem noch größeren Interesse das zu regeln bekommt das nicht hin. Aber ein paar unbezahlte FOSS-Entwickler?

Und Wikipedia hat tausende von Freiwilligen, die diese von dir genannten Aufgaben erledigen. Das ist der genannte Menschenverstand. Nur kann halt auch so ziemlich jeder erkennen, ob Hape Kärkeling das Original ist. Für Code sieht das schon anders aus. Du übersiehst doch schon deine eigenen bugs (auch hier: ich auch). Aber mal eben tausende Zeilen Code bei nem Point-Release eines Forks eines beliebten Projektes verifizieren ist soooooo einfach? Ist es halt nicht.

Alle System die das irgendwie halbwegs hinbekommen arbeiten mit Signaturen und damit einer Art Hürde vor dem Zugang. Auch das ist aufwendig, vor allem aber schränkt es die Nützlichkeit deutlich ein. Wie gesagt - der AppStore wird ja auch permanent bemeckert, weil man da lächerliche 100€ im Jahr zahlen muss.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Also ein falsches Firefox im Google Play Store ist ein schlechtes Beispiel, aber ich verstehe, was du meinst. In der Wikipedia gibt es keine tausenden Programmierer, das sind wenige festangestellte Programmierer bei der Foundation in US. Wenn ich manchmal so Vorträge bei Python-Meetups verfolge, dann wäre mein Eindruck, dass wir Software für die Mondreise programmieren, aber sich für die wesentlich kleinere Aufgabe niemand findet.

Ich würde das gerne korrigieren: Mir geht es nicht um Bugs oder schädliche Software-Teile, sondern eher um Sachen wie datetime bei PyPi, was anderes macht, als es sollte und die Tatsache nutzt, dass neue Programmierer noch nicht wissen, dass es schon in der Standardbibliothek ist. diango denke ich, könnte man rausfischen. Ein gut organisiertes Softwareprojekt sollte auch in der Lage sein schädlichen Code aufzufinden, insbesondere dann, wenn die Software nach Hause telefonieren möchte oder Sachen nutzt, die sonst eigentlich nicht genutzt werden usw. usf. Mir geht es nicht um den Software-Bug, sondern um absichtlich eingebrachte Schadsoftware bzw. Software-Pakete, die unter falschem Namen den Nutzer schädigen wollen. Wikipedia versucht schon seit einiger Zeit ein Vertrauensnetz aufzubauen. Auch da sehe ich also persönlich Möglichkeiten...
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich bin mir ziemlich sicher, dass man bei Wikipedia einen gleichen Namen mehrfach angeben kann. Dafür gibt es einfach zu viele Hans Müllers in dieser Welt. https://de.wikipedia.org/wiki/Hans_M%C3%BCller

Es läuft also darauf hinaus, das dein Hans Müller Eintrag zwar erstmal unterbunden, aber dann händisch geprüft werden muss.

Und was mach mein Beispiel bitte schlecht? Es ist das exakte Äquivalent. Fork eines beliebten Projekts mit maliziösem Code drin. Wo bitte passt das nicht?

Deine ganzen Beispiele laufen immer noch auf die gleiche simple idee hinaus. Und die geht nicht. Es ist legitim, Projekte ähnlich zu benennen, wie ich schon in meinem ersten Post schrieb. Und du willst Pakete mit Namen aus der Standardbibliothek verbieten? Super Idee, wie dir jeder programmier der das subprocess Modul VOR seiner Einführung in Python 2.5 (glaube ich, konkrete Version irrelevant) benutzt hat, und es ggf weiterhin mit einer älteren Version nutzen muss oder mag, in deutlichen Worten mitteilen wird.

Aber letztlich ist es an dir, Butter bei die Fische zu tun. Schlag was vor, überzeug die Leute. Ich programmiere derweil an einem Marsroboter. Das habe ich nämlich schon mal gemacht, und weiß, wie das geht. Anders als so einen Boshaftigkeitsfilter ;)
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Schau mal hier:

https://de.wikipedia.org/wiki/Kategorie:User_de

Ein Problem in der Wikipedia war immer, dass l (L) und 1 (1) in deren Schrift ähnlich aussieht, so dass Benutzer gerne schon mal einen Benutzernamen leicht verändert haben, um Schabernack zu treiben.

Code: Alles auswählen

>>> name1 = "Angela"
>>> name2 = "Ange1a"
>>> name1 == name2
False
Letztlich geht es bei den Projektnamen im verlinkten Artikel auch um Tippfehler bei pip, die sich die Autoren zunutze machen möchten, um den Benutzer zu schaden. Ich habe leider auch noch andere Sachen zu erledigen und ja, ich hoffe, dass ich selbst von so etwas nicht betroffen sein werde. Letztlich kann man nur hoffen, weil ich m. E. auch nicht immer daran denke, wenn ich mal mitten in der Arbeit bin.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nachtrag: du hast augenscheinlich nicht verstanden, was ich mit Bezug auf bugs meinte. Es geht nicht darum, die automatisch zu finden. Sondern das schon ein wohlmeinender, das Projekt kennender Reviewer Fehler nur schwer findet. Für einen händischen Prozess der Bewertung (wie ich ihn ultimativ unterstelle) hast du aber Leute, die den Code NICHT kennen, und denen dadurch prinzipbedingt was durchgeht. Siehe die vielen Fälle, in denen es gelang, Schadcode zu BESTEHNDEN Projekten hinzuzufügen.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

pixewakb hat geschrieben: Dienstag 30. Oktober 2018, 22:22 Schau mal hier:

https://de.wikipedia.org/wiki/Kategorie:User_de

Ein Problem in der Wikipedia war immer, dass l (L) und 1 (1) in deren Schrift ähnlich aussieht, so dass Benutzer gerne schon mal einen Benutzernamen leicht verändert haben, um Schabernack zu treiben.

Code: Alles auswählen

>>> name1 = "Angela"
>>> name2 = "Ange1a"
>>> name1 == name2
False
Letztlich geht es bei den Projektnamen im verlinkten Artikel auch um Tippfehler bei pip, die sich die Autoren zunutze machen möchten, um den Benutzer zu schaden. Ich habe leider auch noch andere Sachen zu erledigen und ja, ich hoffe, dass ich selbst von so etwas nicht betroffen sein werde. Letztlich kann man nur hoffen, weil ich m. E. auch nicht immer daran denke, wenn ich mal mitten in der Arbeit bin.
Mit Unicode wird das sogar noch netter.... du kannst halt gegen sowas nicht wirklich angehen. Wie ich schon schrieb: wenn du da einen Weg hättest, wende ihn auf fuddel und all jene Myriaden Schreibweisen an, und werde als spamfiltergott reich. Hier immer mit den gleichen 5 Beispielen zu kommen bringt nichts. Für nahezu jedes davon habe ich dir legitime Pakete benannt, deren tatsächlich Prüfung dann eben doch händisch erfolgen müsste.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Fuddel habe ich natürlich nich geschrieben Sondern V1agra - Case in point... ;) sowohl für die Umgehung, als auch einen legitimen Grund, das Wort zu verwenden.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Guck mal in den Artikel: Probleme sind leider immer noch die Bibliotheken wie diango, djago, dajngo, djanga usw.

Ich glaube, dass man den anderen Sachen auch den Gar ausmachen könnte, wenn man es darauf anlegen würde. Hoffen wir mal, dass andere den zdnet-Artikel lesen und die Problemstellung interessant finden...
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe den gelesen. Du beschränkst dich auf wenige triviale Dinge. Wenn du das blockierst, führe ich Django++ ein. Wer ist denn dein Algorithmus zu bestimmen, dass das nicht der geile heiße scheiss ist, ein legitimer & in allen Belangen super toll überlegener Fork? Das KANNST du gar nicht beurteilen, ohne IN das Paket zu schauen. Mit zwei Augen. Bestenfalls automatische API-Call-Checks wie bei Virenscanner würden helfen - bei einer nicht so dupynamischen Sprache wie Python.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Also bei Google hat mal jemand einen Page-Rank entwickelt... Ich sage nicht, dass man sich allein auf den Quellcode konzentrieren soll, da gibt es m. E. mehr Faktoren, die man prüfen könnte...
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Abgesehen davon das der Page Rank schon lange passe ist, wie erreicht Django++ denn die notwendige Sichtbarkeit, wenn du es unterdrückst?

Ich verstehe schon, dass du dir das WÜNSCHST, das man da was tut. Etwas fassbareres, das nicht trivial zu überlisten ist, hast du bis dato nicht angeführt.
Benutzeravatar
pixewakb
User
Beiträge: 1408
Registriert: Sonntag 24. April 2011, 19:43

Also ich glaube, dass ich in meinem Bereich auch an Mars-Robotern arbeite, nur meinte haben vier Pfoten, hören auf den Namen Bello, geben Pfötchen, holen das Stöckchen, legen Eier und gackern. Zumindest das gackern will ich noch wegprogrammieren.

Scherz bei Seite: Sagen wir, dass Du das Modul Django programmiert hättest, dann dürftest Du auch das Modul Django hochladen. Sagen wir, Du bist einer der Programmierer des Django-Moduls, dann müsste ein oder mehrere Maintainer Dich verifizieren und müssten dann auch dem Upload Deines Moduls Django++ zustimmen.

Github-Repositories mit wenigen Likes könnte man z. B. schon mal als weniger vertrauenserweckend ansehen, also so etwas schwebt mir vor.

Mometan muss ich eine Webscraping-Aufgabe erledigen und ein Dataset aus HTML-Seiten basteln; das ist etwas, was ich gerne mache. Ich hoffe halt nur, dass die, die sich gerne um PyPi kümmern, halt auch gerne mal um das Problem dort kümmern. Meine Meinung. Ich habe da leider keine Ambitionen, verfolge das Thema aber.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

All das was du beschreibst habe ich schon angesprochen: das sind explizit verwaltete Zugänge mit irgendeiner Form von Verifikation. Dazu github automatisch ranziehen zu wollen hilft doch nicht, das verlagert das Problem nur. Der neue heiße scheiss ist jetzt halt auf github. Genauso wie der boshafte scheiss. Da ist doch nix gewonnen.

Das Problem ist schlicht nicht einfach. Du unterschätzt das massiv. Ich habe auch schon (nach dem Marsroboter) an textklassifikation rumgespielt. Ein deutlich simpleres Problem, einfach nur die Frage “bietet dieser Text ein Frühstück zur Hotelübernachtung an”. Das war schon extrem schwer zu beantworten. Nun bin ich nicht der Oberexperte in Sprachverarbeitung. Aber eine gewisse Einarbeitung habe ich da hinter mir, und kenne auch Leute, die das auf hohem Niveau professionell machen. Auch die sind nicht stinkreich, weil sie eine intelligenten Spam-Filter geschrieben haben. Oder ähnliches.

Und von vielen anderen Vektoren wie zb bewusst erstellten & gepflegten Projekten die dann plötzlich “böse” werden, einer feindlichen Übernahme eines bestehenden Projektes etc eben ganz zu schweigen. Es gibt einen Grund, warum man schätzt, das Apple zumindest lange Zeit trotz 30% Anteil an den Milliardenumsätzen des AppStores daran keinen Gewinn gemacht hat. Weil die das mühselig händisch geprüft haben. Auf Qualität und Konformität und Sicherheit. Und das im Zweifel immer noch tun, oder ihr sand boxing beständig verbessern. Womit Software aber auch weniger kann. Ist also auch keine universalLösung
Antworten