Aussehen
Suche Einloggen
[c] [meta] [fefe] [erp]

/c/ – Pufferüberlauf


Antwort erstellen

(≤ 4)



[Zurück]

  • [l] Felix Thu, 28 Aug 2025 15:27:31 GMT Nr. 158700
    WEBM 640×700 0:14 1.5M
    Wann kommt er nun endlich wieder?
  • [l] Felix Sat, 30 Aug 2025 22:46:46 GMT Nr. 158735
    JPG 700×1515 97.3k
    Zum Glück gibt es schon genug Mehms wenn Donald den Löffel abgibt.
    (BENUTZER WURDE FÜR DIESEN BEITRAG GEBANNT)
  • [l] Felix Sun, 31 Aug 2025 13:04:55 GMT Nr. 158756
    >>158735
    Eine gewisse Ähnlichkeit der F. von Leitnerschen Gesichtszüge mit denen von JDV ist nicht abzusprechen.
  • [l] Felix Mon, 01 Sep 2025 17:38:04 GMT Nr. 158763
    >>158756
    JD Vance == Fefe konfirmiert. Und die ganze Geschichte mit dem Krankenhaus ist auch nur ein Hoax, damit Fefe mehr zeit hat, den Republikaner in den USA zu larpen in der Hoffnung, demnächst für Trump übernehmen zu können. Demnächst dann: Präsident von Leitner.
  • [l] Felix Mon, 01 Sep 2025 22:12:52 GMT Nr. 158770
    >>158756
    >>158763
    Er hat absolut 0 Ähnlichkeiten, außer, dass er auch ein weißer Mann über 40 ist, ihr gesichtsblinden Autismos. Außerdem ist das ein (schlechter) Fotoladen.
  • [l] Felix Tue, 02 Sep 2025 17:12:27 GMT Nr. 158808
    >>158770
    Sie sind beide Fett, dumm, hässlich, ... muss ich weiter machen?

    JD Vance ist Fefe nach Haartransplantation.
  • [l] Felix Sat, 06 Sep 2025 12:46:13 GMT Nr. 158925
    JPG 500×750 56.1k
    JPG 500×750 73.9k
    >>158770
    Die Unterschiede sind nun wirklich vernachlässigbar.

    >hat absolut 0 Ähnlichkeiten, außer ...
    Haha, die gute alte "kein X, aber X"-Einleitung.
  • [l] Felix Sat, 06 Sep 2025 16:08:51 GMT Nr. 158927
    >>158925
    >Die Unterschiede sind nun wirklich vernachlässigbar.
    die Gemeinsamkeiten aber noch mehr
    (trotzdem 2 schöne Fefen)
  • [l] Felix Sun, 07 Sep 2025 07:42:03 GMT Nr. 158943
    fefe trendet auf DuRöhre:

    https://www.youtube.com/watch?v=MRtVnIbV2HY
  • [l] Felix Tue, 09 Sep 2025 21:17:11 GMT Nr. 159004
    JPG 720×492 99.9k
    Ganz ehrlich Felix, ich hatte schon einen Funken Hoffnung, aber dann hat sich herausgestellt, dass ich nur einen Flüchtigkeitsfehler begangen hatte.
    Ich habe ein Skript, das alle 3 Stunden einmal auf die CT-Logs und auf den Blog (per HTTP) schaut, ob ein neues Zertifikat ausgestellt oder ein neuer Pfosten verfasst wurde. Leider handelte es sich dabei um curl-Aufrufe, denen der Parameter -f gefehlt hat, sodass das Skript folgerichtig geschlossen hat, dass die Zeichenkette
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL was not found on this server.</p>
    <hr>
    <address>Apache Server at crt.sh Port 443</address>
    </body></html>

    ungleich einem leeren JSON-Array ist.
  • [l] Felix Tue, 09 Sep 2025 22:02:48 GMT Nr. 159005
    >>159004
    stderr to stdout ist auch lustig mit grep -c zählen. Hatte überlegt dann ein kleines python program zu starten, dass eine Mail auf mein Phone schickt (schon getestet für Vodafone/Arcor)

    Bin aber an deinem Ansatz interessiert. Wie alarmierst du dich?
  • [l] Felix Tue, 09 Sep 2025 22:12:08 GMT Nr. 159006
    JPG 400×400 31.6k
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    """Send an email over TLS"""
    
    import ssl
    import smtplib
    from email.message import EmailMessage
    
    email_sender = 'yourname@vodafone.de'
    email_password = 'yourpassword'
    
    def send_expiry_mail(days, domain, email_receiver):
        # Set the subject and body of the email
        subject = f'Expiry notice: The cert for {domain} will expire in {days}.'
        body = f'Please renew certs for {domain} within the next {days}.'
    
        em = EmailMessage()
        em['From'] = email_sender
        em['To'] = email_receiver
        em['Subject'] = subject
        em.set_content(body)
    
        # Create a secure SSL context
        context = ssl.create_default_context()
    
        # Try to log in to server and send email
        with smtplib.SMTP('smtp.vodafonemail.de', 587) as server:
            server.ehlo() # Can be omitted
            server.starttls(context=context) # Secure the connection
            server.ehlo() # Can be omitted
            server.login(email_sender, email_password)
            server.sendmail(email_sender, email_receiver, em.as_string())
            server.quit()
    


    Alter Ranzcode von mir als Letsencrypt die Expiry mails gekeult hat.
  • [l] Felix Tue, 09 Sep 2025 22:46:21 GMT Nr. 159007
    >>159005
    Wie der Pfoster unter dir inzwischen per Mail. In Python würde ich die direkt versenden, aber da es sich um ein Shellskript handelt, habe ich dma (DragonFly Mail Agent) installiert, das E-Mails über den externen Mailserver der Wahl versendet. Dann kann das Skript einfach ein dummes Programm wie mail(1) nutzen.
    Ich muss gestehen, dass ich vorher zum Testen einen Zwietracht-Netzhaken [0] verwendet habe, der eine Nachricht mit optionalem Anhang in eine Wegwerf-Gilde mit aktivierten Benachrichtigungen gesendet hat, wie so ein richtiges Skriptkiddie des letzten Jahrzehnts. Ähnliche Funktionalität gibt es zum Beispiel auch bei Matrix [1] oder die Bot-API von Telegram [2].

    [0] https://discord.com/developers/docs/resources/webhook
    [1] https://matrix-org.github.io/matrix-hookshot/latest/setup/webhooks.html
    [2] https://core.telegram.org/bots/api#making-requests
  • [l] Felix Wed, 10 Sep 2025 06:08:40 GMT Nr. 159010
    JPG 3182×4110 1.9M
    >>159007
    >Wie der Pfoster unter dir inzwischen per Mail. In Python würde ich die direkt versenden
    Python ist doch gar so nicht schlimm, und die Transportverschlüsselung ist doch auch nur über einen harmlosen schnöden OpenSSL-Wrapper.

    >aber da es sich um ein Shellskript handelt, habe ich dma (DragonFly Mail Agent) installiert, das E-Mails über den externen Mailserver der Wahl versendet. Dann kann das Skript einfach ein dummes Programm wie mail(1) nutzen
    Das gefällt Felix sehr! Von der Shell aus ist viel einfacher hingerotzt an einem nebligen Vormittag.

    >Zwietracht-Netzhaken [0] verwendet habe, der eine Nachricht mit optionalem Anhang in eine Wegwerf-Gilde mit aktivierten Benachrichtigungen gesendet hat
    Habe das nicht auf dem Phone weil ich sonst da uWu und OwO auf der Arbeit mit dementsprechenden Bildern bekomme :s

    >wie so ein richtiges Skriptkiddie des letzten Jahrzehnts
    Denke darüber nach, dass heute jedes Skiddie besser dasteht als der typische Zuhmer-Schwingungs-Programmierer.

    >Ähnliche Funktionalität gibt es zum Beispiel auch bei Matrix [1] oder die Bot-API von Telegram [2].
    Bin nur ein Veteran in signal-cli und liebe deren dbus und json-rpc Schnittstellen. Leider hat Signal das Problem inaktive Accounts mit einem Weichlösch zu belegen und ich müsste meine Festnetznummer wieder dort für den Bot registrieren.

    Von Telegram (alte Versionen) hat Felix damals abgesehen, weil es nachweislich schlechte Krüpto hatte [0][1]. Matrix hat sich bei uns auch nie etabliert. Vielleicht ist das mal eine Gelegenheit dort einzusteigen.

    [0] https://words.filippo.io/dispatches/telegram-ecdh/
    [1] https://blog.cryptographyengineering.com/2024/08/25/telegram-is-not-really-an-encrypted-messaging-app/
  • [l] Felix Wed, 10 Sep 2025 16:09:08 GMT Nr. 159018
    PNG 1232×683 67.4k
    PNG 1334×167 31.2k
    JPG 1610×1834 235.5k
    >>159007
    Kritik nochmal zu Herzen genommen und bei >>159006 nachgebessert:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    """Send an email over TLS"""
    
    #import ssl
    import smtplib
    from email.message import EmailMessage
    
    email_sender = 'yourname@vodafone.de'
    email_password = 'yourpassword'
    
    def send_expiry_mail(days, domain, email_receiver):
        # Set the subject and body of the email
        subject = f'Expiry notice: The cert for {domain} will expire in {days}.'
        body = f'Please renew certs for {domain} within the next {days}.'
    
        em = EmailMessage()
        em['From'] = email_sender
        em['To'] = email_receiver
        em['Subject'] = subject
        em.set_content(body)
    
        # Create a secure SSL context
        #context = ssl.create_default_context()
    
        # Try to log in to server and send email
        with smtplib.SMTP_SSL('smtp.vodafonemail.de', 465) as server: # force TLS instead of StartTLS
            server.ehlo() # Can be omitted
            #server.starttls(context=context) # Secure the connection
            #server.ehlo() # Can be omitted
            server.login(email_sender, email_password)
            server.sendmail(email_sender, email_receiver, em.as_string())
            server.quit()
    
    send_expiry_mail('18 days', 'example.com', 'somename@arcor.de')
    


    Weiss jetzt auch warum ich damals das unsichere(re) StartTLS genommen habe:
    TLS geht auf dem TLS-Port nicht. TLS 1.3 geht nur auf dem SSL-Port, was für ne Panne! m(

    Habe das natürlich in tcpdump überprüft und es ist TLSv1.3 also ihr könnt das so in v2 nutzen. Have fun!
    Mag Arcor/Vodafonemail trotzdem, da die einen diesen schönen Ranzcode auch nutzen lassen, ganz ohne OAUTH-Krebs.
  • [l] Felix Thu, 11 Sep 2025 18:35:05 GMT Nr. 159041
    JPG 858×858 107.6k
    >>159010
    >Transportverschlüsselung
    Mit "direkt" meinte ich auch nur direkt per SMTP versendet, egal ob mit TLS oder nicht.
    Mit dem passenden Server und Mailkonfiguration (v. a. keine extra DKIM-Signatur, für die man noch mal durch einen Milter gehen müsste) kann man sogar direkt an den Empfänger (in diesem Fall mx*.vodafonemail.de) gehen.

    >Habe das nicht auf dem Phone
    Zugegeben habe ich immer noch zwei Accounts, einen zum ungenierten Scheißepfostieren mit Wegwerfdaten aus der Anfangszeit des Dienstes und einen "seriösen", der gegen eine mir nicht mehr bekannte Telefonnummer verifiziert ist. Beide sind in einem Bastelserver mit aktivierten Benachrichtigungen.

    >Denke darüber nach, dass heute jedes Skiddie besser dasteht als der typische Zuhmer-Schwingungs-Programmierer
    Zweifellos gibt es heute deutlich mehr zu hacken und zu übernehmen (und zu lernen, wie das alles funktioniert), mir ging es nur um eine stereotypische Exfiltrationsmethode, wie die Skiddies jetzt in Echtzeit geklaute Token und Passwörter teilen.

    >nachweislich schlechte Krüpto
    Telegram war hier erst der Nachfolger für Google Hangouts, das gar keine EzE-Kryptografie mitgebracht hat, und ist für mich immer noch essentiell, um Fellies zur technischen Unterstützung zu beschwören. Ist mir aber verständlich, wenn man nichts mehr damit neu anfangen will.

    >Matrix
    Leidet in der aktuellen Form erstaunlicherweise immer noch an Kinderkrankheiten wie client-übergreifenden Nachrichten, die sich nicht entschlüsseln lassen, und die matrix.org-Heiminstanz hatte vor kurzem ebenfalls wieder einen längeren Ausfall.

    >>159018
    In dem Fall ist es vollkommen gleichwertig, aber das kann ich nicht nachvollziehen. Sowohl STARTTLS über Port 25 oder 587 als auch TLS auf Port 465 handeln für mich eine gültige TLS-1.3-Verbindung mit gleichem Zertifikat und Parametern aus.
    STARTTLS leckt vor allem die EHLO-Identität des verbindenden Servers, die hier optional ist. Ein Angreifer, der sich in die Verbindung einklinkt und STARTTLS entweder nicht ankündigt oder künstlich fehlschlagen lässt, würde das Skript immer noch mit
    >smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.
    abbrechen lassen.
  • [l] Felix Thu, 11 Sep 2025 20:41:30 GMT Nr. 159044
    >>159041
    >Sowohl STARTTLS über Port 25 oder 587 als auch TLS auf Port 465 handeln für mich eine gültige TLS-1.3-Verbindung mit gleichem Zertifikat und Parametern aus.
    Nun das ist es ja, erwarten StartTLS auf den TLS-Ports, soweit so gut. Aber reines TLS ohne altmodisches Upgrade wollen sie auf dem Laut Webseite alten SSL-Port.

    Was Felix schon immer störte ist wie man die Legacy Namen weiterverwendet. Leider werden die libraries für immer "SonstwasSSL" heißen.
  • [l] Felix Fri, 12 Sep 2025 10:43:06 GMT Nr. 159054
    JPG 720×482 36.7k
    >>159044
    >Leider werden die libraries für immer "SonstwasSSL" heißen.
    Es gibt auch noch mbedTLS und GnuTLS.
  • [l] Felix Sat, 13 Sep 2025 22:35:12 GMT Nr. 159091
    Weiß jemand wie es unserem Vierteltonner aktuell geht? Wurde er schon wieder von Flüssignahrung auf Wildschwein umgestellt?
  • [l] Felix Sun, 14 Sep 2025 07:17:04 GMT Nr. 159097
    >>159091
    Viel wichtiger die Frage: Weiss jemand, in welchem Krankenhaus er liegt? Dann könnten wir ihm Glückwunsckarten, einen Strauss Phuopsis stylosa und Wildschweinpralinen schicken!
  • [l] Felix Sun, 14 Sep 2025 08:56:41 GMT Nr. 159098
    >>159097
    >Phuopsis stylosa
    Hört sich nach einer Geschlechtskrankheit für CSS an.

    Blitzrecherche in der englischsprachigen Wikipedia hat deine Intention aber erhellt :3
  • [l] Felix Sun, 14 Sep 2025 09:10:10 GMT Nr. 159099
    >>159098
    Nach meiner Quelle hat die Pflanze im Englischen auch den Beinamen "Wet Fox", da sie wohl wie nasses Fell stinkt. Dass die Pflanze, wie im englischen Wikipedia behauptet, nach Cannabis riecht, ist mir tatsächlich auch neu.
  • [l] Felix Sun, 14 Sep 2025 09:31:03 GMT Nr. 159101
    >>159099
    Heute hat dieser Felix gelernt, dass Füchse bzw. ihre anhaftenden Exkremente geradezu Stinkbomben sind.
  • [l] Felix Sun, 14 Sep 2025 09:39:17 GMT Nr. 159103
    >>159101
    Du Fuchs, du!
  • [l] Felix Sun, 14 Sep 2025 09:54:36 GMT Nr. 159104
    JPG 860×1069 129.5k
    Bei der salzarmen Diät im Krankenhaus bekommt unser Freund nur Bluttiefdruck.
  • [l] Felix Sun, 14 Sep 2025 10:10:10 GMT Nr. 159105
    >Wendelstein 7-X Stellarator: Smashing Nuclear Fusion Records
    <https://www.youtube.com/watch?v=JG3TxB-plT8

    Wäre Felix zurück würde er dies im Blog verlinken.
  • [l] Felix Sun, 14 Sep 2025 12:51:26 GMT Nr. 159106
    >>159104
    Nach so langer Zeit wir er wohl kaum noch im Krankenhaus liegen.
  • [l] Felix Sun, 14 Sep 2025 18:54:22 GMT Nr. 159112
    JPG 350×465 17.2k
    >Neuigkeiten von Fefe: Er wird von den Pflegekräften zärtlich "el comandante" genannt und hat sich auf der Reha-Kirmes eine Freifahrt im Rollstuhl geschossen.

    >Soll ich euch mitteilen 😅.

    >Update: ich vergaß zu erwähnen, dass er im Flur dann laut "Freiheit!1!!" gerufen hat und immer noch auf die Revolution wartet.

    [0] https://infosec.exchange/@oec/115197761052887711

    Hatten wir die News schon?
  • [l] Felix Sun, 14 Sep 2025 19:06:41 GMT Nr. 159113
    >>159112
    Nein, hatten wir noch nicht. Liest der Törke hier mit?
  • [l] Felix Sun, 14 Sep 2025 20:35:26 GMT Nr. 159114
    >>159112
    Wow. Der Wichsgurke ist tatsächlich eine Sicherung durchgeknallt! Der war ja vorher schon mies drauf, aber jetzt?! Beängstigend!
  • [l] Felix Mon, 15 Sep 2025 08:17:40 GMT Nr. 159117
    JPG 640×645 57.3k
    >>159112
    Vier Monate später noch immer im Rolli und mit offensichtlichen neurologischen Defiziten, es ist über.
  • [l] Felix Mon, 15 Sep 2025 08:45:10 GMT Nr. 159119
    JPG 1919×1080 464.2k
    >>159117
    Die Kerninhalte der GNU/Philosophie sind noch vorhanden. Die meisten seiner Leser waren ja nie die hellsten und werden keinen Unterschied merken. Ich wünsche Felix trotzdem ein ordentliche Genesung, so gut es möglich ist.
  • [l] Felix Mon, 15 Sep 2025 08:45:28 GMT Nr. 159120 SÄGE
    *eine
  • [l] Felix Mon, 15 Sep 2025 09:44:12 GMT Nr. 159121
    >>159117
    >noch immer im Rolli
    Heißt "Freifahrt" nicht eher, dass er sonst keinen Rollstuhl benutzt?
    >mit offensichtlichen neurologischen Defiziten
    Auch nicht schlimmer als vorher uezs
  • [l] Felix Mon, 15 Sep 2025 10:13:33 GMT Nr. 159122
    >>159121
    >Heißt "Freifahrt" nicht eher, dass er sonst keinen Rollstuhl benutzt?
    Keine Ahnung aber alle hier in ihren 65 kg Twinkkörpern würden doch Reha aus EZ-mode spielen.
    Vielleicht bedeutet es, das jemand den Rollstuhl schiebt und du nicht die Räder an den Handkäufen außen aktuieren musst.
  • [l] Felix Mon, 15 Sep 2025 10:15:10 GMT Nr. 159123
    >159122
    >aus^Hf
    >s/Handkäufen/Handläufen
    Habsch auch bald Schlaganfall, wenn ich meine Fehler nimmer vor abschicken finde. Oder bin ein Körperklaus, der die Tasten nicht trifft.
  • [l] Felix Mon, 15 Sep 2025 13:57:44 GMT Nr. 159125
    >>159123
    Nasswarenproblem, kann man nichts machen.
  • [l] Felix Mon, 15 Sep 2025 16:55:43 GMT Nr. 159126
    >>159117
    you'a'ight m8? :D
  • [l] Felix Tue, 16 Sep 2025 21:49:05 GMT Nr. 159135 SÄGE
    >>159112
    Felix versteht diesen Humor nicht, aber wahrscheinlich ist das so eine Medienkompetenzübung. Komisches Berliner Volk.
  • [l] Felix Thu, 25 Sep 2025 07:47:30 GMT Nr. 159361
    WEBM 458×808 0:36 5.4M
    >>159113
    Ja ich lese immer mit. Gibt jetzt auch ein Genesungsvideo von El Comandante.
  • [l] Felix Thu, 25 Sep 2025 13:19:13 GMT Nr. 159367
    >>159361
    Danke, dass du das hier nicht pfostiert hast. Damit hast du der Gemeinschaft einen Gefallen getan und uns alle vor potentiellen Schachanfällen bewahrt.
  • [l] Felix Thu, 25 Sep 2025 13:20:41 GMT Nr. 159368
    JPG 500×499 34.9k
    >>159367
    Hat da jemand schlecht geschlafen?
  • [l] Felix Thu, 25 Sep 2025 13:29:56 GMT Nr. 159369
    >>159368
    Warum? Vielleicht hast du mich falsch verstanden: Ich habe das Video gesehen, und es war echt schockierend. Deshalb war das ein wirklich ernst gemeinter Dank, dass du das hier nicht pfostiert hast, weil das für einige unserer Stammnutzer eventuell (re)traumatisierend wirken könnte.
  • [l] Felix Thu, 25 Sep 2025 13:47:49 GMT Nr. 159370
    GIF 498×357 1.2M
    >>159369
    Kein Problem habe das gerade nicht gecheckt. Ich werde ihm ausrichten, dass du schockiert warst. Wie du siehst schläft er im Moment sehr viel um seine natürlichen Selbstheilungskräfte und Kraftreserven zu aktivieren. *oink*
  • [l] Felix Sat, 27 Sep 2025 08:59:09 GMT Nr. 159403
    WEBM 576×1024 0:21 2.9M
    Ich komme am 15. Oktober raus
  • [l] Felix Sat, 27 Sep 2025 09:03:01 GMT Nr. 159404
    >>159403
    Wer sagt das?
  • [l] Felix Sat, 27 Sep 2025 09:15:37 GMT Nr. 159407
    >>159404
    >Wer sagt das?
    Blick in die Kristallkugel von mir

    https://blog.fefe.de/?q=Kristallkugel
  • [l] Felix Sat, 27 Sep 2025 13:33:37 GMT Nr. 159426
    >>159425
    Uff habe noch nie gesehen wozu die guten Keiler im Stande sind. Wusste nur, dass sogar Bären die Flucht ergreifen. Felix hat wieder dazugelernt!
  • [l] Felix Sun, 28 Sep 2025 10:44:44 GMT Nr. 159436
    >>159425
    Keiler rein, Gedärme raus.
  • [l] Felix Mon, 29 Sep 2025 12:21:44 GMT Nr. 159458
    >Keiler
    Roland?
  • [l] Felix Thu, 02 Oct 2025 22:15:44 GMT Nr. 159566
    JPG 1500×2000 740.8k
    https://openssl-library.org/news/vulnerabilities/index.html#CVE-2025-9230
    https://openssl-library.org/news/vulnerabilities/index.html#CVE-2025-9231
    https://openssl-library.org/news/vulnerabilities/index.html#CVE-2025-9232

    Ohne Fefe will vielleicht jemand lesen was die Tage in Debian security warum gepatch wurde:
    3x moderat, disclosure 30 Sept.
  • [l] Felix Fri, 03 Oct 2025 06:36:57 GMT Nr. 159567
    >>159566
    Ein neuer Tag, eine neue OpenSSL-Vulnerability. Warum setzt überhaupt noch jemand diesen Rotz ein?
  • [l] Felix Fri, 03 Oct 2025 07:42:38 GMT Nr. 159569
    >>159568
    Wobei ich allerdings eh nicht verstehe, warum man bei einem Webserver Threads einsetzen sollte. Einfach mehrere Prozesse starten mit ihrem eigenen Addressraum, dann muss man auch nichts locken, BOOM.
  • [l] Felix Fri, 03 Oct 2025 07:49:04 GMT Nr. 159570
    >>159569
    Kann man so machen, aber das ich unwissend bin behaupte ich mal, dann kostet dein Cloudservice mehr. Da ich das quadrat 10 Threads & 10k Verbindungen selten verlasse kann ich halt brav den Ranz einsetzen. Ein loadbalancer würde immer helfen.
  • [l] Felix Fri, 03 Oct 2025 08:15:53 GMT Nr. 159571
    >>159570
    >aber das ich unwissend bin behaupte ich mal, dann kostet dein Cloudservice mehr
    Wieso sollte der dann mehr kosten? Wenn die Hardware effizienter ausgelastet wird, dann sollten die Kosten dadurch sinken, nicht steigen.

    Das ganze "Thread"-Konzept stammt eigentlich von Windows, weil Windows kein richtiges fork hat. Man kann also nicht mehrere Prozesse auf den gleichen Socket lauschen lassen. Unter Unix geht das aber und mit Linux geht es dank SO_REUSEADDR sogar ohne fork.

    Soll nicht heißen, dass Threads nicht auch manchmal ihre Berechtigung haben, aber eher nicht für sowas. Der Applikationskot dahinter kann ja Threads verwenden, aber ich sehe nicht, wozu der TLS-Layer das braucht.
  • [l] Update Felix Fri, 03 Oct 2025 08:23:19 GMT Nr. 159572
    >>159571
    >ich sehe nicht, wozu der TLS-Layer das braucht
    Soweit ich mich erinnere, benutzt OpenSSL das, um irgendwelche Zertifikatscaches und ähnliches zu teilen. Aber dieses Argument bricht spätestens dann ohnehin zusammenen, wenn du anfängst, auf mehrere Maschinen zu skalieren. Und offensichtlich ist es den Tradeoff auch nicht wert, wie man an den Graphen sieht.
  • [l] Felix Fri, 03 Oct 2025 12:52:46 GMT Nr. 159575
    >>159569
    >>159570
    >>159571
    Das Problem bei fork vs. Threads ist eher: Warum sollte man an Ressourcen alles und den Küchensiphon (Dateideskriptoren, Sockets, Signal-Handler) vererben, wenn man nur einen weiteren Ausführungsstrang für ein paar Berechnungen haben wollte?

    Lustigerweise wird eine Sache bei fork gerade nur mit CoW-Semantik vererbt, und nicht geteilt: Der virtuelle Adressraum. Bereits beim einfachsten Fall (man startet n Berechnungsthreads, alle rechnen parallel, alle n Threads terminieren) ist das nicht das, was man will. Dort will man gerade den gleichen Adressraum haben, da dann jeder Thread am Ende sein Ergebnis ohne CoW-Semantik einfach in den Zielspeicher/ins Zielarray reinschreiben kann, wo der Hauptthread des Prozesses das dann nach Terminieren aller Threads rauslesen und weiterverarbeiten kann.

    Bereits für den einfachen Fall von "wir brauchen ein paar Threads um etwas parallel zu berechnen" ist fork() damit eher nicht das, was man haben will. Wenn man hingegen den neuen Prozess/Thread tatsächlich für etwas Komplexes braucht, d.h. mit gegenseitiger Kommunikation, gegenseitigen Aufweck-Ereignissen und ggf. indefinit langer Laufzeit, fangen die Probleme erst so richtig an:

    Das Vererben von Ressourcen mittels fork() ist bei komplexen Programmen gerade gefährlich, da das bedeutet, dass auch Locks/Mutexe vererbt werden (insbesondere Locks aus den Interna der glibc und anderen Bibliotheken, die eigene Threads erstellen), und es daher sehr schwer wird, anständig darüber zu urteilen. Das gilt insbesondere aufgrund des Umstandes, dass der geforkte Prozess nur aus dem Hauptthread besteht, die anderen Threads existieren im geforkten Prozess nicht, die sind beim fork() einfach ersatzlos weggefallen. Wenn aber einer dieser Threads einen Lock/Mutex zum fork-Zeitpunkt hielt, und dann der Thread mit neuen Prozess einfach weg ist, wird dort der Lock/Mutex nie freigegeben. Wenn der geforkte Prozess in dessen Hauptthread deswegen in einem Lock hängt, terminiert der nie, und auf das Terminieren dieses Kind-Prozesses wartet dann auch der ursprüngliche Hauptprozess indefinit lange (z.B. weil der Hauptprozess irgendeine Rückmeldung vom Kind-Prozess erwartet), womit der auch blockiert ist.

    Da wollte dann der Spiele-Entwickler von Factorio super clever sein, und sich sagen, wenn man den Spiele-Prozess forkt, dann kann man das ausnutzen, um parallel zum laufenden Spiel den aktuellen Speicherstand auf die Platte zu schreiben: Man hat schließlich CoW-Semantik, wenn der Hauptprozess etwas verändert, hat man im geforkten Prozess immer noch den Speicherstand wie zum fork()-Zeitpunkt. Doch dieser Speicherprozess hing dann wie oben beschrieben in einem Lock, indirekt verursacht durchs fork(). Und dann wartete der Hauptprozess noch auf irgendeine Rückmeldung vom Speicherprozess. Und das Ergebnis war, dass das ganze Spiel hing.

    >The core method (of using fork to get a separate process with the same memory map and then doing the save in that process) is pretty risky. You need to make sure that no locks are held by any thread other than the one calling fork at the time of the fork. This include locks buried in library code; malloc() might try to acquire locks.
    https://forums.factorio.com/viewtopic.php?p=615920#p615920

    >In the POSIX model, only the forking thread is propagated. All the other threads are eliminated without any form of notice; no cancels are sent and no handlers are run. However, all the other portions of the address space are cloned, including all the mutex state. If the other thread has a mutex locked, the mutex will be locked in the child process, but the lock owner will not exist to unlock it. Therefore, the resource protected by the lock will be permanently unavailable.
    >The fact that there may be mutexes outstanding only becomes a problem if your code attempts to lock a mutex that could be locked by another thread at the time of the fork. This means that you cannot call outside of your own code between the call to fork and the call to exec(). Note that a call to malloc(), for example, is a call outside of the currently executing application program and may have a mutex outstanding.
    https://web.archive.org/web/20240215012854if_/http://www.doublersolutions.com/docs/dce/osfdocs/htmls/develop/appdev/Appde193.htm

    Tangente: Felix hat auch mal die Zeit gemessen, die man für den Aufruf von fork(), vfork(), clone() etc. in verschiedenen Parameter-Varianten braucht. Auf Linux ist clone() mit neuem Stack beim Erstellen am schnellsten, und zwar auch schneller als die clone()-Variante mit CoW-Semantiken, weil nichts an Speicherseiten kopiert werden muss. Das mit dem "nichts vererben" wurde allerdings auch bei clone() nicht ganz durchgezogen und die Signal-Handler werden noch vererbt, was man ab Linux Version 5.5 via CLONE_CLEAR_SIGHAND auch noch abstellen kann.

    Darüber hinaus ist das Erstellen von neuen Prozessen und Threads immer als schwergewichtig anzusehen, und man sollte bei indefinit lange laufenden Programmen auf persistente Fäden persistent threads setzen (oder "persistente Prozesse" als Äquivalent, wenn es denn sein muss).

    Nach Felixens letztem Stand waren für Webservierer persistente Threads + io_uring das aktuell schnellste auf Linux. Das gesagt, kann man auf heutiger Hardware bereits mit einem gammeligen Einzelfaden-Servierer mit epoll() eine 10-GBit/s-Leitung voll auslasten.

    Für Felix ist damit die niedrigkomplexeste Variante *und* schnellste Variante auf Linux tatsächlich die Benutzung von Threads (via clone() + eigenem Stack + CLONE_CLEAR_SIGHAND).

    Davon abgesehen zeigt sich mal wieder, dass angesichts vom Komplexitätscheißeberg der einzig gewinnbringende Zug es ist, gar nicht erst mit Komplexität zu spielen.
  • [l] Felix Fri, 03 Oct 2025 13:16:17 GMT Nr. 159577
    >>159575
    Es ging mir auch nicht darum, fork zu verteidigen, nur den historischen Hintergrund zu erklären. Deine Argumente gegen fork kommen hier auch nicht zum Tragen, weil der fork-Aufruf ganz am Anfang des Programms gemacht würde, wenn noch fast nichts initialisiert ist, und auch nur ein einziges mal. Wenn du irgendwo mittendrin im Programmablauf einen Nebenprozess erzeugen willst (z.B. für eine längere Benutzeraktion, die im Hintergrund ablaufen soll), dann ist das eine ganz andere Situation.

    Heutzutage braucht es fork unter Linux für den ursprünglich genannten Fall nicht mal mehr, weil vor x Kernelversionen die Socket-Option SO_REUSEADDR eingeführt wurde. Somit erübrigt sich die ganze Problematik. Ob Fenster inzwischen etwas ähnliches hat, weiß ich nicht. Bei den BSDs kenne ich mich auch nicht aus.

    Nebenbei: io_uring ist wohl schon durch einige schwerwiegende Sicherheitslücken aufgefallen und daher eher nicht zu empfehlen. Bei asynchroner IO hat MS mit IOCP immer noch die Nase vorn. Es ist peinlich, aber es ist wahr.

    Dass Netzwerkanwendungen meist IO-bound und nicht CPU-bound sind, und deshalb in der Tat oft ein einziger Prozess/Thread völlig ausreichen würde, um das Netzwerk zu saturieren, ist ein Punkt, den ich ausgelassen hatte. Ja, ist korrekt. Allerdings kann es ja sein, dass jemand mehrere Netzwerkkarten in seinem Servierer hat. Auch gilt das nur im besten Fall, die Kryptooperationen bei TLS sind z.B. nicht umsonst.
  • [l] Felix Fri, 03 Oct 2025 13:22:31 GMT Nr. 159578
    >>159572
    >>159577
    Update: Meinte die ganze Zeit SO_REUSEPORT (since Linux 3.9), nicht SO_REUSEADDR! Kann mir einfach nie merken, welches was ist!
  • [l] Felix Fri, 03 Oct 2025 14:21:48 GMT Nr. 159580
    >>159577
    >>159578
    >Deine Argumente gegen fork kommen hier auch nicht zum Tragen, weil der fork-Aufruf ganz am Anfang des Programms gemacht würde
    Wenn Felix dich richtig versteht meinst du hier einen "preforked" Servierer, d.h. am Anfang des Programms werden n persistente Prozesse via fork() gemacht, oder? Bei dem kann dann entweder nur der Hauptprozess das accept() machen, oder jeder einzelne Faden kann bei entsprechenden Socket-Optionen das accept() machen. Oder versteht Felix gerade etwas falsch?

    >wenn noch fast nichts initialisiert ist, und auch nur ein einziges mal.
    Macht man dann nicht n Forks auf einmal? Gut, das wäre dann "ein einziges mal n Forks".

    In dem Fall eines "preforked" Servierers gibt dir Felix fast vollkommen recht: Da gibt es relativ wenig zu vererben, man muss nur darauf aufpassen, dass es früh genug passiert. Das "früh" genug ist dabei bereits problematisch. Wenn der Praktikant die tolle neue libetzterScheiss als .so reinlinkt und zur Laufzeit bei Programmstart laden lässt, können via .init Funktionen aus der Bibliothek bereits aufgerufen worden sein, bevor man überhaupt in main() ankommt. Gleiches gilt auch für die glibc, aber da weiß Felix gerade nicht, welche Dateideskriptoren/Locks die bereits vor main() aufmacht. Dieses "man muss es nur früh genug machen" hatte genauso wie "man darf zwischen fork() und exec() praktisch nichts machen" oder "man darf nur diese bestimmten Dinge in der DllMain machen" immer irgendetwas unrobustes für Felix.

    Wenn man aber schon persistente Prozesse macht, warum nicht gleich persistente Threads? Selbst, wenn man nicht so hartkern ist und clone() benutzen will, gibt es immer noch pthread_create() und die ganzen Sachen aus der libpthread, womit die anstehende Synchronisation für die Task-Queue oder Rückkanäle zum Hauptfaden dann auch viel leichter umsetzbar sind.

    >Nebenbei: io_uring ist wohl schon durch einige schwerwiegende Sicherheitslücken aufgefallen und daher eher nicht zu empfehlen.
    Dazu möchte Felix auch die andere Seite zu Wort kommen lassen:
    >As I'm sure you know, this is all mostly centered around a) google using an old kernel on android, b) the older kernel had a design issue around async offload, and c) google paying out money for exploits / security issues found there. It's not secret that the initial async offload design in io_uring was not great, which is why 5.10-stable and all later kernels changed the thread model for that to not use kthreads at all. Then they put out the announcement last year, and that's all most people know about it.
    https://github.com/axboe/liburing/discussions/1047#discussioncomment-8374809

    >Bei asynchroner IO hat MS mit IOCP immer noch die Nase vorn
    Das meinst du vermutlich im Kontext von dem davor, d.h. wenn man io_uring auf Linux außen vor lässt. Felix ist nämlich der Meinung, dass io_uring dem IOCP-Modell (Felix hat mit beidem gearbeitet) überlegen ist. Felix geht darüber hinaus: Das io_uring-Modell ist tatsächlich von der Konzeption her so, wie man zweiseitige asynchrone Kommuniktation am besten gestalten sollte (egal ob Benutzermodus ↔ Kernelmodus, CPU ↔ GPU, Prozess ↔ Prozess).

    Ist das mit "IOCP hat Nase vorn" aber selbst auf Windows so? Microsoft hat gerade erst die ioringapi zu Windows hinzugefügt:
    https://learn.microsoft.com/en-us/windows/win32/api/ioringapi/
    Das ist jedoch relativ eingeschränkt, u.A. gibt es keine Datei-Informations-Requests (stat: Dateigröße, letztes Änderungsdatum, etc.). Felix vermutet auch irgendeine interne Verbindung zu DirectStorage, vermutlich basiert DirectStorage sogar darauf (plus einige Umgehungen von Filter-Treibern im Dateisystem-Treiber-Stack), konnte dazu aber nichts handfestes finden.
  • [l] Felix Fri, 03 Oct 2025 15:29:11 GMT Nr. 159581
    WEBM 800×450 0:15 772.2k
    >>159580
    IOCP gibt es bei Microsoft halt schon seit 30 Jahren. Und Linux hat da immer noch nichts marktreifes.
  • [l] Felix Fri, 03 Oct 2025 15:35:50 GMT Nr. 159583
    >>159580
    >Wenn Felix dich richtig versteht meinst du hier einen "preforked" Servierer, d.h. am Anfang des Programms werden n persistente Prozesse via fork() gemacht, oder? Bei dem kann dann entweder nur der Hauptprozess das accept() machen, oder jeder einzelne Faden kann bei entsprechenden Socket-Optionen das accept() machen. Oder versteht Felix gerade etwas falsch?
    Im Falle von fork kann jeder der Kind-Prozesse (und der Elternprozess) accept aufrufen, sofern der Dateideskriptor vererbt wurde. Eine spezielle Socketoption braucht es dafür nicht.

    Mit SO_REUSEPORT braucht man gar kein fork. Man braucht einfach nur mehrere Prozesse, die auf die gleiche Adresse und den gleichen Port binden. Fertig. Es ging hier nie um fork. fork ist nur das, was man früher verwendet hätte, bevor es SO_REUSEPORT gab.
  • [l] Felix Fri, 03 Oct 2025 15:37:11 GMT Nr. 159584
    >>159583
    Als dritte Möglichkeit könnte man theoretisch auch noch den Listener-Socket über einen Unix-Domänen-Socket von einem Prozess zum anderen schicken. Solchen Voodoo-Kram hat Felix aber noch nie gemacht.
  • [l] Felix Fri, 03 Oct 2025 15:48:28 GMT Nr. 159587
    >>159580
    >Wenn man aber schon persistente Prozesse macht, warum nicht gleich persistente Threads? Selbst, wenn man nicht so hartkern ist und clone() benutzen will, gibt es immer noch pthread_create() und die ganzen Sachen aus der libpthread, womit die anstehende Synchronisation für die Task-Queue oder Rückkanäle zum Hauptfaden dann auch viel leichter umsetzbar sind.
    Weil man dann keine getrennten Adressräume mehr hat und dann drölftausend Locks braucht, das Ergebnis sieht man ja in den Graphen hier >>159568

    Aber mal allgemein: Weder Forks noch Threads sind gerade leichtgewichtig. Beide sollten nicht einfach so on-the-fly erzeugt werden. Ich bin davon ausgegangen, das wäre heute allgemein bekannt, und niemandem würde im Traum mehr einfallen, für jeden Request zu forken (oder einen separaten Thread zu erzeugen) und ähnliche Grausamkeiten.
  • [l] Felix Fri, 03 Oct 2025 15:52:24 GMT Nr. 159588
    >>159581
    Auch: Bei MS arbeiten inzwischen nur noch Inder und die guten alten Leute aus der NT-Zeit sind längst weg. Deswegen ist es kein Wunder, dass MS seit Jahren einfach nur noch alles von Linux kopiert.
  • [l] Felix Fri, 03 Oct 2025 17:30:21 GMT Nr. 159592
    >>159583
    >Man braucht einfach nur mehrere Prozesse, die auf die gleiche Adresse und den gleichen Port binden. Fertig.
    Achso, OK, verstehe jetzt was du meinst.

    >>159587
    >Weil man dann keine getrennten Adressräume mehr hat
    Schlimm?

    >und dann drölftausend Locks braucht
    Naja, einen Lock/Mutex braucht man, weil es beim Programmablauf eine geteilte Ressource gibt, auf die zumindest irgendjemand schreibt (Lese-Schreib-, Schreib-Lese- oder Schreib-Schreib-Konflikt). Die gibt es beiden Varianten (mehrere Prozesse vs. mehrere Threads) gleichermaßen, man "braucht" nicht mehr Locks.

    Das schließt allerdings mit ein, dass man einen Allokator hat, der nur auf individuellen Fäden laufen kann (also nicht malloc()/free() aus der glibc, die müssen mit jeder Speicheroperation von jedem Faden auf Allokationen aus jedem Faden zurechtkommen). Man du must Bazooka Arena nemen.

    Davon abgesehen gibt normalerweise ganz andere Konflikte: Die Datenbank. Wenn mehrere Fäden/Prozesse darauf schreiben, dann muss das dort synchronisiert werden, zumal die Datenbank wegen ACID noch härtere Anforderungen hat.

    Das Problem kommt nicht von den notwendigerweise geteilten Ressourcen, sondern eher dann, wenn man künstlich Ressourcenkonflikte herbeiführt. So wie Felix sich die Zahlen aus >>159568 ansehe, haben die Chefexperten von OpenSSL das nach Version 1.1.1w genau das gemacht? WzF? Benutzen die dort irgendwelche Locks, nur um ein paar Bytes durchzumixen?
  • [l] Felix Fri, 03 Oct 2025 20:31:30 GMT Nr. 159595
    >>155980
    >So wie Felix sich die Zahlen aus >>159568 ansehe, haben die Chefexperten von OpenSSL das nach Version 1.1.1w genau das gemacht? WzF? Benutzen die dort irgendwelche Locks, nur um ein paar Bytes durchzumixen?
    >fine-grained locking >>155980 nennen sie das. Wozu das gut sein soll? Keine Ahnung. Da sind wir wieder am Anfang. Warum hat OpenSSL überhaupt so viel gemeinsamen State, den man synchronisieren muss?

    Es gibt eigentlich nur zwei saubere Lösungen hier:

    a) OpenSSL ist single-threaded, benutzt globale Variablen und lockt überhaupt nichts und gibt keinen Fick. Performanz ist 100%, Code-Komplexität ist auch minimal (weniger Overhead, keine Möglichkeit von Deadlocks etc.). Es ist Sache der Anwender, die korrekte Verwendung sicherzustellen, im Zweifel durch einen eigenen Prozess.
    b) Man schafft die Möglichkeit, mehrere OpenSSL-"Instanzen" in einem Prozess zu erzeugen und jeder OpenSSL-Funktionsaufruf hätte dann einen zusätzlichen Parameter. Das wäre dann die 90er-"OOP"-Lösung. Da könnte man dann jeden Thread seine eigene Instanz geben, die sich gegenseitig nicht behindern.

    Mir ist klar, welche ich favorisiere. Deine CPU hat bereits eine MMU. Benutzt wird die sowieso. Lass die MMU die Arbeit machen.
  • [l] Felix Fri, 03 Oct 2025 22:33:26 GMT Nr. 159599
    >>159595
    Die Bibliotheksschreiber müssen sowieso davon ausgehen, dass die Bibliothek beim Benutzer von mehreren Fäden aufgerufen wird. Und da OpenSSL auch performant sein muss und sie ihre API selbst bestimmten können (im Gegensatz zu glibc/musl/andere CRT, die die API vom C-Standard vorgesetzt bekommen), ist damit klar, dass eine thread-safe Variante nicht in Frage kommt (oder nur als Alternative zur rohen Variante). Thread-safe Bibliotheken stinken für Felix sowieso nach totem Fisch, das ist Aufgabe des Aufrufers.

    OpenSSL hat die retardierteste Variante von allen gewählt:
    >OpenSSL can generally be used safely in multi-threaded applications provided that at least two callback functions are set, the locking_function and threadid_func. Note that OpenSSL is not completely thread-safe, and unfortunately not all global resources have the necessary locks. Further, the thread-safety does not extend to things like multiple threads using the same SSL object at the same time.
    >locking_function(int mode, int n, const char *file, int line) is needed to perform locking on shared data structures. (Note that OpenSSL uses a number of global data structures that will be implicitly shared whenever multiple threads use OpenSSL.) Multi-threaded applications will crash at random if it is not set.
    Ja, was denn nun? Nichts halbes, nichts ganzes, der Fisch stinkt schon halbtot?

    "Einfach alles die MMU machen" zu lassen greift auch zu kurz, da es Conway's Law ignoriert und jeden Nutzer zu einer Programmgestaltung in Multi-Prozess-Form zwänge. So ein Zwang ist nicht mehr satisfaktionsfähig, wenn die Prozesse beim Bibliotheks-Nutzer auch noch andere Sachen machen müssen, insbesondere atomare Flags, Aufweck-Ereignisse, Synchronizations-Primitive, Kommunikationsmuster wie Produzent-Konsument-Warteschlangen, die man mit gemeinsamen Speicher besser umsetzten kann (das fällt nämlich genauso unter "mal die MMU machen lassen"). Die Leute von OpenSSL wissen nicht, Korrektur, *können* gar nicht wissen, was der Nutzer von OpenSSL macht. Ergebnis: Nutzer benutzen eine andere Bibliothek für solche Anwendungen. Spontane Erinnerungen an die alte glibc, die man nicht fürs statische Linken benutzen konnte, ploppen auf. Drepper wollte die Leute auch zwingen. Naja, am Ende hat er wenigstens zugegeben, dass niemand um seinen Mist kehrt. [0]

    Felix wäre sofort für die einfachere Variante, aber zu sagen, dass eine Bibliothek die Nutzer zu einer bestimmten Architektur zwingt, damit macht man es sich zu einfach. Nicht jede Anwendung ist Babies erster Webservierer, und wenn man bei komplexeren Dingen noch Prozesse verwendet, kommt man mal in die Komplexitätshölle, Factorio-Style.

    >Man schafft die Möglichkeit, mehrere OpenSSL-"Instanzen" in einem Prozess zu erzeugen
    Die von OpenSSL haben genau das mit ihrem "SSL-Kontext" (SSL_CTX * ctx = SSL_CTX_new(TLS_client_method());) gemacht. Warum die das nicht durchgezogen haben und so auf Locks verzichten konnten: Keine Ahnung.

    >OOP
    Keine bösen Wörter!
    Felix hätte es unironisch eher die funktionale(re) Lösung genannt, weil die Funktionen weniger Seiteneffekte aufweisen. Womit Felix nun auch noch erfolgreich die FP-Clique von Diätkanal gegen sich aufgebracht hätte.

    [0] https://sourceware.org/bugzilla/show_bug.cgi?id=4403#c3
  • [l] Felix Fri, 03 Oct 2025 23:19:02 GMT Nr. 159601
    >>159599
    >"Einfach alles die MMU machen" zu lassen greift auch zu kurz, da es Conway's Law ignoriert und jeden Nutzer zu einer Programmgestaltung in Multi-Prozess-Form zwänge.
    Das wäre doch sogar gut! Dann noch ein bisschen seccomp und wir hätten einen Haufen Sicherheitsprobleme weniger gehabt.

    >So ein Zwang ist nicht mehr satisfaktionsfähig, wenn die Prozesse beim Bibliotheks-Nutzer auch noch andere Sachen machen müssen, insbesondere atomare Flags, Aufweck-Ereignisse, Synchronizations-Primitive, Kommunikationsmuster wie Produzent-Konsument-Warteschlangen, die man mit gemeinsamen Speicher besser umsetzten kann (das fällt nämlich genauso unter "mal die MMU machen lassen"). Die Leute von OpenSSL wissen nicht, Korrektur, *können* gar nicht wissen, was der Nutzer von OpenSSL macht.
    Verstehe ich nicht ganz. Der SSL-Prozess soll möglichst gar nichts machen außer SSL-Kram. Den Rest kann dein anderer Prozess machen. Aber wenn es unbedingt sein muss, dann kannst du natürlich auch gemeinsamen Speicher zwischen zwei Prozessen haben. Nur das ist dann halt – anders als bei Threads – explizit und auf einen bestimmten Bereich beschränkt statt automatisch alles.jpg zu sharen. Das erhöht auch noch mal die Sicherheit und zwingt den Programmierer, besser über das Problem nachzudenken.
  • [l] Felix Sat, 04 Oct 2025 00:25:58 GMT Nr. 159605
    >>159601
    >Das wäre doch sogar gut! Dann noch ein bisschen seccomp und wir hätten einen Haufen Sicherheitsprobleme weniger gehabt.
    Ne, man hätte einfach nur weniger Nutzer von OpenSSL gehabt.
    Übrigens wäre die Anzahl Sicherheitsprobleme gleich geblieben, es bliebe die gleiche Anzahl Kotstellen zu fixieren.

    >Der SSL-Prozess soll möglichst gar nichts machen außer SSL-Kram.
    Warum? Warum sollte man z.B. eingehende Daten nicht direkt verarbeiten können, sondern erst an einen anderen Prozess reichen müssen? Wir haben gerade im Faden von Performanz geredet. Dann hat man seinen super-performanten SSL-Krams auf mehreren Prozessen, und es bringt nichts, weil die Prozesse das an den nächsten Prozess weiterleiten, der auch schon mal auf einem ganz anderen CCD/NUMA-Knoten sitzt. So gewinnt man vielleicht reine SSL-Bankmarken, aber keine Bankmarken darüber hinaus.

    >dann kannst du natürlich auch gemeinsamen Speicher zwischen zwei Prozessen haben. Nur das ist dann halt – anders als bei Threads – explizit und auf einen bestimmten Bereich beschränkt statt automatisch alles.jpg zu sharen.
    Wo ist das Problem? Im Gegensatz zum Vererben vom Küchensiphon bei fork() müssen die Kinder bei clone() nichts schließen und es belegt auch keine Ressourcen, also keine Performanzprobleme. Dass Felix keine Syscalls für weiteren mmaps und IPC machen muss, macht es nur noch besser.

    >und zwingt den Programmierer, besser über das Problem nachzudenken.
    Das ist ein sehr guter Punkt, denn der Programmierer als Bibliotheksnutzer hat Ahnung, was er braucht, und die OpenSSL-Leute haben keine Ahnung, was der braucht. Gerade die OpenSSL-Leute haben also über den konkreten Anwendungsfall nicht nachgedacht (sie wissen noch nicht einmal, dass er existiert). Und nun grätschten schlecht gestaltete und schlecht programmierte Bibliotheken rein, und wollen dem Programmierer via technischem Zwang sagen, wie sie ihre gesamte Anwendung umgestalten sollen, obwohl die Bibliotheksentwickler keine Ahnung vom Bibliotheksnutzer haben? Das ist Ulrich-Drepper-Style Überheblichkeit/Dogma, und hat nichts mehr mit technischen Gesichtspunkten zu tun.

    Felix braucht Nebenläufigkeit damit es parallel läuft, nicht den anderen Kram.

    Am Ende ist Zwang durch eine fickende Dritt-Bibliothek eben scheiße, die fliegt schneller runter als der Compiler gucken kann.

    >seccomp
    >einen Haufen Sicherheitsprobleme weniger gehabt
    >wenn es unbedingt sein muss
    >Das erhöht auch noch mal die Sicherheit
    Sicherheit ist nicht das Maß der Dinge.
    https://www.youtube.com/watch?v=SbeNRICgzTA

    (Unbedingte Anschau-Empfehlung)
  • [l] Felix Sat, 04 Oct 2025 06:55:52 GMT Nr. 159607
    >>159605
    >Warum sollte man z.B. eingehende Daten nicht direkt verarbeiten können, sondern erst an einen anderen Prozess reichen müssen? Wir haben gerade im Faden von Performanz geredet.
    Weil dann ein Bug im Anwendungskot z.B. dazu führen könnte, dass der private Schlüssel geleckt wird oder ähnliches. Auf die Performanz dürfte das praktisch keinen Einfluss haben. Zwischen "Es kommt ein Netzwerkpaket rein" und "Da wird irgendwann ein Byte draus in meinem TCP-Strom" passiert ohnehin schon so viel... das macht den Kram nicht fett. Die Leute ballan sich doch auch mehrere Reverse-Proxies und Loadbalancer vor ihre Anwendung. Da beschwert sich auch keiner, dass das dadurch zu langsam würde.
  • [l] Felix Sun, 05 Oct 2025 11:32:50 GMT Nr. 159625
    >>159605
    >https://www.youtube.com/watch?v=SbeNRICgzTA
    >(Unbedingte Anschau-Empfehlung)
    Danke dafür! Freundeskreis der Linuxer auf Signal musste ebenso beim Ansehen munzeln :3
  • [l] Felix Sun, 05 Oct 2025 14:08:08 GMT Nr. 159627 SÄGE
    >>159621
    >@antifa.style
    noch Fragen?
  • [l] Felix Sun, 05 Oct 2025 17:54:03 GMT Nr. 159636
    >>159627
    Haßverbrechen.
  • [l] Felix Sun, 05 Oct 2025 19:22:54 GMT Nr. 159638
    >>159636
    Leider hat Mastodon keinen NetzDG-Petzen-Knopf, sonst hätte ich es angezeigt.
  • [l] Felix Sun, 05 Oct 2025 19:25:20 GMT Nr. 159639
    >>159638
    Wer sich freiwillig in dieser Mastdarm-Jauchegrube aufhält, ist doch eh nicht ganz dicht.
  • [l] Felix Mon, 06 Oct 2025 05:47:57 GMT Nr. 159642
    PNG 688×688 272.6k
    >>159638
    >Leider hat Mastodon keinen NetzDG-Petzen-Knopf
    Als ob.
  • [l] Felix Mon, 06 Oct 2025 06:29:19 GMT Nr. 159644
    >>159642
    Das geht aber nur an den Instanz-Betreiber und nicht den Konnektor mit den Behörden. Er hat Felix beleidigt!
  • [l] Felix Mon, 06 Oct 2025 09:28:11 GMT Nr. 159648 SÄGE
    PNG 755×1189 360.1k
    Alle echten Autisten mit anerkannter staatl. Diagnose die ich kenne sind konservativ.


[Zurück]
[c] [meta] [fefe] [erp]