Fórumok
https://www.openwall.com/lists/oss-security/2024/03/29/4
Érdekesség: sem a hivatalos forrásban, sem a github forrás mirrorban nem található meg a backdoor, csak a github release-ben.
Minden olyan distro érintett, ami ez utóbbit használja (például a debian csomag is ebből generálódik).
Ha jól emlékszem, akkor pont ilyenbe bukott bele a sourceforge, ezek szerint ugyanez a sors vár a github-ra? Sourceforge esetében a mirror volt a ludas, kíváncsi vagyok, a github-on hogy kerülhetett bele.
Hozzászólások
14 év után most jut eszébe persze:
https://lore.kernel.org/lkml/20240320183846.19475-2-lasse.collin@tukaan…
Azelőtt nem is CC-zet magának a csóka és a gmailesnek.
https://lore.kernel.org/lkml/20231108202142.7e22d4eb@kaneli/
Szerintem megtörték. (valószínűleg a gmailes :))
Azt azért meg kell jegyezni, hogy amiben a backdoor-t találták, és amit 2010-ben a kernelbe commitolt, két teljesen külön projekt. Az xz-embedded nem használja a liblzma-t.
Egyébként pár éve rákédeztem nála, azt mondta, azért nem érdekli, hogy szerepel-e maintainer-ként, mert a kóddal nincs gond, működik már 10 éve, nem is kell hozzányúlni.
Gyanítom, hogy most is csak álprofilok unszolására rakatta be a neveket, az unszolásnak meg az volt a célja, hogy "Jia Tan" hitelesebbnek tűnjön.
CISA értesítést már kaptam róla kb. 1,5 órája: Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library, CVE-2024-3094
CVE: CVE-2024-3094
Mar frissult a Debian csomag.
elolvastam, hat ez burtal.
Fedoránál kicsit sunnyogós, hogy nincs CVE hivatkozás vagy magyarázat:
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
arch
CISA cikkben pedig említi: https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawh…
Látom, de illett volna a changelogba is egy CVE hivatkozást írni.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Egyetértek. Remélem azért mert siettek és nem security by obscurity.
CVE szám már van, CISA kiadta a közleményt, értelmetlen lenne.
Pedig amúgy nem sunnyogják el.
https://security-tracker.debian.org/tracker/CVE-2024-3094
amit hasznalok az not-affected
neked aztan fura humorod van...
Időközben Fedora 40-re a hivatalos repóban is megjelent az upgrade, ami tulajdonképpen downgrade. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Az Arch is azonnal frissített, ennél nem is lett downgrade, ugyanaz a verzió maradt, de növelték 1-gyel a buildszámot, 5.6.1-1 helyett lett 5.6.1-2.
Kész mázli, hogy a régi verziót nem is használtam, így míg benne is volt a backdoor, nem futott le. Ahogy nézem egyébként sem lett volna hatásos, mert csak az sshd-t érinti, azt meg nem használom, illetve az Arch az sshd-ba nem fordítja bele az xz/liblzma-t, illetve a TERM változónak sem szabad lennie definiálva, holott nálam be van állítva.
Ennek ellenére kiakasztó egy gyökérség, megingatja a bizalmat a github-ban. Ez az ára, hogy a Linux népszerűsödik, egyre inkább megéri rá malware-t írni, terjeszteni. Persze, szerveren mindig is domináns volt, de mivel desktopon nem, ezért a hackerektől akkora figyelmet mégse kapott. Most már kap sajnos.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Kár, hogy a github az egész projektet cakk-pakk letiltotta, pedig megnéztem volna hogy milyen ürüggyel mentek be a commit-ok.
A trükk, hogy az invalid tesztesetek közé dugta be az obfuszkált backdoor object kódot... elismerésem, kreatív megoldás
EDIT: itt van még élő mirror https://git.tukaani.org/?p=xz.git;a=commit;h=cf44e4b7f5dfdbf8c78aef377c10f71e274f63c0
"Many of the files have been created by hand with a hex editor, thus there is no better "source code" than the files themselves." - gyönyörű, 10 pontos megoldás. :/ Az illető (akárki is volt valójában) sajnos értette a dolgát. Későbbi commitokkal még fixálgatta is a valgrind figyelmeztetéseket...
Sajnos most tényleg az lesz a fő probléma, hogy ezen kívül még hány másik backdoor lappanghat benne.
Régóta vágyok én, az androidok mezonkincsére már!
en vegolvastam az elemzest, es a forrashoz nem nyultak, a source tgz-ben nincs is benne, a github release-nel ezt generalja mint snapshot. a feltoltott release tarballokban van csak benne, ott is gondosan eldugva, igy a forraskod abban is egyezik a tiszta githubossal, csak a teszt fileok meg a makefile van megmokolva benne.
a github amikor releaset csinalsz general egy snapshotot a forrasbol de enged melle feltolteni tetszoleges fileokat amit nem ellenoriz, csak odarak melle mint egy ftp-re. csak az volt szennyezett, szoval sztem valamelyik project admin gepet/accountjat tortek meg.
> Sajnos most tényleg az lesz a fő probléma, hogy ezen kívül még hány másik backdoor lappanghat benne.
es hany masik projektben lehet hasonlo okossag?
Sajnos nem, a backdoor egy resze a forraskodban volt, csak build parancs ami aktivalta kerult be a release-ba.
Igen, egy sor nincs benne, ami aktiválta a backdoor-t. Nézd meg a
fejezetet. Azok a részletek mind pusholva lettek a repoba, ott vannak a commit id-k is.
Az első változat univerzáliabb lett volna. :)
Ez a kód is eleve már milyen, rommá van gányolva. Nagyon találó benne a grep -BroaF, szépen összefoglalja, hogy milyen hányingerkeltő az egész, az ilyen káoszba könnyű rosszindulatú kódot rejteni, mert senki nem érti mit csinál, alig lehet kibogozni. Ezért kell a clean kód, hogy érteni lehessen mit csinál, és csak azt csinálja, amit kell neki.
Ennek az xz-nek és a makefile-jának egy szög egyszerű kódnak kéne lennie, hiszen egy CLI megoldásról és egy azon alapuló libről van szó.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Hajnalban abból a leírásból még én sem fogtam fel teljesen, hogy mi is helyzet a tarball-okkal. Csak azt láttam, hogy konkrét commit-okra van hivatkozás (amik persze már nem voltak elérhetőek, ahogy a githubos release tarball-ok sem) -> ebből vontam le a következtetést, hogy valami mégiscsak benn kellett legyen a git-ben.
Ez az azóta publikált leírás (https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27#design) azt mondja, hogy a build-to-host.m4 fileban volt az eltérés tarball-ok között. Ezekszerint a payload benn volt a gitben is a tests directoryban, csak a build folyamatot eltérítő rész nem volt ott. És ráadásul ez is egy elterjedt "szokást" használ ki, hogy az autotools toolchaint használó projektekben a release tarballban nem kell a kályhától indulni autogen.sh-val meg autoconf-fal, hanem rögtön lehet ./configure-ral kezdeni a fordítást. Tudta az illető (illetők), hogy mit csinál... azt kell mondjam, hogy banánhéjon csúszott el...
Régóta vágyok én, az androidok mezonkincsére már!
Ahogy olvasom, nem a github volt a ludas, hanem az egyik kontributor, aki szándékosan tolta bele a backdoor-t.
Találtam egy idővonalat:
https://boehs.org/node/everything-i-know-about-the-xz-backdoor
Ezek szerint alaposan eltervezett, több éves aknamunka eredménye volt ez a támadás.
Nekem az a bajom, hogy ez jogi értelemben szerintem nem bűncselekmény. Ezeket az ügynököket ilyenkor nem engedik többé nyílt forrású project közelébe? Bár mindegy, kap egy másik személyazonosságot és dolgozik tovább. :(
Mi a megoldás az efféle jelenség ellen?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Az, amit Linus csinál. Elküld mindenkit a picsába, aki csak egy kicsit is gyanús commitot próbál eröltetni.
Nem lesz tőle népszerű persze, de a projekt szempontjából mindenképp hatásos.
Többen csinálták ezt az xz esetében, vagy egy valaki? Azoknak, akik ezt tették, ugye megvontál a commit jogaikat?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Az egész repót letiltották, senkinek sincs commit joga már. De egy ember volt egyértelműen, ez a bizonyos "Jia Tan" álnevű.
Egyébként meg vehető úgy, hogy bűncselekmény volt amit csinált, a BTK. 287. § szerint legalábbis: az elektronikus adat megőrzésére kötelezéssel érintett adatot jogosulatlan személy számára hozzáférhetővé teszi.
Nem túl egyértelmű a nyakatekert fogalmazás miatt, de azért nem is ördögtől való belelátni, pláne ha azt nézzük, hogy az xz backdoor kifejezetten arra lett kifejesztve, hogy az OpenSSL-be nyúljon bele és az azzal védett rendszert jogosulatlan személy számára hozzáférhetővé tegye.
De a BTK 422. § szerinti tiltott adatszerzés is fennállhat: elektronikus hírközlő hálózat vagy eszköz útján, illetve információs rendszeren folytatott kommunikáció tartalmát titokban kifürkészi.
Én semmiképp sem zárnám ki, hogy akár még bűncselekmény is lehet, amit tett.
Igen, csak nem tudom, mi van a nemzetközi jogban. Az illető állampolgársága vagy tartózkodási helye alapján nézik-e ezt. Online nincsenek határok, fogalmam sincs a jogértelmezéssel.
Az jó, ha letiltották az egészet. Az számomra kérdés, kik azok, akik vizsgálják, vagy RO az egész, akkor bárki, születik valami konszenzus arról, pontosan mi történt, majd utána megnyitják a projectet, gondolom. Mert nyilván ez egy aktív, fejlődő project, magam is gyakran használom az xz-t.
Eléggé kínai hangzású ez a név.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Szerintem nincs para (itt most legalábbis), nem a projektet zárolták.
Ez csak a github mirror, amit letiltottak, a hivatalos xz forrás továbbra is él és virul; valamint abban egyébként sincs benne a backdoor (az kifejezetten a github által futtatott tesztkörnyezet helyezte bele, és csak a github release-ben volt megtalálható).
A linkben amit postoltál ez van:
Vagy ezeket cserélte le a releaseben?
Egyik sem.
Ha jól értem, akkor az van, hogyha csak letöltöd és simán lefordítod az xz-t, akkor az rendben van, backdoor mentes marad. Ellenben ha a github CI által is használt release szkriptet használod a fordításhoz, az előbb lefuttatja a teszteket, ekkor viszont a gyári configure szkript lecserélődik egy olyanra, ami a végeredménybe belerakja a backdoor-t.
Az általad linkelt commit-ok csupán csak olyan tesztfájlokat adnak hozzá, amik a hekkhez szükséges obfuszkált adatokat tartalmazzák. Önmagukban semmi jelentőségük, a módosított configure szkriptre is szükség van, hogy a belőlük kinyert adattal kezdjen is valamit (ami a tesztek futtatása során történik meg). A sima (első lépésben nem módosított) szkript futtatásakor ezek csupán csak tesztadatokként szolgálnak, és a beléjük rejtett okosságot semmi sem használja fel.
azert a hack terjeszteshez az is kellett, hogy a debian/watch fajl is "hibas" legyen: ez a fajl segiti a maintainert (vagy a scriptet) hogy honnan kell letolteni az uj upstream verziot: ahogy latszik az xz-nel a project siteja van megadva (amibe beleraktak a modositott configure-t). pl az openjdk-nal a github tags van beallitva amit a github rendszer live general a git tag alapjan.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Név alapján kínai/kóreai hacker, valószínűleg állami támogatással. Szerinted mennyire van veszélyben?
Sőt, a fenti idővonal leírás alapján megkockáztatom, ez jól szervezett csapatmunka volt. Annyi "supporting actor" tűnik fel a történetben, és a "Jia Tan" nevű karakter annyi időn keresztül intenzíven dolgozta be magát az xz maintainerségbe, hogy szinte biztos, hogy ez nem egyetlen személy magánakciója volt. Ez alatt a 2-2.5 év alatt ez(ek) az ember(ek) meg is élt(ek) valamiből, úgyhogy biztos hogy valaki fizetett is ezért az akcióért.
Régóta vágyok én, az androidok mezonkincsére már!
a nev validalva lett?
neked aztan fura humorod van...
A nev alapjan...
Ha te allami (vagy magan, tokmindegy) megbizasra backdoort fejlesztenel, milyen alnevet valasztanal?
Kovacs Peter, amivel maris reflekorfenybe helyezed kis hazankat, vagy inkabb John Smith lennel, vagy Nokoda Hakamaso, vagy Tin Lin vagy Igor Rasputin?
Jó, ebben van igazság. Ez semmit sem bizonyít, meg annak ellenkezőjét sem.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Ez a hiba független a nyílt forrástól. Bármilyen kódba be lehet vinni ilyeneket úgy, hogy az sokáig észrevétlen marad. Sőt, ha az üzemeltetett infrába viszik be a trójai falovat, akkor meg aztán még nehezebb a helyzet. A "megbízható IT" egy nagyon nehéz terület, szinte senki se foglalkozik vele. Szerintem.
Univerzális megoldás? Az nincs. De vannak támogató eszközök az ilyen hibák előfordulási esélyének csökkentésére: folyamatos CR, statikus kódelemzés, audit, refaktorálás stb.
Talan az elso es legfontosabb, hogyha az ember ir egy programot akkor fuggjon <50 librarytol (de inkabb<10).
A irsz egy random node.js alapu projektet, akkor a dependencyje az ilyen 1000-es nagysagrendu. Ez akkora tamadasi felulet hogy kb. kivedhetetlen.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
+1000
Hát én jó párszor vitatkoztam már a fejlesztőkkel, hogy nem rántunk be csak úgy libeket a projektbe. Kb. 1%-uk értette, hogy miért is probléma ez. És így akarunk security-t, secopst, devsecopst...
Az i-re azt tette fel a pontot, amikor sikerult egy olyan node.js projektet eloadni, ami egyetlen egy sorbol allt, a tobbi korites volt (package.json, license, readme, stb).
Az igazi hab a tortan, amikor kibukott hogy ez az egy sor is bugos.
Mar nem emlekszem a projekt nevere, de a 1 sorban is bug van miatt bukott ki.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Pont ezt beszélgettük a héten a security-s sráccal hogy olyan mennyiségű libet használnak a fejlesztő srácok pont a javascript-es világ miatt, hogy esély nincs arra hogy ezt bárki átnézze security szempontból, szóval valószínűleg teljesen máshogy kell hozzáállni a témához.
Nem értek egyet. Nyílt forráskód esetén az ilyenek pikk-pakk kiderülnek, mint ahogy itt is azonnal kiderült és orvosolva lett.
Egy proprietary kód esetén ugyanis még az is lehet, hogy a reverse-engineering jogilag tiltott, és nem is kereshette volna, hogy mitől lassú. És akkor még arról nem is beszéltünk, hogyha meg is van, hogy és mikor lesz eltávolítva a kártékony kódrészlet.
De van, ellenőrzött forrásból kell helyben fordítani, és nem 3rd party binárisokat letöltögetni. Legalábbis az ilyen "forrásban nincs benne, csak a release-ben" jellegű problémák ellen megvéd, persze korántsem kézenfekvő a legtöbb esetben ezt megoldani. Emlékszem, anno amikor még Gentoo-ztam, minden forrásból települt, de több nap volt a LibreOffice-t, Firefox-ot meg összes programot feltelepíteni...
Szerintem tök véletlen volt, hogy kiderült :) Amitől meg lassú volt, az object code volt, szépen kiszedhető a teszt állományokból.
A manyeyeballs meg hiába nézegette volna az új bináris teszt állományt :)
Valóban tök véletlen volt, hogy kiderült. Arra utaltam csak, hogyha nem nyílt forráskódú lett volna, akkor lehet, nem is nézhette volna, mitől lassú (így biztos nem derült volna ki), és egész biztos nem lett volna ilyen gyorsan javítva sem.
Azert ne maszatoljunk. Nyilt forrasnal is emberek vannak, akil vagy megtalaljak vagy nem.
Ebben a konkret esetben egy embernek tunt fel aki profilingolt, hogy mi a toktol lassu az sshd. Ha a backdoorban odafigyeltek volna erre, hogy masodpercenkent, percenkent es orankent max mekkora cpu idot kanyarithat (es halozatot es egyeb resourcet), akkor kb. soha senkinek se tunt volna fel.
Itt konkretan a backdoor kiakadt es 100%-on hasznalt egy cpu core-t es ez tunt fel.
Ha erre odafigyelnek ez a backdoor 10evig el lett volna minimum. Foleg ha meg a backdoor fejlesztoje egyeb fejlesztest is letesz az asztalra.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Emberünk az 5.6.0-ás backdoort próbálta , az 5.6.1-ben javítottak rajta lehet ott ki sem bukott volna. ;)
https://www.openwall.com/lists/oss-security/2024/03/29/13
Nincs maszatolás. Szerinted eleve hányan állnának neki nyomozni egy proprietary cucc, mondjuk a Windows belassulása miatt? Már ha egyáltalán legálisan megtehetik, ugyanis pl. a Microsoft esetében volt már olyan EULA, hogy tilos a performanciamérés... És ahogy fentebb is jelezték, ott eleve csak fizetett programozók nyúlhatnak hozzá a forráshoz, tehát abba akkor kerül ilyen, ha az a cég érdeke. (Most ne menjünk bele, hogy törvényi előírás a CIA backdoor megléte.)
Véletlen volt, persze, hogy kibukott, na de egy proprietary kód esetén még csak esély sem lett volna erre a véletlenre.
Nem tett. 3 évvel ezelőttig se híre, se hamva ennek az illetőnek. Én biztos, elhajtottam volna a fenébe, és nem adok neki admin jogot.
Volt egyébként nálam is nagyon hasonló próbálkozás több is, ráadásul időben is pont azután, hogy együtt dolgoztam Lesse-vel és sűrűbben leveleztünk (2021 elején - közepén). Érkezett admin jogosultság kérés is egyik-másik repómra, meg mindenféle gyanús patch (nem issue vagy PR, amit mindenki láthat, hanem emailben jött ismeretlen címről, ami eleve gyanús). Három módosításból kettő lényegtelen és felesleges makróoptimalizáció, de rendben volt, az utolsó viszont sunyiba behozott egy buffer-overflow-t és potenciális végtelen ciklust. Bár nem láttam, hogy hogyan lehetne kihasználni, de mindesetre gyanús volt, így jobbnak láttam elhajtani. Ha kíváncsi vagy a részletekre, elő tudom keresni a levelet.
Szóval ja, résen kell lenni, ha open source projekteket visz az ember.
Résen van :)
https://git.tukaani.org/?p=xz.git;a=history;f=CMakeLists.txt;hb=f9cf4c0…
Csak kicsit megkésve...
Ez részben igaz. Egy property fejlesztésű könyvtárnál/rendszernél pontosan kontrollálva van hogy ki tud belecommitálni a kódba. Nem egy random nick, hanem egy konkrét alkalmazott, akiről minden adat megvan illetve jó esetben minden kódot átnéznek és egyszerűen nem fogják elfogadni a PR-t. Ha pedig van normális security a cégnél akkor van egy elvileg folyamatba épített security vizsgálat is. egy open source projektbe ez a kontroll nem garantált, vagy van, vagy nincs, vagy megnézi valaki, vagy nem.
Nem értek veled egyet.
A nyílt forráskód nem garancia a hibamentességre. Annyi előnye van, hogy nagyobb az esélye, hogy kiderül a hiba / sebezhetőség. Csak hogy egy durva hibát említsek, ami 27 évig volt láthatatlan: https://www.theregister.com/2014/12/10/x_window_system_bugs
Ellenőrzött forrás. Nagyon nehezen megválaszolható kérdés, hogy mitől lesz valami ellenőrzött, kiben bízunk / bízhatunk meg. Az SHA256 checksum már elég? Netalán a belső security team fog saját verziót buildelni? Esetleg valaki soronként átnézi a kódot, majd buildel és megpörgetik fuzz teszten 1-2 hónapig? Netalán CC EAL 5+ plecsnis szoftvereket telepítünk csak?
Szóval nagyon nem triviális erre válaszolni szerintem.
Az EU-nak például ilyennel nem ártana foglalkoznia, hogy rendszeresen auditál(tat) általánosan használat libeket. Egy xz-nél egyéreltelmű volt a koncepció, hogy miért a surranópályával próbálkoztak. A nagy kérdés, hogy vajon hány ilyen van még, és mennyire sikerült beszivárogni az openszorszba. Ezzel egyébként sikerül a belé vetett bizalmat is aláásni, mert hiába adja licensz, hogy AS IS a történet, azért elég bátran használatban van.
Egyetértek.
Ha az EU átlépne a "megbízható és biztonságos IT" korába, akkor azzal hatalmas előnyre tenne szert. Lehetne olyan ajánlásokat, jogszabályokat tenni, ami ezeket elősegítené.
Volt ilyen régen: https://joinup.ec.europa.eu/collection/eu-fossa-2
Meg talán ez is ilyesmi, csak ez nem EU-s: https://www.sovereigntechfund.de/
Szerintem inkább a Linux Foundationnek kellene megtalálnia azokat a projekteket, amik elég fontosak, hogy financiálisan is meg legyenek támogatva. Senkinek sem jó, ha kiégnek a maintainerek.
Az EU épp NIS2-vel fogja elfüstölni a cégei IT erőforrásait. Akkor esetleg például nem ártana, hogy ha lenne valami audit "fentről" a libekre például.
Az USA-nak nem kellene ugyanezt megtennie? Vagy Kínának? Vagy Magyarországnak? Vagy a Googlenek? Redhatnak? Pistike Kft-nek?
Meg egy-két audit nem fogja megoldani a kiégés problémáját, ami inkább rossz menedzsment jellegű.
Itt mint EU-s jogszabály, meg bevezetés van. Mivel ez nem pusztán magyar vonatkozású, ezért EU szinten, mint saját magunk dolga kellene ezt kezelni. Hogy aztán van mondjuk másegyéb hasonló, és esetleg egymásnak segítenek, hát mégjobb.
Egy A/4-es random kft-nek mennyi tudása, és erőforrása lesz egy ilyenre? Puff vesznek egy Windowst és nem érdekli őket tovább, illetve felhőileg se fognak Linuxot használni.
Elolvastam. Many eyeballs.
De igazabol ha nem hasznal tulzott cput, vagy mas resource-t, akkor soha az eletben nem bukik ki.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
A Many eyeballs olyan mint a pénz. A pénz sem boldogít, különösen, ha nincs.
Itt is ez volt a baj. Szerencsétlen (saját bevallása szerint eléggé kiégett) Lasse Collin két szeme volt az egyetlen kontroll. És a Jia Tan nevű account tulajdonosa (akárki is van mögötte), 2,5 év munkával szépen fokozatosan elaltatta Lasse Collin éberségét.
Régóta vágyok én, az androidok mezonkincsére már!
https://forum.openwrt.org/t/project-statement-about-xz-5-6-1-cve-2024-3…
neked aztan fura humorod van...
A routerem:
Szóval nincs baj.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Nem sok x86_64-el megáldott router van openwrt-vel, olyan se ami nem dropbear-t használ. ;)
Nem néztem utána, hogy ez a backdoor architektúra-specifikus, illetve ezek szerint az ssh daemon sem mindegy. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Kellett a CPU-bloat xz-t defaulttá tenni mindenhol, azért a max. 10%-kal jobb tömörítési arányért, amennyit hoz a nála jóval erőforráshatékonyabb gzip-hez képest, a gigabites internetkapcsolatok világában. Cserébe 2x annyi CPU idő kell a kitömörítéshez és 13x annyi a betömörítéshez és most már ajándék rootkit is jár hozzá.
Well done, babzsákfejlesztők.
Megéri™
ha ertenel hozza akkor tudnad hogy nem(csak) a gigabit kapcsolat miatt jo a -10%, hanem a tarhelynel....
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Továbbá, hogy mennyit fizetsz a kimenő adatforgalomért a tárhelyszolgáltatónak.
Régóta vágyok én, az androidok mezonkincsére már!
2x annyit fizetsz, ha gzip-pel tömöríted? Nem. Maximum 1,1x fizetsz többet.
A felhasználóid és a bolygó viszont 2x annyi villanyszámlát (tehát 100%-kal többet) fizet kitömörítéskor és ha egy szálon vagyunk, akkor időben is 2x ennyit. Tényleg megérte™ azért a 10%-ért, főleg, hogy az adathordozók és az adatforgalom ára is többet csökken évente.
Ez semmi más, mint a költségek kiszervezése externáliákba és arroganciának hívják.
a peldad ott santit, hogy a hattertar konnyen nagysagrendekkel lassab, mint a cpu. es akkor a halozati transzferrol nem is beszeltunk. tehat a 10%-kal tobb adat atlapatolasa/ramba lapatolasa boven lehet tobb idotobblet(az adat tartolasahoz is kell delej... cost, stb.), mint 2x cpu cycle. :)
Gyengébbek és dorsyka kedvéért: Ha xz-vel tömörített anyagot olvasol, akkor 53 MB/s-kel olvasol. Ha gzip-pel tömörítettet, akkor 95 MB/s-kel. A konkrét értékek kevésbé számítanak, a köztük lévő arányszám viszont mindenhol igaz lesz. Az az idealizmus, amit erőltetsz, az első SSD-ről indított UPX packerrel csomagolt, minden induláskor 100% exta CPU-t elzabáló és másodpercekig szöszmötölő (upx.exe-vel kicsomagolva pedig azonnal induló) binárisnál megbukott, nagyjából egy évtizede.
https://www.rootusers.com/gzip-vs-bzip2-vs-xz-performance-comparison/
Semmi, de semmi értelme nincs 10% tömörítési arányért +100% CPU-t beáldozni. Az ég világon semmi. Főleg nem az open-source világban, ahol szponzorált mirrorokról jön minden, így fix 0 Ft költsége van nekik a projektek felé.
Az "érveléseddel" az (is) a probléma, hogy az a bizonyos különbség rohadtul nem 10%. Sima txt-nél lehet akár 2x kisebb a méret az xz javára.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
Szerintem inkább ott van az érvelésével a probléma, hogy a backdoort tehették volna a gzip-be is vagy akárhová. Bármelyik elterjedt megoldást érdemes támadni.
Igazad van, én csak arra reflektáltam az eredeti problémától függetlenül, hogy nem állja meg a helyét az az érvelés, hogy 10%-ért nem éri meg a több erőforrás használat. 10%-ért valóban elgondolkodtató lenne, hogy megéri-e, csak rohadtul nem 10%-al jobb az xz.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
igy van. foleg a gziphez kepest inkabb 30% az, a bzip2-hoz kepest 10% de annal meg 2x gyorsabb az xz.
https://www.rootusers.com/gzip-vs-bzip2-vs-xz-performance-comparison/
A probléma a "lehet"-tel és az "akár"-ral van, mert az utána írtak a valóságtól igen távol állnak. Vagy 2x helyett valójában 20%-ot akartál írni?
Tesztfájl: https://raw.githubusercontent.com/wess/iotr/master/lotr.txt
Kevert tartalomnál, ami jellemző az összes binárist is tartalmazó csomagra, a különbség rohadtul maximum 10%. Kizárólag plaintext esetén van meg a 21%. Még mielőtt tovább lépnél a kötekedésben, nem-nem, a -9 -es kapcsoló sem módosít az aránykülönbségen.
pedig de:
https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/
ne zavard mar ossze valo eletbol vett peldakkal, meg a vegen infinite loopba kerul! :)
mondjuk akinek ingyen van a tarhely, annak gondolom mindegy :D
csak a korrektség végett kérdem, h mindegyik max compression ratio-val készült, vagy a .xy az max, a .gz pedig min?
Nem tudom min készült. Alapból az xz és a gzip -0 ... -9-es fokozatok közül a 6-osat használják, de ha tömörítési fokot tesztelnek, akkor érdemesebb felvenni mindkettőt -9-re, ha meg a sebességet tesztelik, akkor meg -1-re.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
csak a korrektseg vegett, fingom sincs: https://gitlab.gnome.org/GNOME/gimp/-/releases
http://ftp.cz.debian.org/debian/pool/main/f/firefox/
gimp*.xz pedig xz -c [tarfile] -vel.
Akkor alapbeállítással, -6 kapcsoló, közepes tömörítés.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Azért azt vedd figyelembe, hogy az xz jobban tömörít sokkal a legtöbb esetben, amennyivel lassabb, annyival meghálálja a helynyereséggel, és az esetleges hátrányát tudja kompenzálni azzal is, hogy támogat többszálú betömörítést. A gzip nem tud, igaz annak van a pigz nevű forkja, amit tud. Kitömörítési időben nincs nagyon közöttük különbség.
Ha neked a sebesség a fontos, akkor a zstd-t, és az lz4-et ajánlom. Az lz4 elvileg gyorsabb elméletben, de megint csak egy szálat támogat, a zstd viszont többet, így visszanyeri a vezetést sebességben, és még alacsonyabb tömörítési fokozaton is jobban tömörít, mint a gzip. A gzip inkább legacy felhasználásra van, meg pl. muzeális gépen, meg kevés RAM-nál lehet előnye.
Egyébként büszke vagyok rád, hogy shellkimenetet tettél be, és nem XP-s screenshotról mutogatsz :D Gyanús vagy te nekem, hogy suttyomban te is elkezdtél linuxozni, csak senkinek nem vallod be :P
Lemértem, a lotr.txt tömörítésében az lz4 a leggyorsabb, aztán a zstd. Mivel plain text file, sok ismétlődéssel, ezért az xz/lzma-nál jobban tömöríti az 7zip -mx=9 -mm=ppmd és a bzip2 -9 is, mert ezek ebben a műfajban erősek. A nanozip még jobban tömörít, de elavult, a paq8/zpaq meg a legjobban, de az olyan lassú, hogy életszerűtlen a használata.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
A tonoritesnel mindig kerdeses, hogy milyen a bemeno adat. Anno meregettuk, hogy a mi rendszerukben mi az optimalis, amikor felmerult, hogy a korabbi gzip helyett mast kene hasznalni. Mi a sima system logokat es az audit meg alkalmazas logokat akartuk kevesebb helyen tarolni, nagyjabol pont ugy, mint minden ceg a vilagon. Meregettem kulonfele beallitasokkal, dict size meg hasonlok, de a futasidot es a tomoritett meretet nezve az jott ki, hogy a sima szoveges fileokra az xz -1 teljesen jo, mert hamarabb vegez mint a gzip, es asszem 30% -al kisebb a file a vegen, ami sok tera megtakaritast jelent. Az xz nem veletlenul lett az infrastrukturak szerves resze vilagszerte.
Nem véletlen van ennyiféle tömörítési algoritmus, mert mindegyiknek más fekszik. Az elterjedtebb algoritmusok közül pl. PPMd (7-zip-nek van ilyen módja), Burrows–Wheeler (bzip2) párosnak pl. az emberi szövegek fekszenek a legjobban. Megint más tömörítés jó médiatartalmakra, kódekekre. Megint más bináris futtatható állományokra.
Az xz, zstd inkább általános, azok úgy kb. mindenben viszonylag jók. A tömörítési fokokat is azért említettem, mert valóban, az xz alacsony fokozaton nem csak lehet ugyanolyan gyors, vagy gyorsabb, mint gzip, de lehet hatékonyabb is mellette.
Így gyakran valami speciális anyagnál több tömörítőt, és fokozatot is ki kell próbálni. Volt már könyv, amit nekem a bzip2 tömörített a legjobban. Volt egy bináris fájl egy régi CD-ről, azt pl. valami miatt úgy tudtam a legjobban tömöríteni, hogy zstd-vel tömörítettem először be, utána xz-vel, ez sokkal jobb tömörítést adott, mint ha csak egy tömörítőnek a legerősebb fokozatával tömörítettem volna. Megint más projektnél a sebesség számít, nem a helynyereség, ott mindent ver jelenleg a zstd. Így nincs legjobb tömörítő, egyiket se lehet abszolút győztesnek kikiáltani.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Pontosan. Volt projekt, ahol csináltam saját tömörítőt, mert egyedi volt az igény. A legtöbb tömörítő arra játszik, hogy egy fájlon belül ismétlések vannak. De mi van, ha sok majdnem egyforma fájlod van, és egyesével kell tömöríteni őket? Egy-egy fájlon belül nincs is ismétlődés, nem lesz haszon. De ha elkezded a tömörítést egy tömörítővel néhány példa adatra - előtanítod a tipikus mintákkal -, utána már az új adatokat extra hatékonyan fogja tömöríteni! Vagy egy másik megoldás a form-tömörítő (így neveztem el), ami egyszerűen egyetlen példából kiveszi az egyező szakaszokat, és azokat behivatkozza, ha talál ilyet. A template-tel előállított adatok tömörítésére kiváló. Én riportokat tömörítettem így.
Egy másik speciális eset az adatsorok tömörítése. Tipikus, hogy az adatsorok következő elemét nagyon jól lehet becsülni a múlt alapján. Például kevesedfokú görbét követ, vagy a meglévő frekvenciák szerint rezeg. Ilyet is csináltam már, mintánként 32 bitet le lehetett nyomni mintánként átlag 6 bitre. Közben a standard tömörítők semmit sem tudtak kezdeni vele, mert ismétlődés az nincsen benne.
A lényeg az, hogy az adatfolyam saját logikájához passzoló tömörítőt kell találni, az fog optimálisan működni. Az adat természetére vonatkozó a-priori tudást nem szégyen kihasználni.
Tökre offtopic, de nekem az UC2 színes felülete nagyon bejött ... (meg fiatal is voltam akkoriban :D )
A gzip betiltása megjelent már a Magyar Közlönyben?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Igen, a fillérekért elérhető terabájtos adathordozókat kifelejtettem, bocsika.
A fillérekért kapható terabájtos adathordozók az ördög művei, mert ezek teszik lehetővé a software bloat tárolását. Aki nem fér el 10 GB-ban, az magára vessen (Windows XP rendszerigénye 1.5 GB).
https://a.te.ervelesi.hibad.hu/hamis-okozat
A gzip mennyiben védettebb az xz-nél hasonló incidensek tekintetében?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Már saját oldala is van:
https://tukaani.org/xz-backdoor/
Ez is idevaló:
https://xkcd.com/2347/
Valóban nagyon idevágó, ment is a +1!
Ezt olvastátok? Ez nagyon durva...
https://jmmv.dev/2023/07/ldd-untrusted-binaries.html
Így: https://catonmat.net/ldd-arbitrary-code-execution
Na, ki találja meg azt az egy karaktert, ami hazavágja az egészet? (Segítek, írásjelről van szó)
https://git.tukaani.org/?p=xz.git;a=blobdiff;f=CMakeLists.txt;h=d2b1af7…
Őszintén szólva nálam már az bazi nagy red flag, hogy egy tömörítő tesztjei között miért is van jogosultságellenőrzés tesztelés úgy egyáltalán. Nem dolga; hisz egy bufferből csinál egy másik buffert, semmi több. Bármi más a tesztekben már eleve baromira gyanús kéne legyen.
Nagyon remélem, hogy ez az egész mizéria nem borítja ki a srácot, mert a kódja egyébként nagyon jó, és a másik lzma implementáció, a 7zip-es egy használhatatlan és portolhatatlan összetákolt hulladék. Nagy kár lenne, ha most végleg besokkalna és felhagyna az xz fejlesztésével emiatt.
A linux kernel landlock támogatását teszteli a kód. Hogy miért nem assertál el a build egy _szintaktikailag_ hibás kódra, az egy jó kérdés...
Az, hogy nem assertál rá, teljesen várható volt, hiszen Jia írta azt is meg a tesztet is. A célja mindvégig az volt, hogy ne is működjön, de ez ne tűnjön fel elsőre senkinek.
A kérdés sokkal inkább az, hogy egy tömörítő függvénykönyvtár miért is akarja tesztelni a linux kernel landlock támogatását, hiszen semmi köze hozzá (vagy hát legalábbis nem szabadna, hogy legyen köze hozzá).
nem is volt mar olyan program ahol a egyik unitteszt nem futott mert olyan volt a kornyezet, es az eltorte a tesztet. (bare metal linux vs docker container). olyankor jo ha van egy-egy tesztet ki lehet kapcsolni, mert mashogy nemmegy :(
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Én úgy látom a commit historybol hogy a landlock támogatást eredetileg Lesse commitalta.
"A kérdés sokkal inkább az, hogy egy tömörítő függvénykönyvtár miért is akarja tesztelni a linux kernel landlock támogatását, hiszen semmi köze hozzá (vagy hát legalábbis nem szabadna, hogy legyen köze hozzá)"
Ahogy utana olvastam a landlock eseteben az alkalmazas sandboxolja magat (meghiv bizonyos syscall-okat). Ehhez szuletett a teszt.
Az már kiderült, hogy a backdoor mit csinál? Eddig csak találgatásokat láttam, hogy az sshd processzben csinálHAT valamit.
Igen, kiderült, lehetővé teszi, hogy tetszőleges extra kódot futtasson le az SSH, amit messziről be tudnak adagolni neki.
Érdekes, hogy hiába értintett az Arch, Gentoo, stb. is, úgy van megírva a kód, hogy csak .deb és .rpm disztrókon működjön. Gyaníthatóan nem sok áldozat lesz, mert lényegében ezek közül csak a Debian Sid, Ubuntu 24.04 béta/RC, OpenSuse Tumbleweed, Fedora Rawhide, Fedora 40-41 béta érintett csak, a stabil és LTS kiadásokban, amit az éles szerverek és céges/otthoni desktop gépek többsége használ, az xz verziója olyan régi, hogy az még nem tartalmazta a backdoort.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
"úgy van megírva a kód, hogy csak .deb és .rpm disztrókon működjön"
Szerintem egyszerűen így adta ki. Gondolom hátulról előrefele indultak el, a végcél az ssh megszabotálása, de ne direkt függőségén keresztül, mert úgy kevésbé lesz gyanús. Rájöttek, hogy vannak disztrók amik libsystemd-n keresztül - akaratlanul - behúznak egy csomó szükségtelen tranzitív függőséget. Upstream openssh biztonsági elemzésénél ezek a libek így képbe sem kerülnek. Ezeket gondolom egytől-egyig alaposan végignézték, és megtalálták a leggyengébb láncszemet: az 1 emberes liblzma-t.
Nyilván az volt itt a koncepció, hogy a legendás Kurt Roecx nyomdokaiba lépve (csak vele ellentétben nem balfékségből, hanem szándékosan) várhatóan 1-2 évig radar alatt fog maradni a kis művészbejárójuk, és addigra már lecsorog a legtöbb a LTS és enterprise disztróba is. Óriási szerencse, hogy nem így történt. És nyilván most sok elemzés témája lesz, hogy vajon lett volna-e valami védőháló ami megfogta volna.
Régóta vágyok én, az androidok mezonkincsére már!
Engem inkabb az erdekel, hogy hany ilyen hack maradt radar alatt, ami hasonlo modszerrel, egy libet gyengitve jutott el egy kritikus programba?
>>úgy van megírva a kód, hogy csak .deb és .rpm disztrókon működjön.
természetesen semmi köze a csomagkezelőnek ehhez, teljesen feleslegesen bevezetett libsystemd (és ezzel liblzma) függőségnek annál inkább
Impact: The malicious code path does not exist in the arch version of sshd, as it does not link to liblzma.
bántsák a systemd-t?!
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Es az a valo eletben a Linux alapu rendszerek mekkora resze? 99%? :)
Ha evekig dolgozol azon, hogy betehess valahova egy backdoort, akkor azzal nem az otthoni userek obskurus disztroira fognak loni.
Ugyanúgy nem teszünk ssh-t direktbe internetre mint rdp-t? ;)
Nem lehet arra a feltetelezesre epiteni, hogy mindig kivulrol fognak jonni.
/off
az ilyen webes hekkek miatt van hidegrazasom a "curl http://install.site.com | bash -" fele telepitoktol. es sajna egyre tobb ilyen lesz.... :morcosfej:
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
De hát egy paranccsal felmegy! És közben csak egyszer kér jelszót! :)
Ha nem bizol bennuk, akkor atnezed a .sh fajlt.
Pont ugy, mint ahogy az aszf-et is elolvasod.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
ez igy van. meg rajtam kivul par hozzaerto csinal igy. a tobbi meg esznelkul futtatja rootkent, aztan ha lecserelodik a script valami mokolt cuccra, akkor csodalkozik hogy okossag telepult. raadasul nemcsak kis cegek hasznaljak igy hanem nagyok is :(
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
pont ugy, mint az ÁSZF-eknel.
Egy fecske nem csinal nyarat. Lehetsz te barmennyire okos, nincs igazan valasztasi lehetoseged.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Hát nagyon nem.
Az ÁSZF-et nem elég linkelni, hanem kötelező a felhasználó képébe tolni, ráadásul a legtöbb helyen nem is lesz aktív a "tovább" gomb, amíg végig nem görgeted.
Ezzel szemben az .sh-t a legtöbb helyen nem is linkelik olvasható formában (csak copy'n'paste one liner van), ezért a legtöbb felhasználó úgy futtatja, hogy még csak bele sem néz.
További jelentős különbség, hogy míg az ÁSZF átlag Pista által érthető, emberi nyelven íródott, addig egy .sh esetében nem várhatod el, hogy minden végfelhasználó shell guru legyen.
Fogadni mernék, hogy az ászf-et alaposan, értőn olvasók aránya nem magasabb, mint a shell script-et olvasni képes emberek aránya. És mindkettőre igaz, hogy simán érdektelenségbe lehet tolni bárkit vele, mert ha 20 oldal, nehéz nyelvezetű és tele van hivatkozásokkal, akkor még az is feladja, aki eredetileg szőrözni akart
Függetlenül attól, hogy értik-e, az egyiket akkor is a képedbe tolják, míg a másikhoz meg még a linket is vadászni kell, hogy egyáltalán elolvashasd.
Nagyon nem ugyanaz a kettő!
ps: például a kollága által linkelt https://docs.rke2.io/install/methods is tipikusan ilyen, nincs sehol link a szkriptre ahol megnézhetnéd; ha el akarod olvasni, akkor az url-t ki kell jelölnöd a parancs közepéből és kimásolnod, majd új büngészőfül url sávjába beilleszteni és megnyitni. Ne vicceljünk már, hogy ez ugyanaz lenne, mint amikor a szöveg egyből megjelenik.
Kicsit azert hadd vedjem meg oket, ha valaki igy sem nezi meg a scriptet, az mar az o baja.
Szerintem aki nem tud elolvasni es ertelmezni egy .sh scriptet, annak nem biztos, hogy rogton rke2 clustert kellene telepitenie, mert annak jo vege ugysem lesz.
De kicsit eltavolodva a peldatol, vajon egy .rpm-et hanyan szednek szet telepites elott, hogy mit fog csinalni? Vagy odaadjak neked egy tarban a binarist, honnan tudod, hogy nincs-e benne backdoor?
Imho itt az .sh script a legkisebb problema.
Aszondja:
És most tegye fel a kezét, aki random webshopban mind az ASZF-et, mind az Adatvedelmi tajekoztatot el szokta olvasni.
Mese.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Ez itt a sirva-rohogos smiley: ;,,-D
@SySERR Te voltál? 😂 Tiszta mscplite szitu csak már komoly social engineeringgel.
ez? https://hup.hu/node/119601
mondjuk az xz-s azert sokkal kifinomultabb
Igen! Az tuti, azért az xz szépen fel lett építve és nem egyszemélyes hadműveletnek néz ki, de technikai megoldásokban még akár 1-1 ismerős rész is van. Meg, eltelt pár év azóta.
(Bár még néha szállnak TCP_SYN,TCP_RST,TCP_ACK,UDP csomagok volumetrikusan SySERR megoldásaiból :D)1. Open source igy meg ugy: Ehhez sem kellett open source, hogy megnezzek, hogyan mukodik: (85) Reversing WannaCry - YouTube (Reversing WannaCry Part 1 - Finding the killswitch and unpacking the malware in #Ghidra by Youtube)
2. GNU Autotools-s build rendszer, hogy ez meg nem tunt el 2024-ben. Van egy rakat, ami sokkal ertelmesebb.
3. A conclusion, miert kell systemd-nek mindentol is fuggnie. Illetve, hogy hany hasonlo project lehet. Osszelegozunk mindenfele projectet aztan gyurunk egy valamit belole.
4. Andres Freund : Long time postgres developer, working at Microsoft. Ilyenkor nem szamit....
Van, akinek számít.
https://pcforum.hu/hirek/27488/linux-xz-hatso-kapu-backdoor-veszelyes-b…
"Normális ember már nem kommentel sehol." (c) Poli
"redmondi szakember" ... Köpni ér?
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
Szerintem nem volt annyira arrogans a kommented, hogy kopni kelljen.
Andres Freund tényleg a Microsoft-nál dolgozik, bár lehet hogy nem Redmond-ban. A szakmai munkásságát nem ismerem, először találkoztam a nevével.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Ebben az esetben nem ér. A sors iróniája, hogy MS-os vette észre a backdoort, nyugodtan eltitkolhatta volna, hogy a MS-os rendszerek tűnjenek biztonságosabbnak, de nem tette, szólt becsületesen, egy későbbi nagy támadássorozatot segített kivédeni, járna neki valami jutalom.
Én egyébként ezt régóta írom, hogy a MS önszántából szemét cég. Nem az, hogy ott nem lennének jó szakemberek, tehetséges programozók, mert vannak, pl. ez a csóka, vagy Russinovich, stb., csak nem hagyják őket rendesen érvényesülni, hanem bullshit céges stratégia mentén kell nekik kódolni, és így nem tud érvényre jutni a szakmai tudásuk. Ez így meg pocsékolás, hogy ott a szakember, tudna jobb szoftvert írni, csak nem engedik neki.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Hány olyan céget mutassak neked (multi, kkv, hazai, külföldi), ahol nem érvényesül a szakmai nívó?
Sajnos manapság egyre kevésbé divat / van lehetőség a szakmai profizmusra. Felhígult a világ. A pénz, a profit, a részvényesek, a tulajdonosok 10. új háza / BMW-je sokkal fontosabbak lettek.
Egyelőre csak annyit értek, hogy a "gyári" sshd mindenféle furcsaságra dependál, mint pl.: liblber-2, libldad, libnss3, libsystemd, libsasl2, libselinux, libwrap
Nem kell értened, csak annyit, hogy Poettering mester tudja és eldöntötte helyetted, hogy neked mi lesz a jó. Ő jobban tudja, megvéd majd saját magadtól. Az, hogy egy-két durva sechole becsúszik, az nem érdekes.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Azért van itt egy mélyebben lévő probléma: az sshd dependál egy ilyen szimbóleumra:
Hogy azután ez futáskor honnan fog feloldódni, azt a jósors és midikloriánok áramlása dönti el.
Ha ez AIX lenne, akkor ilyesmiket lehetne látni:
Vagyis linkeléskor rögzíthetem, hogy milyen fájlból jöjjön a kérdéses szimbóleum.
Persze ez sem fenékig habostorta, például az Openssl régi verziói a -bexpall opcióval készültek, ami azt eredményezte, hogy például a 'memcmp'-t is exportálta a derék termék.
Persze. Ezért írom én régtől fogva, hogy nem a systemd-vel van a baj önmagában, hanem azokkal a fejlesztőkkel meg disztrókkal, akik mindent rá dependelnek, ha kell, ha nem, ész nélkül, ők teszik kiválthatatlanná.
Ha tényleg csak egy initrendszer lenne, nem lenne mindennek függősége, simán modulárisan le lehetne cserélni egy másik initrendszerre, nem zavarna senkit. De nem lehet, a sok barom függőség miatt. Persze, másik initrendszert fel lehet így is tenni, működik, csak ugye akkor a rendszeren ott kell legyen a függőségek miatt pár extra systemd-s implementáció, elogind, stb., így meg csak áltatják magukat azok, akik más initrendszert használnak, hogy kikerülték. Nem kerülték ki, egyes részei továbbra is ott futnak a háttérben, így meg adtak a kakának egy pofont. Ez volt mindig is a baj a systemd körül. Nekem az nem fájna, hogy valakinek tetszik, használja, meg vannak disztrók, amik erre építenek, hanem hogy aki ezt nem akarja, arra is rá van tolva mindenhol.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Továbbá itt van az `ifunc` nevű jóság. Tipikus 'Bobóizmus', ha engem kérdeznek: semmivel sem kompatibilis egyéni lelemény, ami több problémát okoz, mint amennyit megold (de mégvalószínűbb, hogy olyan megoldás, amihez még nincs meg a probléma).
https://sourceware.org/glibc/wiki/GNU_IFUNC
Az ifunc a szegény ember OOP-je.
(Azért C-ben a funktort valahogy le lehet programozni megkönnyítőprogram nélkül is, méghozzá úgy, hogy minden fordítóval működjön, gcc-only megkönnyítés nélkül. Off: pl az OpenSSL úgy ellenőrzi futásidőben az AltiVec meglétét, hogy az elején egyszer meghívja az optimalizált Assembly rutint, és nézi, hogy jön-e a SIGILL. Ha igen, akkor felírja a legjobb változójába, hogy ezentúl a sima nem-optimalizált C-rutint kell hívni.)
https://news.ycombinator.com/item?id=39895344
https://jfrog.com/blog/xz-backdoor-attack-cve-2024-3094-all-you-need-to…
https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
a gist elso hozzaszolasa kb. halal a keresztenyekre.
Nem semmi mentalis gimnasztika.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Szerkesztik a hozzászólásokat? Mert nagyon nem ilyen tartalmat látok első kommentként.
Nekem ez volt az elso. De mostmar mas az elso, es van elotte egy "load earlier comments" gomb, amit eddig eszre se vettem.
Lehet szerencsetlenul jott ki csak.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
Ebben a kommentben mondjuk sehol nem látom azt, hogy halál a keresztényekre, szerintem eléggé félreértetted.
Húsvétkor életre kelt a wazuh :) látszik, hogy a hitetlenek nem ünneplik, amúgy ezt a küldj x bitcoint y címre mert kirakjuk ahogy kivered szerintem már sehol nem működik, egyedül az abuse kukacra esett be mert nincs szűrés. (Imádom amikor onnan esnek vissza az extra igények, hogy csak a header mert amúgy nem nyitják meg Mailgun, vagy az abuse kukac visszabassza , hogy nem vesszük át mert spam ;))
114gujDoFd25T6Sn1bQGYBWDE5sH8sdEiD
Egy cent nincs a walletbe (+200 ip permaban :)) akkor minek erőltetni?
jol atverik azokat, akik ilyen videoval akarnak hiresek lenni.
neked aztan fura humorod van...
Mindeközben az OpenBSD-ben kiváló időzítéssel... :)
https://marc.info/?l=openbsd-cvs&m=171200100510963&w=2
>>kiváló időzítéssel... :)
04-01 :)
Áprilisi tréfa (bár viccnek azért kicsit durva :)
https://www.phoronix.com/news/Fwupd-Switches-To-Zstd
neked aztan fura humorod van...
https://joeyh.name/blog/entry/reflections_on_distrusting_xz/
Kezünket a szívünkre téve, mi a megoldás?
Én kettőben gondolkodom:
- swap to dropbear
- 2FA openssh-server-hez
Egyéb ötlet?
Esetleg lehet egy szavazás is belőle.
A debian testingből nehezen engedek, mert nem akarok point releasekkel / upgrade-kkel senyvedni.
minden kimenő kapcsolatot tiltani :)
Sting azt írta, hogy az rdp sokkal szofisztikáltabb protocol mert átmegy rajta a kép, ajánlom. ;)
Az ssh-n is átmegy: ssh -CX
De tudom, miért írtad, Sting, akinek minden sz.r, ami Linux, és minden jó, ami Windows.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
(Nem megoldás, de ha kitennék a selinuxot meg a systemd-t, az legalább hangulatjavító intézkedésnek jó lenne.)
Debianban nem apparmor van?
Mindkettőhöz tanulni kell, igen... És az Apparmor-hoz is. Bár gondom, neked bőven elég az {u, g, o}x{r, w, x} a fájlrendszerben...
Ez kissé ilyen:
General Melchett : That's right. And Field Marshall Haig is worried that this may be depressing the men a tadge. So, he's looking to find a way to cheer them up.
Captain Blackadder : Well, his resignation and suicide would seem the obvious suggestion.
Hát, ha supply chain attacktól tartasz, és szeretnél kockázatot csökkenteni, akkor minél kevesebb 3rd partyt kell a képben hagyni:
A 2FA nem tudom, mennyiben segít: ha szar kerül az ssh kódba, azt is le tudja szarni. Hacsak nem arra gondolsz, hogy plusz, független autentikációt illesztesz a belépési folyamatba.
Írtam is, hogy Debian testing az maradjon, ha lehet. És igazad van: ha komolyan vesszük a dolgot, akkor a Debian testing úgy általában nagyon mélyre került ezzel az incidenssel. (Sovány vigasz, hogy a RedHat se jobb.) 😭😭😭 Mert különben annyival jobb (nekem) mint bármi más. De most komolyan... nekiállni vanilla openssh-server-t hegeszteni az egészhez...
A 2FA-val arra gondoltam, igen, hogy extra PAM modul, de asszem (nem vagyok valami nagy expert), ha key auth van, akkor az egész PAM kiesik, öszvér (key auth + PAM based 2FA) meg nem tudom, hogy lehetne. Jelszót beírogatni azon a 10+ ilyen-olyan / itt-ott adminisztrált gépen szintúgy nincs nagy kedvem.
Sajnos komolyan. Nem sok köze van ennek a distrohoz. Ez a konkrét támadási fajta ezt úgy hívják, hogy supply chain attack*, és gyakorlatilag arról szól, hogy valahol a szoftver forrásból a gépeden futó binárisig van egy hosszú technikai folyamat, ami bele tudhat nyúlni abba a binárisba, és tulajdonképpen még bizalmat szavazol egy csomó más mindenkinek is a szoftver konkrét forrásán kívül: Az ilyen olyan source hosting providernek, az ilyen olyan fordítónak írójának, a distro csomagolójának, a distro infrastrukútájának, stb stb. És ugyanez tulajdonképpen ugyanúgy az összes külső függőségre, amit a program hoz, mint dependenciát (valahol a folyamat közben), Ezt a kockázatot generikusan úgy lehet csökenteni, ha ezeket minél jobban kihagyod. Persze ez kurva nagy munka, és egyáltalán nem biztos, hogy a végeredmény összességében jobb lesz (ti: a social engineering ellen jobb eséllyel védekezel saját magad, cserébe a saját infra műszaki biztonsága már egyáltalán nem biztos.
Ez van, mind a sw mind a distro alapvetően egy bizalmi kérdés ebből a szempontból. Azt érdemes figyelni, hogy mit reagálnak a distrok erre, hogyan próbálják az általuk karbantartott láncot ebből a szempontból megbízhatóbbá tenni.
Mert nyilván nem fog az ember saját distrót gyártani magának, irreális. A kifejezetten kockázatosnak ítélt komponensekből esetleg lehet értelme, illetve ebben az egész konkrét esetben van értelme azt csinálni, hogy valami külön layert teszel, tehát pl az ssh csak vpnben megy, vagy legalábbis van valami előtét azonosítás, így kisebb eséllyel lesz kihasználható nálad egy darab luk, de ehhez kell a külön műszaki megoldás, ez ellen a konkrét támadás ellen az ssh auth folyamatának finomhangolása nem segít.
* ráadásul ez kisse határeset is, supply chain, suppy chain, de valójában eleve nem megbízható kód került egy szállított szoftver forrásába is, az, hogy itt a kiscsóka úgy fest, meg social engineeringelte a projektet, de valójában simán kelhetett volna fel ballábbal a szoftver írója is (lásd mindenféle we support ukraine patcheket az utóbbi pár évben random helyeken, simán lehet, hogy valaki nem zászlót rajzol a konzolra, hanem belecsempész egy backdoort, és odaadja support gyanánt az ukránoknak), szóval at the end of the day, ez egy trust issue.
sshd_config publickey+pam:
"a RedHat se jobb"
Nekem az jött le, hogy a Redhat egészen közel járt hozzá, hogy észrevegye. Talán a valgrind scan jelzett be náluk. A jóhiszeműség volt a vesztük, mert először pont a fejlesztőt (Jia Tan-t) értesítették, aki pedánsan vett fel rá bug ticketet, megköszönte a Redhat-nek és "javította".
Régóta vágyok én, az androidok mezonkincsére már!
ahol lehet ott ki se engedjuk az ssh-t a netre (csak fix ip-rol vagy vpn-en elerheto), ahol muszaj ott at lehet rakni non-default portra (es mondjuk nem 2222-re), lehetoleg olyanra ami nmap default scan portlistben sincs benne (by default csak 1000 portot nez, meg lehet tuzfalon is szurni a portscant ratelimittel). persze celzott tamadas ellen ez xart sem er, de legalabb a netet scannelo malwareket megallitja.
a dropbear amugy jo otlet, pont tegnap neztem at mi a kinalat ssh server implementaciokbol, hat nem sok van, es ami van meg ezeken kivul az meg rosszabb security szempontbol. dropbear elonye hogy le lehet eleg minimalra forditani, hogy semmin se dependeljen, meg a zlib is kihagyhato belole, es sajat ssl implementacioja van (nem opensslt hasznal). 200+ fejlesztoje van githubon, talan jobban ervenyesul a manyeyeballs is. hatranya hogy az openssh utan a 2. legelterjedtebb cucc (foleg embedded/iot/soho eszkozokben), igy jobb celpont a hackereknek.
Igen, az Interneten figyelő ssh szervereknél a high-port amúgy is alap. Még az jutott eszembe, hogy innentől az Internetről elérhető ssh-nak en-bloc vége, és egy Zerotier vagy valami még lightos VPN még lesz előtte.
És a dropbear-nél nekem is ez volt az ellenérv: ha valaki embedded eszközre akar malware-t csinálni akkor a dropbear nagyon is jó célpont. De ezzel a logikával az openssh még jobb célpont :) Szóval itt személyes diverzifikáció (szegény ember vízzel főz) lesz a megoldás: ha új gépet húzok arra dropbear kerül alapból. Ami van, az meg szép lassan átkerül -- vagy nem. Ha valami beüt, legalább nem minden lesz érintett.
meg ez is eleg fura, belepek 'arpi' userrel es root-kent fut az sshd child processz is:
root 124630 1 0 Apr02 ? 00:02:03 dropbear -R
root 154619 124630 0 18:43 ? 00:00:00 dropbear -R
arpi 154620 154619 0 18:43 pts/7 00:00:00 -bash
arpi 154628 154620 0 18:43 pts/7 00:00:00 ps -ef
ezzel szemben az openssh:
root 2227 1 0 2023 ? 00:10:51 /usr/sbin/sshd
root 7547 2227 0 20:46 ? 00:00:00 sshd: arpi [priv]
arpi 7549 7547 0 20:46 ? 00:00:00 sshd: arpi@pts/0
arpi 7550 7549 0 20:46 pts/0 00:00:00 -bash
arpi 7569 7550 0 20:46 pts/0 00:00:00 ps -ef
bar itt igazabol 2 sshd is forkolodik egymasbol, egyik root masik arpi userrel?
https://github.com/openssh/openssh-portable/blob/master/README.privsep
Egyébként két napja commitolták, hogy ne kelljen a libsystemd -t linkelni (és azzal berántani a liblzma-t ) a notify támogatáshoz.
https://github.com/openssh/openssh-portable/commit/08f579231cd38a1c657a…
Eleve elcseszett ötlet volt a systemd részéről, hogy linkelni kell a libsystemd-t a támogatott daemonokba. Érdekes, a SysV de még az agyonbonyolított solarisos svc is képes megoldani enélkül.
Na de a lényeg, hogy valóban, tökéletesen igazad van, ez a tényleges fix. Ki kell hajítani a felesleges függőségeket, és durván fogyókúrára fogni a supply-chaint, hogy csökkenjen a támadható felület.
az megvan hogy mit csinal a libsystemd?
persze majd implementalja le mindenki sajat maga (AS szabvany szerint) azokat a kodokat amivel beszelget a systemd-vel...
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
> az megvan hogy mit csinal a libsystemd?
nincs
> a kodokat amivel beszelget a systemd-vel...
de mi a halalnak kell beszelgetni vele? 100 evig jo volt erre a signal kuldes/fogadas unix rendszereken. SIGTERM, SIGHUP stb.
mert a systemd initnek igy mar nem csak _egy_ signalt lehet kuldeni, hanem joval tobb infot. nyilvan egy signal is jo megoldas, ahogy elodeinknek is eleg volt a kobalta!
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Arpi_esp-nek teljesen igaza van, mi a halálnak kell kommunikálni oda-vissza? Bőven elég annyi, amit a signal nyújt, ráadásul ezeket a parancsokat a systemd küldi a service-nak, és nem pedig fordítva a service a systemd-nek! A visszafele iránynak semmi értelme. (Az meg már csak hab a tortán, hogyha nem standard módon ellenőrzi a service állapotát, hanem elhiszi, amit az magáról állít, akkor könnyedén inkonzisztencia alakulhat ki. Pl. mi van akkor, ha egy service elküldi a "rendben elindultam" jelzést, majd bedobja a törülközőt. A systemd ilyenkor képtelen újraindítani a service-t, mert a legutóbbi üzenet miatt azt hiszi, minden okés. Konkrétan szoptam már ezzel.)
Hullára felesleges a libsystemd, csak arra jó, hogy mivel szarul van megírva, támadási felületet adjon, másra nem. Egy szolgáltatásnak tök felesleges bármilyen infót is küldeni az init-nek, bőven megfelel a célnak egy pid fájl is. Abból már lehet tudni, hogy elindult-e sikeresen, és ha igen, akkor kinek kell a signalokat küldeni (ami mégegyszer, init-service irány, és NEM service-init irány). Másra nincs szükség.
Egyébként szvsz a legundorítóbb dolog a journalctl, egy fos az egész, olvashatatlan a kimenete, képtelenség kihámozni az üzeneteiből, hogy mi a fasz történt, ráadásul tök felesleges redundancia, mert pont erre való a syslog. Ha egy init környezet nagyon akarná tudni, mi a fene folyik egy service-on belül, akkor arra ott az RFC5424, ami rendesen ki lett találva, jól strukturált üzenetekkel (a protokoll sokkal több, mint amit a logokban látsz!).
Ha a jóval több infó a cél, simán nézhetné azt, nem kell ehhez újra feltalálni a spanyolviaszt, csak sokkal szarabbul, ahogy a systemd tette. (Ja, és a syslog küldéshez még plusz lib sem kell, POSIX szabvány, tehát nincs plusz supply-chain attack felület, nincs extra függőség, az OpenSSH egyébként is használja, és mivel egyirányú csak-küldés kommunikáció, azon keresztül egész biztos nem lehet backdoor-t telepíteni, hacsak nem magát a libc-t támadják, ami egy ici-picit macerásabb, mint egy 3rd party libet támadni.)
Továbbra is fenntartom, hogy a tényleges probléma itt az, hogy a systemd egy hulladék, pocsékul megtervezett bloated fos. Nekem soha semmi bajom nem volt a SysV init-tel, mindig tette szépen a dolgát, tök felesleges volt lecserélni csak mert. Én eddig még semmi előnyét nem tapasztaltam meg a systemd-nek, csak a problémáiba futottam bele a hétköznapi használat során.
Szerintem az elindulás tényét jelezni annyiból van értelme, hogy amikor a szolgáltatásra épülő további szolgáltatást indítjuk, akkor garantált, hogy már válaszol is. Például egy webszerver nem akkor van elindulva, amikor a processz már létezik, hanem amikor nyitva van a port és rendes válaszokat kap minden http kérés.
Nem mondom, hogy nagyon fontos, de el lehet kerülni vele, hogy a szolgáltatást pollozni kelljen a felhasználónak CPU terheléssel, vagy timeouttal. Ettől lesz zökkenőmentes és gyors a boot komplexebb esetekben is, hogy eseményvezérelten minden azonnal indul amikor lehet, és biztosan elsőre tud csatlakozni amihez akar.
nemcsak annyi signalt lehet kuldeni service -> systemd iranyban hogy "kesz vagyok". van egy csomo masik ami jol johet egy komplexebb rendszernel: "elindultam, de meg nem vagyok kesz", "reloadoltam a sajat configot, valami megvaltozott, lehet kell egyket masik process ujrainditasa", "le akarok allni, allitsd le elotte ami szukseges!", stbstb.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Nem, nem jöhet jól egyik sem. A service-t indítónak nem kell tudnia ezekről, nem is dolga, hogy nyilvántartsa ezeket. Sőt, a UNIX filozófia és bármilyen biztonsági előírás megköveteli, hogy nem is szabad tudnia ezekről. Az init-nek csak annyit kell tudnia, hogy rendben elindult-e (azaz képes-e már kéréseket fogadni) a service. Ehhez pedig bőven elég a pid fájl, és ahogy arpi_esp is mondta, ezt akkor kell létrehozni, amikor már minden okés.
Ez az állapot kit érdekel? Nem mintha bárki bármit is tehetne, ha ebben az állapotban ragad egy szolgáltatás, hisz ez teljesen a szolgáltatás belügye. Ha adott időn belül nem képes kéréseket fogadni, akkor az a szolgáltatás beszart, hullára tök mindegy, hogy mi a pontos státusza, az senkit nem érdekel, csak az, hogy nem képes kéréseket fogadni.
Az több, mint elég, ha syslog-ba elpanaszolja a szolgáltatás, hogy mi a nyűgje-baja, az init-nek tök felesleges tudnia az okot.
Megint, ez a szolgáltatás belügye, az init-nek semmi köze hozzá, hogy mely processzek használják, így nem is tudhat róla, nem is kell tudnia róla, sőt, nem is szabad tudnia róla, hogy az az "egykét másik processz" pontosan melyikek is. De még ha tudná is, hogy kellene újraindítania őket? Nem lát bele a szolgáltatás és a processzek kommunikációjába, nem is tudja, mi ott a "kacsolat vége" parancs, azt beinjektálni a kommunikációba végképp képtelen (vagy ha mégis képes, az nagyon nagy baj).
Ez dettó hülyeség, nehogy már a nyúl vigye a vadász puskát! Annak eldöntése, hogy melyik szolgáltatás melyiktől függ, az init dolga, és nem a szolgáltatásé. Mi van akkor, ha egy szolgáltatás tudtán kívül függősége egy másiknak, és nem küldi ezt az üzenetet? Akkor elhasalhat az egész rendszer, mert jólvanazúgy'?
Egy valamirevaló rendszerben a felügyelőnek kell a szolgáltatásokat felügyelnie, és nem pedig a szolgáltatások üzeneteit elhinni bemondásra. Ez a fajta üzenetküldés alapvető koncepcionális tervezési hiba. És ráadásul mint az xz/OpenSSH esetében kiderült, még szarul is van megírva, mert lehetőséget adott a libsystemd-n keresztül backdoor nyitásra!
Magyarán nemcsak elméletben eleve hülyeség, de még a kivitelezése is szar, azaz vissza a kályhához, a valódi ludas a történetben a systemd, és nem is az xz.
jo hat a sysvinit vilagban eleg volt start-stop-daemon /usr/sbin/foo, azt csa'. aztan pl lehetett hozza monit/supervisord/akarmi takolni hogy restartolja ha lerohadt. ma mar elhagytuk a kobaltat, masok az igenyek.
pl a ra epulo szolgaltatasokat. persze a sysvinitben is bele volt hakkolva a Required-Start/Should-Start/stb-vel ez. de hat megint a kobalta...
pl ha umountolni akarod (systemdvel lehet) a /srv/bitcoin-data dir, akkor elotte nemart ha pl a bitcoin daemont lelovi az init. ha meg a bitcoinra epul az lnd, akkor elotte azt is le kell leoni. na ezert vannak a csoda foo.service fajlok, es ebbol tudja hogy milyen sorrendben kell leloni a progikat.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
> lehetett hozza monit/supervisord/akarmi takolni hogy restartolja ha lerohadt.
most is lehet, kell, systemd mellett is... pl smsd rendszeresen beakad ubuntun (18-20-22 alatt is), kell neki egy restart. a systemd nem csinalja meg. kellett irni ra egy scriptet ami nezi a syslogot es ha egy ideje nem irt bele statuszt akkor restartolja. php-fpm is be szokott halni, azt is meg kellett takolni hogy restartolodjon, systemd szarik raja.
> ma mar elhagytuk a kobaltat
el. pedig azzal ha odacsaptal, akkor tortent valami. most meg lehet noszogatni a systemdt az meg csak kotoszkodik, hogy kene daemon-reload mert ugyan latja hogy atirtam a service filet de nehogyma' magatol frissuljon a cache, stb. meg amig nem kap dhcp-n ip cimet az egyik interface, addig 5 percig blokkolja a boot folyamatot, pedig nyugodtan elindulhatna legalabb az sshd, hogy a masik interfacen belephessek... vagy hogy nem engedi a mysql-t irni a /home/ konyvtaraba. fel napig nyomoztam wtf van, apparmor kikapcs, mysql parameter amikorlatozna off, azt megis permission denied. hat a systemd ugy gondolta ebbe neki is van beleszolasa... ezert tenyleg qrvara megerte elhagyni a kobaltat.
jo hat ha szar a program azzal nemtud mit kezdeni a systemd se (illetve neha de: pont a sokat szidott notify amivel tudja az app jelezni "hello, megvagyok!", es ha nincs akkor kap egy restartot), de akar meg egy curl healtcheck servicet is lehet hozza rakni, ha olyan az app.
viszont olyan sysvinit alatt nemvolt, hogy az apache vagy php (opcache integet :D) elszall sigservvel, akkor induljon ujra. olyan meg vegkepp nem hogy A dependal B-re, es B restartkor kapjon A is egy restartot.
hat latod, ezt pont tudja: systemd-networkd-wait-online@eth1.service (ha meg nem lenne ilyened, mert regi systemd, akkor systemctl edit systemd-networkd-wait-online.service es ExecStart overridebe: /lib/systemd/systemd-networkd-wait-online --any)
MAGIC!!! de en sem vagyok guru hozza, csak ha valami nemmegy, akkor nem kialltok fel "ezszar!!44", hanem keresek megoldas, es legtobbszor kijon hogy "jah en voltam hulye"... \o/
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
> viszont olyan sysvinit alatt nemvolt, hogy az apache vagy php (opcache integet :D) elszall sigservvel, akkor induljon ujra.
man inittab, /respawn
Szóval azért ne vicceljünk már. Kb 1980 óta tudja. És elég sok sysvinit megvalósításban volt rendes dependenciakezelés is.
A systemd sokak számára nagy hibája, hogy teljesen ellene megy a KISS elvnek. Hisz eleve nem init helyettesítő, de minimum init, meg inetd, meg syslogd, meg minintpd, meg ...... A másik nagy hibája az arrogáns főfejlesztő arca. A harmadik nyilván az, hogy a sok beépített funkció miatt nem egyetlen szoftvernek kell megtanulni a teljesen új szintaxisát, hanem a rendszergazda 158 pengéjű svájcibicskájából lassan 140-nek. És nem segít az, hogy látszólag egységes az a megtanulandó szintaxis.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
regen ez ugy mukodott, hogy akkor jott letre a .pid file amikor elindult. ha x idon belul nem jelent meg akkor tudta az init rendszer hogy baj van.
meg amugy egy ssh-n mi dependel? mert ez a libsystemd-s bvaromsag amugy opcionalis, a service fileban lehet jelezni ha nincs es ugy is mukodik, akkor a regi modszerrel figyeli. pl. php-fpm 5.3 meg nem tudott systemd notifyt es azt is meg lehetett oldani igy.
Pl bármi automatikusan kihúzott tunel?
Ez a régi szép időkben úgy működött, hogy induláskor a daemon megnyitott mindent, amire szüksége volt, és a végén, amikor már minden inicializálva volt, és még a socket-et is megnyitotta, fork()-olt egyet. A child process írt egy pidfile-t és várta szeretettel a kéréseket, a szülő process meg visszatért OK-val. Az init rendszer innen tudta, hogy a daemon sikeresen elindult, indíthatja a következő (esetleg erre a daemon-ra épülő) szolgáltatást.
For a certain definition of működött. Egyrészt ha a daemon olyan volt, és ha úgy implementálták le, és ha nem felejtették el ezt meg azt. Úgy, hogy bele kell venni egy mindenféle race conditionos cseszekedést, meg törődni kell a párhuzamos dologkkal, meg annak a kezelésével, hogy egy bazmeg után most akkor mi is van abban a pidfileban, érvényes-e még, és kinek kell feltakarítani. (És amit természetesen bele kell implementálni minden egyes daemonba, nyilván egy csomószor valami külső pid file kezelő libbel, mert mint mondtam, nem triviális teljesen a krédés, az nem baj, ha a systemd miatt kell behúzni valamit, az meg igen)
És akkor még ott van ennek a tetejére a double forkos tangó, ha megnézed, ez az egész valójában egy egész bonyi dolog, a systemdnek abban teljesen igaza van (szerintem, meg egyébként láthatólag nagyjából minden service manager szerint is), hogy sokkal normálisabb design, ha forground futnak a szolgáltatások, a felügyelő meg majd csinál a futó gyerekeivel, amit akar, és direktben tudja, hogy az ki. És egyáltalán nem ördögtől való gondolat, hogy legyen valami csatorna, amin lehet értelmesen állapotot kommunikálni, meg még az sem, hogy ehhez adnak libet. (Fun fact, lehetne ezt egyébként tulajdonképpen a signalokkal is, mert lehet azokra is metadatát tenni, csak erről nem szokás tudni, meg azért valahol el tudom képzelni, hogy okkal nem akarnak feltétlen kernel interfacet használni erre).
A probléma inkább az, és ez tényleg az, hogy na ehhez a libsystemdbe minek kell a xz mint dependencia. Vagy valójában kellene egy libnotify kivágva, vagy kissé túl van tolva, sose néztem ennyire közelről, nem tudom melyik.
Úgy tudom egyébként, hogy a leállításnál viszont maradt a signal-lal jelzés. Ebben az a fincsi, hogy Javában nem is triviális összerakni, hogy tudjon signalra reagálni, ha olyan szolgáltatást akarsz csinálni, ami normálisan áll le, nem csak lelövi a processzt.
Van ExecStop, azzal tudsz hívni valami helpert, ami triggereli a leállítást egy neked tetsző csatornán. Ha van, akkor megvárja, míg lefut, aztán a maradékot fogja eltakarítani signalokkal. Illetve van kontrollod afelett is, hogy milyen signalok mennek ki. De ja, most megnéztem, magában a libsystemdben úgy látom nincs systemd->service irányú kommunikáció.
Egyébként javaban probléma kezelni egy SIGTERMet? Ezen azért meglepődöm, mert láttam már pár javas szolgáltatást életemben, és eddig ez nem jött szembe.
"Egyébként javaban probléma kezelni egy SIGTERMet? " - Hááát... Ha egy mondjuk Tomcat kap egy ilyet, és rendesen, normálisan leáll, akkor olyan szép nem nulla (143?) exitcode-ot kapsz, hogy csak úgy pislogsz... Szóval lehet, hogy a szignálok kezelése "megy", de a vége azért elég ronda tud lenni...
Erre mondjuk a ronda bloat systemdben pont van
SuccessExitStatus :)
Igen, és vajon miért van ilyen lehetőség, hogy megmondhasd a systemd-nek, hogy milyen exit code a "jó"...?
a balfasz programok miatt, akik csak leallnak egy random exitkoddal, ahelyett hogy valami notifyval szolna "hello, lealltam, ez es az van, de amugy minden oke!".... \o/
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Mert vannak programok, amik a nullán kívül más exit coddeal is jelezhetnek olyan állapotot, ami jó? Az, hogy a tomcat ilyenkor valami furcsával jön vissza, az egy dolog, lehet egy csomó más valid eset is, amikor van az exit codenak valami a service felügyelő számára hasznos jelentése?
Nem értem, mire fel a butthurt...
Azért bámmeg, mert a sikeres kilépést azt per definitem nullás exit code jelenti - illetve jelentette addig, amíg elsősorban ilyen appszerveres motyók fel nem rúgták ezt a "szabály"-t - ami egyébként a faék egyszerű init/service felügyelet miatt (is) alakult ki.
Nem, nem jól érted. A 0-s exit code mindig sikeres kilépést jelent, de nem minden sikeres kilépés jelent 0-s exit code-ot - a sikerességnek többféle lehetséges esete lehet. Amikor persze kitalálták azt, hogy 0 = siker, nemnulla = hiba, akkor még nem gondoltak a fejlesztők sok lehetséges esetre.
Például a SIGTERM-re történő sikeres leállás egy daemon jellegű szoftvernél teljesen valid (külső kérésre leállt, nem valamilyen belső logika miatt fejezte be a futást) - és a signal n-re a 128+n-es exit status-t azt a bash például használja, ezért is implementálták is az appservereket.
A SIGHUP-ra történő leállás is jelenthet sikert egy interaktív terminálos alkalmazás esetén - a program leáll, mert a felhasználó terminálja bontotta a kapcsolatot (és nem azért, mert a felhasználó lépett kil, vagy a program a logikája szerint végzett).
"Amikor persze kitalálták azt, hogy 0 = siker, nemnulla = hiba, akkor még nem gondoltak a fejlesztők sok lehetséges esetre." - Ennyi. A normál, problémamentes leállás az nulla értéket ad vissza, minden más esetben a visszatérési érték további információt hordoz a leállás okáról, eredményéről. Az, hogy valami de facto nem tud nullás retval-t adni semmilyen esetben, mert "csak", az ennek az elvnek a semmibe vétele.
A sighup -ra történt program megszakítás általában nem normál exit (kivéve a tty vonalat kezelő motyó esetén), hiszen a futás közben bármikor, bármilyen állapotban bekövetkezhet.
Ettől még a plusz információt hordozó leállás is lehet normális programbefejezés - csak éppen többet akar a program annál mondani, hogy végeztem (mert mondjuk meg akarja mondani, hogy miért végeztem).
Az, hogy csak a 0 = siker, az nagy butaság volt a tervezők részéről anno, egész egyszerűen a 70-es évek elején nem gondoltak bele abba, hogy mi lesz 2000-ben. 1970-ben kitalált koncepciókkal meg nem lehet lefedni minden use case-t, amire szükség van, teljesen felesleges ezeket a koncepciókat erőltetni, a mai use case-re kell megoldást nyújtani.
"csak a 0 = siker, az nagy butaság volt a tervezők részéről anno" - szerinted. Mivel erre (is) épül a "foo && bar" vagy épp a "foo || bar" kiértékelése, meg sok egyéb dolog is, a sok értékű "sikeres kilépés" ezekkel is szembe megy.
A mai use-case -eket is le lehet fedni ezzel, ha azt elfogadjuk, hogy csak akkor adjon vissza az alkalmazás "extra" infót a futásról az exitvalue-ban, ha erre kifejezetten megkérték, egyébként meg ne. Az, hogy per definiten nem is tud exit 0 -lal befejeződni a futás, az viszont gáz. Persze, a Java-s gányolások elkövetői úgy vélik, ők fújják a passzátszelet, de a világ nem csak ezekből a lomokból áll... Szerencsére.
en azert azzal is elbeszelgetnek, aki egy jvm processzt nativan rak bele "foo && bar" bash kiertekelesbe :) ha mar itt tartunk
Én szoktam szűrőként működő Java programokat írni alkalomadtán, még olyan is van, aminek a visszatérési értéke jelzés a szkript számára, hogy okés volt-e a futás.
Ezt ügye most csak viccből írtad, vagy trollkodsz? Lehet egyáltalán egy Java programnak (értsd: nem magának a Java környezetnek) visszatérési értéke? Meg shellben, scriptben miért szűrnél Javával, mikor arra megvannak a kulturált, natív eszközök, amik sokkal takarékosabbak. Mindegy, tőlem azt használsz, amit akarsz, de ezt így érvként kár volt bedobni.
Az persze való igaz, hogy nyelvtől függetlenül sok natív megoldás se követi rendesen a visszatérési értékre, hibakezelésre vonatkozó szokásokat. Nem is egy tool van, ami pl. találatok számát, vagy valami bemenettel kapcsolatos adatot ad vissza a visszatérési értékben, nem 0-át. Mert a költő azt hitte, hogy ez egy jó reformer ötlet, modern megközelítés, most jól feltalálta a spanyolviaszt, meg különben is azt csinál, amit akar.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Meg mernék esküdni tá, hogy komolyan mondja. Ugyanis:
- amikor egy AWK program exit 2 -t mond,
- amikor egy Python kódban sys.exit( 3 ) szerepel,
- vagy amikor egy - általad emlegetett - shell scriptben exit 5 áll,
az mind ugyanaz: az alkalmazás beállít egy "státuszkódot" (vagy exit-kódot), és megkéri a futtatókörnyezetet, hogy az éppen futó OS-nek megfelelő módon ezt közölje a külvilággal. Az első esetben az AWK-interpreter, a másodikban a Python-értelmező, a harmadik esetben pedig a shell *futattókörnyezet* (amúgy szintén interpreter) kapja meg ezt a két információt: be kéne fejezni a futást, és át kéne adni ezt az értéket úgy, ahogy itt szokásban van. És tudja, mit csináljon.
Akkor ehhez képest amikor a JVM-ben futó program csinálja tök ugyanezt, az miért lenne más, vagy épp miért ne lenne normális dolog?
Ráadásul attól, hogy *X világban van egymillió "kulturált, natív eszköz" (ahogy te írod), attól nem biztos, hogy az pontosan azt csinálja, vagy akár csak tud róla az egyszeri programozó felhasználó.
(Pl: Linux alatt valamiért elterjedt a seq parancs. Ilyen parancs FreeBSD-ben eléggé sokáig nem volt. Hanem volt helyette jot, ami kicsit több mindent tud. A helyett, hogy egymillió linuxos módon megírt shell-scriptet átírtam volna, inkább írtam magamnak egy seq nevű shell-scriptet, ami a legtöbször használt seq hívást implementélta pár shell-eszközzel meg a jot paranccsal. Aztán amikor a FreeBSD-sek implementálták, akkor nyugdíjaztam a scriptet.)
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
System.exit(int) doksija a java 1.0.2-ből
Teljesen jól lehet szűrőket csinálni Javában. Valódi érvet nem tudsz mondani, hogy miért ne lehetne. Csak van valami becsípődésed a Java ellen, ezt tudjuk.
A RAM használat csak akkor számítana, ha sok példányt kellene futtatni egyszerre. De akkor átírod szerver megvalósításra ugyanazt ami addig parancssori volt, hogy csak egyszer legyen betöltve a programod. Ugyanez igaz arra az esetre, ha nagyon sokszor kellene elindítani egymás után.
CPU szempontból a Java a szkriptelésre tipikusan használt nyelveket mind kenterbe veri. Indulási időben nem feltétlenül, de ha sok adat van a streamben, akkor egészen biztosan. És mikor számít a teljesítmény? Amikor sok adat van, nem akkor amikor kevés.
A "One Billion Row Challenge"-ről hallottál? Egészen elképesztő teljesítményt ki lehet hozni a Javából. A legtöbb esetben tök felesleges optimalizálgatni, mert épp elég gyors magától is.
+1, teljes baromsag az egesz
Nekem peldaul van egy csomo build pipeline-om, ami tele van mindenfele .NET console app-pal, ami csinal valamit, aztan vagy visszjon 0-val, es akkor megy a kovetkezo job/step, vagy non-0, es akkor megfogja a runner. Ennel kenyelmesebb szerintem a vilagon nincs, persze lehetne irni egy rakas bash scriptet olyasmikre, hogy Azure KeyVaultbol leszedjen egy secretet, meg hasonlok, de en nem hiszem, hogy a core runtime betoltese akkora overhead lenne, hogy emiatt megerne atirni.
Egy teljes build+teszt pipeline futas tobb mint ket ora, mire dev-tol prod-ig elmegy a build, az majdnem egy egesz nap, hat, en oszinten telibeszarom, hogy a 24 orat le lehetne faragni 23 ora 59 perc 55 masodpercre. Mar ha egyaltalan sikerulne ennyit faragni. Megeri! :)
Mert?
Ezt ügye most csak viccből írtad, vagy trollkodsz?
Doksiban benne volt, hogy igy viselkedik? Ha igen, akkor PEBKAC.
Mert a java halott :D
Az egész "ha signal miatt lépünk ki, akkor 128+signal a visszatérési érték" dolgot nem a Javasok találták ki. A Bourne shell kezdte el így, a Bash is így kezeli, meg szinte minden más szoftver ezután. Lásd az Advanced Programming in UNIX Environment könyv exit statussal foglalkozó részét:
Na, ebből a poorly documented feature-ből lett konvenció a nagy UNIX guruk által.
És ha például egy daemont úgy tudsz leállítani, hogy SIGTERM-et küldesz neki (ez is egy nagyon régi Unix konvenció - lásd például a fent említett könyv daemonokkal foglalkozó fejezetét) , és ő erre 143-mal (128+SIGTERM) kilép (hiszen ez a konvenció), akkor az egy normális kilépés, nem 0 exit statussal.
És ezt nem a Javasok találták ki.
És ekkor meg kell mondani a systemd-nek, hogy 143 esetén NE indítsa újra a processzt és NE tekintse ezt hibának. Valószínűleg ugyanitt van megadva az is, hogy ExecStop=mixed és KillSignal=SIGTERM.
Wow, valaki tudja is hogy mit csinál, nem csak StackOverflow-ról kopipészteli a szkripteket! :-)
"És ekkor meg kell mondani a systemd-nek, hogy 143 esetén"... - igen, és ez _jó_. Mert a systemd-nek meg lehet mondani, hogy mit tekintsen "sikeres" futásnak/exit code-nak. Ezt a scripthalmaz init-megoldásoknak vagy egyedileg belereszeled az adott scriptbe, hogy test $? -eq satöbbi, vagy más gányolást csinálsz.
na de most akkor az appserver motyók rúgták fel a szabályt, hogy csak a 0 a sikeres exit status? Hiszen ezt bizonygattad.
És előfordulhat-e, hogy a nem 0 exit status is normál, sikeres kilépést jelent? Azt mondogattad eddig, hogy ez baromság.
Egyébként a 143 az gyanúsan olyan, mint amit a bash is csinál, hogy 128+signal (a sigterm pont 15), szóval könnyen lehet, hogy onnan fúj a szél, nem a java a hülye ;)
Az irány jó... :-P
És amikor a bloatware felügyelő - ami init is egyben - kiakad valamin?
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Akkor nyilván befagy a pokol.
Bocs, de ilyen random dobálózós szarokhoz nincs kedvem, utáld nyugodtan :)
Random?
https://hup.hu/node/149726
Valóban nem szeretem, de nem is utálom.
Látom, hogy te sem ma kezdted, de én sem. Random szardobálásra nincs időm, nyugodtan szeretnék rendszert karbantartani - ebben a systemd sok embert segít, de az én koncepciómba nem illeszkedik.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Értsd jól. Elhiszem, hogy volt ebben a bloat szarban valami bug, amitől megállt, de most erről mit beszélgessek veled? Milyen reakciót vársz rá?
Egyébként imho: ez bizony ritka, nem döglenek fossá szakmányban a systemdk (a linkelt hiba is olyan, hogy üzemszerűen egy üres argumentummal ritkán futtatnál), és az esetek nagy többségében valójában nem lesz érdemi különbség aközött, ha a bloat meghal, és viszi a serviceket meg a pid1-et, meg aközött, hogy ha a bloat meghal, viszi a serviceket, a pid1 meg szépen megmarad semmit nem csinálni. Szolgáltatás ígyse, úgyse lesz. Bizonyos esetekben még jobb is, ha megáll az egész vas a fenébe :)
Nem volt célom erről csacsogni, csak a random szardobálás említése alapján felmerült, hogy nem tartod reálisnak ezt a lehetőséget, pedig előfordulhat. Persze általában elmondható, hogy a systemd nem döglik meg csak úgy, mert akkor nagyon sok panaszos lenne. Szóval elfogadom, hogy sok embernek jól teszi a dolgát, illetve a legtöbb felhasználó nem is tud róla, hogy mi az init rendszere - tehát műdödik.
További szép napot!
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Ezt értem. És előtte? :)
Rámutatni egy eshetőségre.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
"de az én koncepciómba nem illeszkedik." - Amely koncepció nem illeszkedik abba, amerre a Linux megy...
Egyre gyakrabban tapasztalom, hogy a koncepcióm másfelé visz. Lehet, hogy öregszem - vagy csak rugalmatlan vagyok és nem haladok a korral.
Most pl: usr összevonás. Zavar, mert tudom, hogy miért van külön /usr. De kénytelen vagyok követni - Linux alatt.
"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."
Nekem ha benn vannak, már tökmindegy :) a kényelem mián az én userem jelszó nélkül sudo-zhat. De lehet, hogy ezt a gyakorlatomat azért felül kéne vizsgálni...
Meg ha jól értem ezek is úgy berhelték meg az openssh-t, hogy még be se vagy lépve már futott a kód -- nyilván root jogokkal.
hasznald ezt: https://wiki.gentoo.org/wiki/Pam_ssh_agent_auth
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Szerintem sajnos azellen nem véd. A dropbear talán annyit segít, hogy kevesebb a függősége, amin keresztül be lehet csempészni a backdoort (de tegyük hozzá, az openssh-nak sem volt "igazi" függősége a liblzma). A 2FA sajnos szintén semmit nem védett volna, mert már preauth fázisban ráfutott a backdoor-ra és - ha igaz az aktuális leírás - nemcsak annyit tudott, hogy a támadó által beégetett RSA kulccsal mindig továbbengedett, hanem dirketben azonnal remote kódfuttatást is lehetővé tett, el sem jutott volna az autentikáció a második faktorig.
Az előttem levőket tudom idézni: VPN és tűzfal mögé az SSH-t, illetve bármi más remote access-t. A VPN-ből lehetőleg olyat, aminek a jelenléte portscanneléssel nem deríthető ki (pl wireguard _állítólag_ ilyen, de nem tudom ellenőrizni).
Sajnos akkor még mindig megvan az, hogy olyan backdoor-t kapsz be, ami kifele irányba veszi fel a kapcsolatot a C&C szerverrel. Sajnos kell outbound tűzfal is, ami eléggé alkalmazásfüggő, hogy mennyire praktikus. Kifele irányba sajnos lehet DNS-be csomagolt módon is forgalmazni, kell valami saját DNS szerver/proxy, amin le tudod logolni, hogy miket kérdez kifele és mondjuk riasztani, ha túl sok DNS cache miss van.
Régóta vágyok én, az androidok mezonkincsére már!
> A VPN-ből lehetőleg olyat, aminek a jelenléte portscanneléssel nem deríthető ki (pl wireguard
az ipsec + psk is ilyen, ha nem jo a psk kulcs, nem is valaszol. l2tp/ipsec pl, azt kb minden OS beepitve ismeri.
Végülis igen, PSK-val valóban. Én IPSec-nél automatikusan IKE-s változatra asszociáltam, ami sajnos elárulja magát.
De ezt az egészet nagyon könnyű elrontani pl, ha VPN szerver 1 hoppal a tűzfal mögött van, akkor TTL-állítós trükkel fel lehet fedni a portscannél, hogy az a port valójában nyitva van, csak a mögötte levő service nem válaszol. És biztos vagyok benne, hogy van még 1-2 trükkösebb fingerprinting technika, ami valami indirekt módon elárulja, hogy az adott port viselkedése valahogy különbözik a többiétől.
Régóta vágyok én, az androidok mezonkincsére már!
Az IPSEC, meg Wireguard konfigurálás elég macerás amikor az embernek legalább 5-10 különböző háztartásban, irodában, cloud provider-nél, VPS hostingnál lévő gépet kell adminisztrálni.
Tudom ma már vannak bitang jó szkriptek, meg telepítő keretrendszerek, de énnél én egyszerűbb lélek vagyok... egyébként a ZeroTier saját controllerel nagyon bevált, elég stabilan hozza, amit kell. (De nem tudom egy port-scanből kiderül-e, elvileg UTP punchingot használ.)
a port-knock az már megfelel egy gyengébb 2FA-nak? :-)
ahány koppintásból áll, annyi plusz faktor!
2FA, ugyan mar!
1. tudsz valamit (jelszo)
2. van valamid (hw kulcs)
3. ismersz valakit (aki megoldja a problemaidat, amig te a karibi szigeteden pihengetsz)
Az van, hogy a harmadikhoz nem visz kozelebb az sshd es PAM konfig fileok turkalasa.
Nálunk levelezésnél van a tudsz valamit jelszó , nem tudsz valamiről SSL client cert (sajnos se a nyomi alma , se a stock nyomi Android és még a kitekintő sem képes ezt kezelni 2024-bem sem :()
Valahol szomorú, hogy az ssl alapok is hiányoznak.
"nem tudsz valamiről SSL client cert (sajnos se a nyomi alma , se a stock nyomi Android és még a kitekintő sem képes ezt kezelni 2024-bem sem" - Ezt hogy érted? Mutassak olyan postafiókot, aminél Android és iOS esetén is a készülékre felrakott kliens cert-tel enged be csak a levelezéshez?
Dovecot IMAPS úgy van beállítva, hogy kliens cert kell neki, ezt a gyári mobil email kliensek (Apple Mail/Google Mail) közül egy sem igazán támogatja. De ha megnyitom Chrome/Safariban a webmailt szépen felugrik a tanúsítványválasztó kiválasztom bejön.
Androidon a FairEmail/K9 Mail képes ilyen varázsatlatra, de IOS-re még nem találtam, olyan email klienst tudná.
Nekem Exchange webes felület előtt van HTTPS kliens cert ellenőrzés (gyakorlatilag webmail), és teljesen jól működik: akár Android (Gmail), akár iOS a kliens, user+pass+kliens certtel megy a levelezés elérése. Az IMAP fölé húzott SSL+kliens cert - ha jól rémlik - nekem is csak K9-cel ment, de szerencsére azt ki lehetett dobni (iOS -ra valami fizetős motyó volt csak...)
> a port-knock az már megfelel egy gyengébb 2FA-nak? :-)
Ha dinamikusan váltod a portokat amiket meg kell knock-olni... elvileg össze lehet hegeszteni egy Google Authenticatorral, csak valami hash algoritmus kell, amit fejben el tudsz gyorsan végezni és a 0..999999 közötti számból csinál egy portot :)
Asszem a VPN egyszerűbb :)
A legegyszerűbb és átláthatóbb megoldás , ha egyszerűen kirakod az egész vackot a netre. :)
Példa:
https://threatbook.io/ip/91.104.249.32
Természetesen ha már telik Industrial LTE routere akkor véletlen se cserélsz rajta firmwaret:
Egy hete próbálgatja az e-mail fiókok jelszavát nálunk. (biztos elfelejtette)
pont az ilyen scanner oldalak miatt tokre felesleges a portokat atrakni (elobb utobb vegignezik a 0...65535 portokat), hacsak nem rakosgatod hetente at az ssht
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
én arra gondoltam, hogy egy Google Authenticator script percenként teszi át az sshd-t (vagy a knockolandó portot)
de tudom... ez egy beteg gondolat, csak néha elszaladnak az ötletek
ez tobb problemat szul mint amennyit megold: sshn kivul meg egy csomo program van akinek kell bindport. igy a "random" port nem johet szoba, mert kell nehany kivetel. stbstb
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
LOL :DD
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
az jó mert akkor upgradelni sem tudom a különböző gépeimet :) csak azt kell kitalálni, hogy miből lesz így több: security hole-ból vagy fix-ből :)
valószínűleg hosszútávon mindegy: ergo talán mégis jobb lett volna még ~30 éve RedHat 5.2-n maradni :)
....de én andoridot hazsnálok, átnézem a szósz kódot mindig mer ómen szós
Szerintem újra kellene írni Rust-ban!
pythonban mar ujrairtak, de sajna az is dependel openssl-en :(
Malbolge-ban.
Épeszű ember nem nyúl ahhoz a nyelvhez, innentől aki bele akar nyúlni alapból mehet banra :)
Az online mémvilágban máris megkezdődött az autistázása és egyéb más, lejárató hangvételű kifigurázása a fejlesztőnek, aki abból jött rá először a turpisságra, hogy fél másodperccel lassabban indul a library.
Mi sem mutatja jobban, hogy a multik erőforráspazarló szutykain tengődő tech-világ mennyire hozzászokott már a bloat-hoz és ahhoz, hogy 2024-ben kuriózumnak számít az, ami 1 másodpercnél rövidebb idő alatt indul el és nem szüttyög minden szaron-húgyon, amit általában animációval fednek el, ami amúgy is másodperces késleltetéseket tesz a workflow-ba, csak azért, hogy szemfényvesztően lehessen demózni.
Ezek után nem csodálom, hogy Raynes kolléga is előszeretettel ajánlgatja nekem az egyértelműen erőforráspazarlóbb és emiatt számos vizuális késleltetéssel bíró GTK3-at és minden hozzá hasonló bloat-ot.
Én terminálos workflow-t meg toolkit nélküli ablakkezelőt ajánlok, de ahhoz normi vagyol. A Gtk3-at csak azért említem, mert annak ellenére, hogy én se szeretem, de próbálod beállítani, mint a világ legbloatabbját, közben meg a Gtk4, Qt4-6, webes tákolmányok simán mind bloatabbak.
Az xz-ről is hiába próbáltad elhitetni, hogy bloat, nem az. Igen, nyilván lassabb az általad preferáltaknál, de ez a tömörítésnek, mint műfajnak a törvénye, egy tömörítő minél jobban tömörít, annál lassabb lesz, vagy annál több erőforrás kell neki. Vannak az xz-től sokkal extrémebbek is, pl. paq8, zpaq, azok olyan morbid lassúak, hogy kisebb anyagokat is ilyen 10-20 órán át tömörítenek (befelé, kiflé is), 10-20 giga memóriafoglalással, de ezeket nem is mindennapi használatra tervezték, hanem kísérletezésnek. Ezen az oldalon meg tudod nézni a legjobban tömörítő megoldásokat, és látni fogod, hogy a toplistások, mennyivel lassabbak a mainstream megoldásnál.
A tömörítés mindig egyensúlyozás, mindegyik tömörítőnek más az előnye, hátránya, neked kell megtalálni, hogy az adott anyagra, igényeidre neked melyik a jó, melyik tömörít még úgy, hogy megfelel, de időben, hardverigényben sem brutális. Még egy tömörítőn belül is lehet játszani a paraméterekkel, mennyire tömörítsen, mekkora szótárméretet, stb. használjon. Pl. xz-nek is vannak alacsonyabb fokozatai, amelyeken nem lassabb, mint egy gzip, de akkor viszont lehet nem is fog sokkal jobban tömöríteni.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Természetesen az érintettek között nem autista senki. Nem hogy a MS-os fejlesztő, de az xz-s forma sem az, őróla ugyanis hiába rebesgették, hogy valami mentális baja van, meg kiégett, nagy hirtelenséggel rendbejött és egyből újra alkalmas lett fejlesztésre, meg egy új release kiadására. Semmi kiégés nincs, lusta disznó, ráunt a projektre, és kitalálta ezeket a kifogásokat.
Nem az a baj, hogy nem akarja már az xz-t fejlteszteni és karban tartani, arra nem is kötelezhető, hanem hogy hazudozik róla, kifogásokat keres, meg nem adja át a projektet valaki megbízhatónak. Pl. GNU-sok közül valakinek, vagy a Linux kernelesek kijelölhetnének valakit erre, ismert, név szerinti embert, aki évek óta bizonyított, esetleg még a zstd/lz4-es fejlesztő is tudna rá vigyázni. Esetleg MS, Red Hat, de azoknál nem akarom, hogy bárki rátegye egy ilyen alapvető FOSS projektre se a mocskos kezét, és szépen profitorintált vagy bloat okádmányt csináljanak belőle. Mindegy ki venné át, csak megbízható legyen, az se baj, ha nem sokat tesz hozzá a projekthez, csak ilyen JiaTan pöcsféléket ne engedjen be a projektbe.
Sőt, innen már arra se építenék, hogy adja át, hagyja a fenébe, valaki forkolja a projektet megbízható fejlesztők közül, nxz vagy valami hasonló néven, és mindenki használja tovább azt.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
ha kiderül hogy ez a Jia Tan amerikai vagy európai állampolgár, akkor elbeszélgetnek vele a titkosszolgálatok hogy mégis mi volt az elképzelés, kik a megbízók, hogy csinálta, mióta tervezte?
vagy a rendőrség ha van erre bármi polgári büntető kategória?
gondolom inkább a titkosszolgálat
megfordítva: ha én próbálok backdoor-t rakni az sshd-be és majdnem sikerül és lebukok, akkor nyugodtan zavartalanul élhetem tovább a polgári életem?
Vagy inkább valamelyik titkosszolgálat ügynöke volt ez a Jia Tan fedőnevű figura.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
valahol azt irtak h valoszinu orosz, a commit idopontok/idozona adatok alapjan (meg a kinai nemzeti unnepnapokon commitelt, az europaiakon meg nem)
A probléma egyébként az, hogy a many-eyeballs nincsen enforszolva. Review folyamat kellene, amiben emberek aláírják, hogy ők azt reviewzták. Illetve olyan build rendszer, ami garantáltan mindig ugyanazt a kimenetet adja, és azt is többen aláírják, hogy nekik is ugyanaz jött ki. Tehát egy disztró csomagjaihoz oda lenne téve, hogy ezt ezek az egyének és szervezetek garantálják, hogy helyes és intakt.
Rohadt drága lenne, de amennyi erőt elpazarol a FOSS közösség, akár bele is férne. Vagy ha a Linux foundation ezt finanszírozná ahelyett, hogy minden hülyeségbe fektet.
Az autotools-szal egyébként már elvi szinten is baj van: nem a programnak kellene a környezethez igazodni, hanem a környezetet kell a programhoz igazítani. Nem tudom csináltatok-e már olyat, hogy egy ilyen autotools configure szemlélettel megírt programba bele akartatok tenni valamit: rémálom, mert tele van feltételes elágazásokkal, és te csak egy ágat tudsz egyszerre kezelni, nyilván nem fogsz N+1 környezetet felépíteni, hogy minden ágat és kombinációt tesztelj. Az elágazások helyett HAL layert kell építeni, az a preferált megoldás minden normális projektben. Mikor ilyet kellett csinálnom azzal kezdtem, hogy kigyaktam belőle az összes feltételt és utána megcsináltam azt ami nekem kellett a saját platformomra. Ezerszer egyszerűbb lett a megoldás, mint eredetileg volt.
Aztán ha hibajelentés van, akkor azzal kezdődik, hogy jó, de mi a környezet? Hát azt nem tudom, mert az autotools szkript kimenetének a titka.
Semmi valódi oka nincsen annak, hogy ugyanazt a programot a különböző disztróknak különböző bináris verzióban kell tálalni. Azért van a fejlesztő, hogy ő megmondja, hogy a programnak mik a függőségei, ha ezt mások felülbírálják helyette, akkor hirtelen nem tud érvelni a programja helyessége mellett, mert azt sem tudja, hogy mivel fordították egybe. A program publikációjának tehát része kell hogy legyen, hogy a fejlesztő melyik libek melyik verzióival szánta egybegyúrni a saját termékét. Plusz a fordítási szkriptek (deklaratív leírások). Ha ezeket kiadja a fejlesztő, akkor mindenki binárisan ugyanazt tudja fordítani belőle, és nincs vita. Ha valakinek mindenképpen más környezethez kell illesztenie a programot, persze megteheti, csak akkor az már explicit felülbírálása a szkirpteknek, és egyértelmű, hogy az már valami más, nem az amit a fejlesztő kiadni szánt.
Ha jól értem, megalkottad a statikusan linkelt, emiatt redundáns és hatalmas méretű alkalmazásokat.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Nem kell, hogy statikus legyen, de az igaz, hogy ha két alkalmazás két különböző verzióját kéri egy libnek, akkor feltenném mind a kettőt.
Persze a disztró-készítő optimalizálhat, ha akar, de az alap az lenne, hogy a fejlesztő határozza meg a libeket, nem a disztró. Ha lenne olyan disztró, ami a fejlesztő változatát telepíti, akkor én azt választanám.
Szerintem nem jól érted.
tl;dr
Egy-két mondatban leírnátok, hogy lehet ellopni egy bitcoin-t?
Valóban annál azért jobb valamire gondolt, bár nekem nem tetszik. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Kicsit megkésve, de erre muszáj reagálnom. Igen, kéne review, mert így a many-eyeballs miatt mindenki a másiktól várja, hogy ők majd átnézik helyette a kódot, így meg senki nem nézi át, de ez az elvi sík.
A gyakorlati sík viszont az, hogy a fejlesztés ingyenes, amit a disztrók kihoznak, az ingyenes (jó, RHEL, meg 1-2 kivétel van), így nem lehet nekik előírni, hogy mi lenne a kötelességük, mi nem. Főleg, hogy nehezen kivitelezhető, egy disztró tárolójában több tízezer csomag van, annak van pár milliárd kódsora, beleértve a makefile-okat, telepítő scripteket, stb., ezt ha nagy anyagi áldozat árán át is nézik, az is évek, addigra meg az egész ökoszisztéma olyan gyorsan mozog, olyan gyorsan ontják az új verziókat, hogy lehetetlen lesz behozni, lekövetni, még akkor is, ha csak a konkrét új commitokat nézik át.
A megoldás itt az lenne, ha kormányzati szervek, biztonsági cégek rámennének, hogy legalább a főbb, nagyobb komponensek (kernel, systemd, glibc, mesa, ffmpeg, stb.) mellé rendelnek állandó átnéző embereket, 1-1 fejlesztőt csak 1 projektre dedikálva. A többieket meg felhívás alapján önkéntesek néznék át, minden projekt mellé ajánlkozna valaki, hogy átnézi minden verzió kijövetelekor, és addig nem építik be az adott újabb verziót (legalább a corporate grade disztrókba), amíg a véleménye nincs kész, hogy átnézte, engedélyezi. Ha valaki kiesik, akkor meg jelentkeztetni valakit a pótlására. Valaki megbízható, aki valamelyik szervezetnek dolgozik, vagy van valami ellenőrizhető háttere FOSS fejlesztésben, évekre visszamenőleg. Nyilván Kisguczy Illés az utcáról nem játszik, mert adott esetben hiába is nézi át a kódot, pl. az xz-ét, hiába ért hozzá, a véleménye semmit nem fog garantálni, mert nem tudni ki ő, simán ő is lehet ilyen JiaTan-félékkel kollaboráló kém.
A kernel annyiból könnyű, hogy ott van két megbízható ember, Torvalds és Kroah-Hartman, róluk az idő ténylegesen is bizonyította, hogy tényleg nézik a kódot, nagyon megválogatják mit engednek be a kernelbe, az xz-hez hasonló akcióját kivédték a minnesotai egyetemnek 3 éve. Még a systemd se problémás, mert a Red Hat házon belül fejleszti, ők tudnak erre embert adni, hogy felügyelje a külsős commitolók munkáját is. A mesa meg az ffmpeg viszont már problémás, meg a rust és a gcc.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Ez mire garancia? Arra, hogy csak NSA backdoor lehet benne? Attól máris boldogok vagyunk, ha a hátsókapu nem kínai vagy orosz, csak amerikai?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Arra, hogy legalább annyira backdoor mentes, ahogy eddig. Meg hogy ilyen JiaTan emberkéket nem hagynak felügyelet nélkül a projektbe, hogy elfingja magát, és átadják neki.
NSA backdoor az sajnos mindenben lehet, akár még Torvaldsot is megfenyegethetik, és rakathatnak vele bele. Így ilyen síkon ez ellen sose lesz garancia, csak egy: a komplexitási fokot kell visszafogni. A szoftverek kb. 20 éve csak bloatosodnak, sokszor teljesen feleslegesen vannak bonyolítva, absztrahálva, millió kódsorokon, meg rengeteg függőségen át. A suckless meg az OpenBSD fejlesztők pont erről pofáznak már nagyon rég, hogy miért gáz, ha egy kód komplex, miért növeli meg a sérülékenységek számát, és miért kell fenntarthatóságra, rövid, tiszta kódra törekedni. Csak jött a sok soydev hülye, hogy nem számít, mert mindenkinek i7-re meg Ryzenje van, meg sok giga RAM-ja, minek spóroljanak akármivel. Hát ezért.
A rövid kód nem csak a hardverigénynek tesz jót, meg hogy sokkal nehezebb bele backdoort rejteni, hanem pl. ha valami nem szándékolt bug is van, azt is sokkal könnyebb debugolni. Akár egy hobbista is rendbe tesz egy pár soros minimális kódot, nem kell hozzá nagy cégekre várni, hogy nagy tőkével, nagy számú fejlesztővel ők menjenek neki a komplex kódsoroknak. Így nem vagyunk annyira a multiknak kiszolgáltatva. Valamennyire ki leszünk mindig is, mert a munkahelyi gépen, meg bankautomatán, online szolgáltatások szerverein, stb. nem azt használsz, amit akarsz, nem az a rendszer kerül rá, amit át tudsz nézni, de a saját géped, az a te várad, ott megteheted, amit tudsz.
Majd csak nyisd meg a hőn szeretett Fedorádon a process listát, kezdd el elemezni, hogy mi fut. Ez alatt nem azt értem, hogy azok backdoorok, mert valószínű nem, hanem hogy mennyire szükségesek, valóban megkerülhetetlenek-e a használatuk, konkrétan a te felhasználásodnál. Pl. a Gnome-nál is most volt egy botrányos sérülékenység, a kikapcsolhatatlanul futó fs-miner és a libcue miatt. Az nem elég ok, hogy azért kell a háttérben fusson, mert függőség. Nem az, ezt megtanultam az évek során.
Pl. régen nekem is magyarázták, hogy kell a Secure Boot, kell a GRUB, kell az SELinux, meg a systemd, meg login manager, gvfs, Akonadi, OOMkiller, colord, polkitd, upowerd, homed, NetworkManager, snapd, Flatpak, meg a tököm tudja mi. Közben meg eljutottam az évek során, hogy megvagyok a legtöbb ilyen szutyok nélkül, bőven el lehetett őket hagyni. Vagyis a systemd-t nem, de az is folyamatban lévő harc. Most pl. a systemd-sek is nagyon gyorsan rájöttek, hogy sok linkelt függőség az valóban nem szükséges, és a jövőben ezt máshogy fogják megoldani, hogy ilyen xz-s meg hasonló projekteken keresztül ne kompromittálódjanak.
Sőt, ugyanez volt pepitában, amikor nem értetted, miért bírálom a Pipewire-t, mikor nem volt még vele bugom. Azért mert máris túl komplex, és nem hogy nem áll le vele, hanem verzióról verzióra hízik.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Ez a videó nagyon szépen szemlélteti a mai torz fejlesztői szemléletet és mindent agyon bonyolító hozzáállást. Pedig ért hozzá, mert retrós faszi, de úgy kezdi, hogy megemlékezik a BBS előtt, újra létrehoz egyet. Ehhez egyébként elég lenne egy FOSS natív BBS szerver a meglévő linuxos szerverén, de ő ehelyett szándékosan szétbonyolítja. DOS-os Renegade BBS-t futtat, x86box emulátorban, azt beágyazva docker konténerbe, K8s-en keresztül, git-ről konfigot frissítő, Helm scripttel telepítve, Ceph réteg fölé, ha esetleg mégse csak egy node-on kellene később futtatni, vagy hozzá kéne férjen más konténerek adatához. Indokolja mindezt azzal, hogy a virtualizációnak nagy az overheadje, mert ott fut a hypervisor kernelmodul, meg a virtualizált OS. Ehelyett behozott 100× annyi overheadet és bonyolítást, úgy megkutyulta az összes 3-4 betűs technológiával, hogy ha majd nem megy, az isten meg az összes AI se bogozza ki, hogy hol van a gond. A legrosszabb, hogy azt hiszi magáról, hogy ez menő. Közben meg elég lett volna a legrosszabb esetben egy KVM-ben futó Alpine image, amibe telepít egy egyszerű, natív wwivbbs-t vagy lbbs-t.
Persze, ki hibáztatja, mikor már a BBS se a régi, a modern BBS implementációk már Node.js, meg PHP+MySQL alapon mennek, mert az is kell alá. Mikor még C64-ről használták az emberek, akkor elment persze azon is, de most muszáj bonyolítani. Na meg 13 gigás kódbázisú Rust-ban újraírni. Mert megérdemeljük.
“The world runs on Excel spreadsheets.” (Dylan Beattie)
Szerintem ez pont a jelenlegi irány kifigurázása...
https://news.ycombinator.com/item?id=39956455
Az az alapgondolat, hogy mennyira amatőr hibát követett el a backdoor fejlesztője, nekem is eszembe jutott. Ami a normál működést ennyire lelassítja az feltűnik, és nyilvánvalóan a működéséhez nagyon minimális erőforrás is elegendő lenne. Lehet, hogy valaki a szabotőröket szabotálta?
Tekintettel arra, hogy mennyire összetett és komplex ez az egész cuccos, én simán el tudom képzelni, hogy egyszerűen csak elveszett a részletekben, azért vétett ilyen hibát. Esetleg napok óta pisztolyt fogtak a fejéhez, hogy befejezze, fáradt volt és pont elfogyott a kávé. Vagy valami ilyesmi. Persze az is lehet, hogy valóban szaboltálták a szabotőrt.
Azt hiszem, ezt már sosem tudjuk meg, mert nem túl valószínű, hogy a Jia valódi személyazonosságára egyhamar fény derül. Annyit lehet csak tudni, hogy nagyon nagy valószínűséggel nem ázsiai, hanem kelet európai volt. Legalábbis erre utalnak a nyomok, de persze az is lehet, hogy tényleg csak egy éjszakás műszakú kóreai volt.