Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.
NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.6. Z novinek lze vypíchnout lepší integraci LLM (OpenAI, Google AI, Ollama) nebo podporu Matter 1.3.
IKEA ve Spojeném království hledá zaměstnance do své nové pobočky. Do pobočky v počítačové hře Roblox. Nástupní mzda je 13,15 liber na hodinu.
Alyssa Rosenzweig se v příspěvku na svém blogu Vulkan 1.3 na M1 za 1 měsíc rozepsala o novém Vulkan 1.3 ovladači Honeykrisp pro Apple M1 splňujícím specifikaci Khronosu. Vychází z ovladače NVK pro GPU od Nvidie. V plánu je dále rozchodit DXVK a vkd3d-proton a tím pádem Direct3D, aby na Apple M1 s Asahi Linuxem běžely hry pro Microsoft Windows.
Byla vydána (𝕏) květnová aktualizace aneb nová verze 1.90 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.90 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána (Mastodon, 𝕏) nová verze 2024.2 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.
Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.
MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.
Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.
Nový VIM verze 7 slibuje zajímavé funkce, mimo jiné code completion pro řadu jazyků včetně RUBY. Implementace code completion není v případě RUBY nic snadného, tak jsem byl zvědavý, jak si s tím autor VIMu poradil. Dnes jsem si to vyzkoušel vlastníma rukama a nevěřil jsem vlastním očím...
Out of the box mi code completion pro ruby nefungovava (byly v tom moje úpravy konfigurace pro VIM 6), tak jsem se jal číst dokumentaci... Uzel nápovědy "ft-ruby-omni" obsahuje text:
Notes: - Vim will load/evaluate code in order to provide completions. This may cause some code execution, which may be a concern.
Tahle věta nám vlastně říká, jak je code completion udělán -- oni ten kód VYKONÁVAJÍ. Chvíli jsem nevěřícně kulil oči "may be a concern" -- to je poněkud eufemisticky řečeno! Zavětřil jsem zásadní bezpečnostní problém.
Pak si říkám, že v RUBY jsou přece prostředky, jak se s takovou situací vyrovnat. No a pak jsem si to vyzkoušel... a málem jsem spadl ze židle: je to tak, použitím code completion ve VIMu si třeba můžete smazat disk.
Demonstrace:
Mějme zdrojový soubor a.rb:
system('echo vim je pako > /tmp/pako')
class MyTest
def test
return 1
end
end
Porom mějme zdrojový kód, který editujeme, třeba b.rb:
require 'a'
t = MyTest.new
t.t
Pokud nyní umístíte kursor na konec posledního řádku souboru b.rb a stiskněte CTRL-X-O (code completion), VIM vám korektně nabítne metodu "test". Jenže při tom také vytvoří soubor /tmp/pako s obsahem "vim je pako"...
Co k tomu dodat? Zneužití se přímo nabízí, nemluvě o tom, že ke škodě může dojít i omylem.
Někdy je méně více...
Tiskni Sdílej:
require "my-evil-script.rb"
, vim se přepne do ruby-mode, a v site-packages se objeví váš zákeřný exploit, aby jej vim mohl spustit?
system("echo #{$:.inspect} >> /tmp/zde_je_pako")
.
3. krok (pokud vám to ani teď nedocvaklo) - zamyslete se nad tím, jestli je třeba možné, že by někdo pustil VIM z adresáře /tmp/.
4. krok a) pokud vám to už docvaklo, nasypte si popel na hlavu a příště před psaním ironického příspěvku přemýšlejte, b) pokud se cvaknutí stále nedostavilo, změňte povolání
"."
, je to jistý bezpečnostní nedostatek, ovšem pro Ruby, ne pro Vim.
2) Pusťte si Bash. Pod rootem napište echo >/etc/povolny_je_pako
, a stiskněte ENTER (ta velká klávesa napravo se zalomenou šipkou). Ha! bash je děravý.
3) To samozřejmě možné je, ale netuším co tím chcete dokázat.
4) Myslím že vaše rady nebudu brát příliš vážně.
1) pokud má Ruby jako prioritní search path pro moduly "."
, je to jistý bezpečnostní nedostatek, ovšem pro Ruby, ne pro Vim.
Jako prioritní ne, ale v serch path '.' má a to stačí. A problém VIMu to je, protože mluvíme o variantě, kdy je VIM linkován s Ruby a VIM nevhodným způsobem Ruby používá (nenastavuje $SAFE).
2) Pusťte si Bash. Pod rootem napište echo >/etc/povolny_je_pako
, a stiskněte ENTER (ta velká klávesa napravo se zalomenou šipkou). Ha! bash je děravý.
No to je dost mizerný vtip a ještě horší přirovnání.
3) To samozřejmě možné je, ale netuším co tím chcete dokázat.Třeba to, že exploit zranitelnosti, kterou jsem popsal je poměrně proveditelný.
negado
expanduje na most-negative-double-float
, wiof
na with-open-file
...prostě expanduje podle procenta fuzzy matche dost vychytaným způsobem... To by možná ocenili i javisti a C#aři, kdyby jim oumeme
+ TAB samo vyhodilo OutOfMemoryException (OutOfMemoryError) a nemuseli se se vším tak psát, zvlášť, když z toho dělají proměnnou a musejí to psát dvakrát.
if ($a == ($b ± autobus)) { ... }hmm, a to sa jeden čuduje, prečo im ten vývoj trvá tak dlho
:wq!
, ZZ
nebo qq
. Ani Emacs se tomu nevyhnul. Vim je zato z nějakého důvodu imunní.
Mimochodem, převeďte si "vi vi vi" z římských číslic na arabské a pochopíte postoj Církve Emacsu k tomuto tématu...