Спекулятивное исполнение

Вот как вы дума­е­те, совре­мен­ные про­цес­со­ры, встре­тив в коде услов­ный пере­ход типа if () {} else {}, какую ветвь кода выпол­ня­ют?

Пра­виль­ный ответ: обе.

Поче­му? Пото­му что опе­ра­тив­ная память, раз­де­ри её Вул­кан, до сих пор явля­ет­ся самой тор­моз­ной частью ком­пью­те­ра. Ком­пью­тер может выпол­нять инструк­ции гораз­до быст­рее, чем под­тас­ки­вать дан­ные из памя­ти, поэто­му он тупо выпол­ня­ет обе вет­ви, и дан­ные, полу­чен­ные в резуль­та­те вет­ви, кото­рая не долж­на была испол­нить­ся, потом выбра­сы­ва­ет.

Толь­ко вот с выбра­сы­ва­ни­ем есть… эффек­ты. Кото­ры­ми мож­но зло­упо­тре­бить. Имен­но отсю­да рас­тут ноги туе­вой хучи экс­плой­тов типа Spectre, Meltdown, и про­чих радо­стей. Теперь с эффек­та­ми засве­ти­лись про­цес­со­ры AMD.

Я пло­хо пони­маю кон­кре­ти­ку, но каким-то обра­зом зло­умыш­лен­ни­ки могут заста­вить цен­траль­ный про­цес­сор счи­тать, что коман­да XOR явля­ет­ся рекур­сив­ным вызо­вом. Далее, как водит­ся, идёт пере­пол­не­ние буфе­ра, и воз­врат сте­ка на про­из­воль­ный адрес, кото­рый любез­но под­со­вы­ва­ет ему хакер. Таким обра­зом могут быть воз­вра­ще­ны при­ват­ные дан­ные из дру­го­го непри­ви­ле­ги­ро­ван­но­го про­цес­са.

https://www.bleepingcomputer.com/news/security/new-inception-attack-leaks-sensitive-data-from-all-amd-zen-cpus/

Когда же всё это почи­нят? Да нико­гда. Уби­ра­ние спе­ку­ля­тив­но­го испол­не­ния сто­ит огром­но­го паде­ния в про­из­во­ди­тель­но­сти. Поэто­му оно с нами будет как мини­мум до тех пор, пока память типа SRAM не будет сто­ить как обыч­ная опе­ра­тив­ка RAM.

Микрософтовская болталка

Я, при­знать­ся, ожи­дал луч­ше­го. Она даёт фак­ти­че­ски невер­ные отве­ты и рабо­та­ет доль­ше, чем ЧатЖПТ. Сна­ча­ла ищет отве­ты в сво­их бин­гах, а потом резю­ми­ру­ет най­ден­ное. Вот, вопрос из тео­рии музы­ки — в чём раз­ни­ца меж­ду нон­ак­кор­да­ми C9 и Cadd9:

Бол­тал­ка попы­та­лась меня уве­рить, что в Cadd9 тоже есть сеп­ти­ма, толь­ко она боль­шая (B), а не малая (Bb). А вот шЫш, не было там нико­гда сеп­ти­мы. Cadd9 — это очень кра­си­вый аккорд с добав­лен­ной ноной (D).

При этом оно даёт ссыл­ки с доку­мен­та­ми, в кото­рых англий­ским по бело­му напи­са­но, что сеп­ти­мы там нет. Я ему напи­сал, что оно непра­во. Изви­ни­лось.

Цирк с коня­ми на ней­рон­ной тяге.

Протокол HTTP и политика

У людей, делав­ших про­то­кол http, всё же было чув­ство юмо­ра.

Поми­мо уже всем извест­ных кодов оши­бок 404 или 403 есть ошиб­ки с забав­ны­ми кода­ми. Напри­мер, есть ошиб­ка HTTP 418 I’m a teapot (я чай­ник).

Смысл этой ошиб­ки, на пер­вый взгляд, создан­ной чисто ради хох­мы, всё же есть. Ошиб­ка выле­та­ет, если сер­вер счи­та­ет, что его исполь­зу­ют не по назна­че­нию. Офи­ци­аль­ное опи­са­ние: «любая попыт­ка зава­рить в чай­ни­ке кофе вме­сто чая долж­на вызы­вать ошиб­ку 418 Я Чай­ник.» Веб­де­вы ино­гда исполь­зу­ют эту ошиб­ку внут­ри соф­та, когда, напри­мер, есть несколь­ко сер­ве­ров, и один из них обслу­жи­ва­ет один класс кли­ен­тов, а дру­гой — всех осталь­ных, и запрос слу­чай­но при­хо­дит не на тот сер­вер.

Немно­го дру­гой смысл у более зло­ве­щей ошиб­ки HTTP, 451. Циф­ра 451 — это отсыл­ка к Рею наше­му Брэд­бе­ри, романе-дисто­пии «451 по Фарен­гей­ту», про тота­ли­та­ризм, где запре­щён­ные кни­ги сжи­га­ют вме­сте с дома­ми, где они были най­де­ны.

Я рань­ше эту ошиб­ку нико­гда не видел. Но с нача­лом извест­ных собы­тий в Восточ­ной Евро­пе — дожил, уви­дел и её.

Жаль ЖЖ. Но аль­тер­на­ти­ва как-то не высве­чи­ва­ет­ся, во вся­ком слу­чае, не для меж­ду­на­род­ных поль­зо­ва­те­лей.

Про законы робототехники

У Айзе­ка Ази­мо­ва мно­го напи­са­но про то, что три зако­на робо­то­тех­ни­ки — это заме­ча­тель­но, но даже такие три про­стые пра­ви­ла мож­но интер­пре­ти­ро­вать по-раз­но­му. В одном из рас­ска­зов, не вспом­ню сей­час в каком, закон пер­вый, т.е. «робот не может при­чи­нить вред чело­ве­ку или сво­им без­дей­стви­ем допу­стить, что­бы чело­ве­ку был при­чи­нён вред» — был интер­пре­ти­ро­ван робо­том как «людей надо неж­но свя­зать и запе­реть, что­бы они не при­чи­ни­ли себе вред». Что он неза­мед­ли­тель­но и сде­лал.

А ныне ВВС США сде­ла­ли симу­ля­цию дро­на, управ­ля­е­мо­го ИИ, кото­рый уни­что­жал систе­мы вра­же­ской ПВО. Преж­де чем отбом­бить­ся, ИИ запра­ши­вал раз­ре­ше­ния у опе­ра­то­ра, кото­рый мог запре­тить уни­что­же­ние кон­крет­но это­го рас­чё­та ПВО. Нью­анс в том, что за каж­дую уни­что­жен­ную систе­му ПВО иску­ствен­но­му интел­лек­ту начис­ля­лись очки. Кон­чи­лось тем, что ИИ отбом­бил­ся… по опе­ра­то­ру дро­на, что­бы тот не выпенд­ри­вал­ся, и не мешал ИИ наби­рать эти самые очки.

https://www.theregister.com/2023/06/02/ai_drone_simulation/

«Гигабайт» слегка обосрался

Как инте­рес­но. У ком­пью­те­ров с систем­ной пла­той «Гига­байт» есть авто­ма­ти­че­ское обнов­ле­ние про­шив­ки, кото­рое запус­ка­ет­ся при каж­дой загруз­ке ком­пью­те­ра и обра­ща­ет­ся к одно­му из сле­ду­ю­щих ресур­сов:

http://mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
https://mb.download.gigabyte.com/FileList/Swhttp/LiveUpdate4
https://software-nas/Swhttp/LiveUpdate4

При обна­ру­же­нии обнов­ле­ний оно их сгру­жа­ет и выпол­ня­ет с систем­ны­ми при­ви­ле­ги­я­ми.

Фиш­ка в том, что пер­вый ресурс, напри­мер, не исполь­зу­ет https, сле­до­ва­тель­но, если у зло­умыш­лен­ни­ков есть доступ к сети орга­ни­за­ции, они могут под­ме­нить этот ресурс на что-то, содер­жа­щее вся­че­скую виру­ся­ти­ну. Фиш­ка вто­рая, что хоть дру­гие ресур­сы и защи­ще­ны https, сгру­жа­тель обнов­ле­ний никак не вери­фи­ци­ру­ет их сер­ти­фи­ка­ты, соот­вет­ствен­но, под­ме­на ресур­са не менее три­ви­аль­на, чем обыч­ный http.

Да, вос­поль­зо­вать­ся этой уяз­ви­мо­стью не ска­зать, что­бы было силь­но про­сто — потре­бу­ет­ся доступ к сети орга­ни­за­ции. Но сам факт того, что сгру­жа­тель может ска­чи­вать вся­кую фиг­ню, никак не про­ве­ряя то, что он ска­чи­ва­ет, доволь­но позор­ный. Я был луч­ше­го мне­ния о про­грам­ми­стах «Гига­байт».

https://eclypsium.com/blog/supply-chain-risk-from-gigabyte-app-center-backdoor/

PS: Обнов­ле­ния для Windows, кста­ти, тоже ска­чи­ва­ют­ся по про­сто­му http — это сде­ла­но для того, что­бы созда­вать мень­шую нагруз­ку на сер­ве­ры ком­па­нии. Но Вин­да про­ве­ря­ет хеш каж­до­го ска­чан­но­го обнов­ле­ния — а уж сами хеши пере­да­ют­ся по защи­щён­но­му кана­лу.

PPS: У меня MSI 🙂

Про отнимание работы искуственным интеллектом

В ком­мен­тах к запи­си про заме­ну про­дав­цов маши­на­ми вполне спра­вед­ли­во ука­за­ли, что не толь­ко работ­ни­кам тор­гов­ли сто­ит опа­сать­ся кон­ку­рен­ции со сто­ро­ны ИИ. Я думаю, нали­чие того же Адо­бе Свет­ляч­ка, резуль­та­та­ми кото­ро­го я недав­но делил­ся, или Мик­ро­софт Дизай­не­ра могут серьёз­но под­ко­сить инду­стрию иллю­стра­то­ров.

Одна­ко мно­гие эти про­гно­зы наткнут­ся на то, что работ­ни­ки соот­вет­ству­ю­щих инду­стрий нач­нут актив­но сопро­тив­лять­ся. В осо­бен­но­сти это каса­ет­ся вещей, кото­рые тре­бу­ют лицен­зи­ро­ва­ния. Одно толь­ко нали­чие тре­бо­ва­ния лицен­зии уже может сде­лать ситу­а­цию кон­ку­рен­ции со сто­ро­ны ИИ невоз­мож­ной — лицен­зия-то может выда­вать­ся толь­ко дее­спо­соб­но­му чело­ве­ку. А при­зна­ние ИИ дее­спо­соб­ным чело­ве­ком — это пока из обла­сти бега по лез­вию брит­вы и снов андро­и­дов про элек­тро­овец.

А какие у нас рабо­ты тре­бу­ют лицен­зи­ро­ва­ния? Напри­мер, рабо­та архи­тек­то­ра, вра­ча, элек­три­ка, сан­тех­ни­ка. И если пред­ста­вить себе робо­та-сан­тех­ни­ка слож­но­ва­то, то вот с вра­чом всё дей­стви­тель­но будет непро­сто. Лицен­зия это же не про­сто раз­ре­ше­ние. Это ещё и опре­де­лён­ная гаран­тия каче­ства и кнут со сто­ро­ны госу­дар­ства — если врач серьёз­но нако­ся­чит и даль­ше попрёт как бык на воро­та, его могут лишить лицен­зии зани­мать­ся вра­чеб­ной прак­ти­кой, а это конец карье­ре.

Как эти вопро­сы будут решать­ся с ней­ро­сет­ка­ми — понят­но сла­бо, поэто­му я думаю, что вра­чам как раз опа­сать­ся нече­го. Тут у нас будет не заме­на вра­чей, а мен­таль­ный экзоске­лет — во мно­го разу уси­ли­ва­ю­щий воз­мож­но­сти док­то­ра.

Но у нас ещё есть исклю­чи­тель­но инте­рес­ный слу­чай, в кото­ром ИИ уже успел про­грать. Это опять же, попыт­ка заме­ны чело­ве­ка, чья дея­тель­ность тре­бу­ет лицен­зи­ро­ва­ния — юри­ста.

Подроб­но­сти мож­но про­чи­тать у ув. giovanni1313:

Часть пер­вая: https://giovanni1313.livejournal.com/119149.html
Часть вто­рая: https://giovanni1313.livejournal.com/119504.html

TLDR; Джо­шуа Бру­дер создал весь­ма успеш­но­го кибер-адво­ка­та, изна­чаль­но сде­лан­но­го для того, что­бы отфут­бо­ли­вать авто­мо­биль­ные штра­фы, а потом раз­дув­ше­го амби­цию до жела­ния исполь­зо­ва­ния систе­мы аж в Вер­хов­ном Суде. А дру­гие адво­ка­ты ему суну­ли в рот извест­но что, и поло­жи­ли извест­но что на ворот­ник. «Дан­ная дея­тель­ность тре­бу­ет лицен­зи­ро­ва­ния, так что ты, Джо­шуа Бру­дер, сей­час зани­ма­ешь­ся адво­кат­ством без лицен­зии. Отси­деть шесть меся­цев в тюря­ге хочешь?» Ожи­да­е­мо, Бру­дер сдул­ся, и так мно­гое обе­ща­ю­щий стар­тап закрыл­ся.

Хоро­шо это полу­чи­лось? Я счи­таю, что нет. Но это было ожи­да­е­мо — те, кому хоро­шо в какой-то опре­де­лён­ной ситу­а­ции, будут эту самую ситу­а­цию защи­щать, ибо им инте­рес­но ста­тус-кво. Про­сто у иллю­стра­то­ров или там сто­ке­ров в мага­зине в зад­ни­це не так круг­ло, как у Наци­о­наль­ной Гиль­дии Адво­ка­тов. Поэто­му послед­ние пока­мест суме­ли осто­ять ста­тус-кво. Погля­дим, надол­го ли.

Фаерфоксяша, гудбай

Я очень дол­го исполь­зо­вал Фаер­Фокс в каче­стве основ­но­го бра­у­зе­ра, но боль­ше так не могу. И дело не в том, что он меня не удо­вле­тво­ря­ет — он мне нра­вит­ся.

Но всё боль­шее коли­че­ство сай­тов с ним не рабо­та­ют или име­ют кри­вую функ­ци­о­наль­ность. Стра­ни­цы не пере­ли­сты­ва­ют­ся или ещё что подоб­ное. Все нын­че пишут под две плат­фор­мы: Хро­мо­об­раз­ное или Сафа­ри. При всей моей непри­яз­ни к раз­ра­бот­чи­кам веб-сай­тов мне слож­но их винить — при коли­че­стве поль­зо­ва­те­лей под Фаер­фок­сом менее 5% слож­но от них тре­бо­вать писать толь­ко так, что­бы и под ним тоже рабо­та­ло.

Фаер­фокс так­же исклю­чи­тель­но кри­во рабо­та­ет под Линук­сом. Вот он ниче­го не делая, про­сто будучи запу­щен­ным, отжи­ра­ет серьёз­ный ресурс у про­цес­со­ра. Чего он там дела­ет — загад­ка, осталь­ные-то бра­у­зе­ры рабо­та­ют нор­маль­но! Даже Эдж рабо­та­ет про­сто заме­ча­тель­но. Ага, Эдж есть под Линук­сом! При­кинь­те, ком­па­ния Мик­ро­софт выпус­ка­ет вер­сию сво­е­го бра­у­зе­ра под Линукс. Рас­ска­жи мне это в каком-нибудь 1999 году, я бы толь­ко паль­цем у вис­ка покру­тил. Одна­ко у Мик­ро­соф­та нын­че с Линук­сом любовь — что мне нра­вит­ся, так как я, навер­ное, про­цен­тов 25 сво­ей рабо­ты делаю под WSL. WSL в сто раз кру­че, чем тот же Цыг­вин, пото­му что паке­ты ста­вят­ся по-чело­ве­че­ски, через apt. Что­бы доба­вить пакет в Цыг­вин, надо каж­дый раз setup.exe запус­кать. И обнов­лять­ся так же. Нафиг-нафиг.

В‑общем, Фаер­фокс меня заму­мил окон­ча­тель­но, так что я от него изба­вил­ся. Нет, я пере­шёл не на Хром. Хром я не люб­лю, как и мно­гие дру­гие про­дук­ты ком­па­нии Гугл (напри­мер, ВЕДРОИД этот ваш бого­мерз­ский).

Я пере­шёл на Брейв — сиречь, форк опен­сорс­но­го Хро­ми­ума. Эдж, к сло­ву, тоже форк Хро­ми­ума. И Эдж мне в прин­ци­пе, вполне нра­вит­ся — я поль­зу­юсь им для рабо­ты, так как я уж точ­но знаю, что с мик­ро­соф­тов­ски­ми сай­та­ми он будет рабо­тать нор­маль­но. Это был мой запас­ной вери­ант, если бы Брейв мне не понра­вил­ся.

Брейв пока неплох. Без про­блем вта­щил все мои заклад­ки и даже исто­рию из Фаер­фок­са. Сай­ты все рабо­та­ют, пока всё хоро­шо. Буду наблю­дать.

MIDI-квест или скупой платит дважды

Кто поку­па­ет три раз­ных MIDI гов­ношнур­ка, преж­де чем купить нор­маль­ный — тот я.

Совре­мен­ные музы­каль­ные инстру­мен­ты под­клю­ча­ют­ся к ком­пью­те­ру по USB, изоб­ра­жая интер­фейс USB MIDI. И всё с этим про­сто и понят­но.

Одна­ко ста­рые инстру­мен­ты име­ют пятиштырь­ко­вый разъ­ём MIDI, и под­клю­чать их надо через пере­ход­ни­ки MIDI->USB. Так вот, если возь­мё­тесь такое делать, послу­шай­те мой доб­рый совет — не поку­пай­те дешё­вые. Деш­ман­ские шнур­ки либо не рабо­та­ют вовсе, либо внут­ри них сто­ит настоль­ко про­стень­кий мик­ро­кон­трол­лер, что он про­сто не успе­ва­ет обра­ба­ты­вать посту­па­ю­щие дан­ные. Осо­бен­но это каса­ет­ся MIDI бара­ба­нов, где часто игра­ет­ся одна и та же нота, мно­го раз за секун­ду (дробь).

Един­ствен­ный шну­рок, спо­соб­ный обра­бо­тать MIDI сиг­на­лы мое­го TD10 с такой ско­ро­стью — род­ной Ролан­дов­ский.

Я дол­го жад­ни­чал, пото­му что он сорок дол­ла­ров сто­ит 🙁 А вот не надо было. Вот и полу­чи­лось, что ску­пой пла­тит два­жды, пря­мо как в посло­ви­це.

Зато теперь мож­но играть на бара­ба­нах через EZDrummer на лап­то­пе, если нор­маль­ная зву­ко­вая кар­та, под­дер­жи­ва­ю­щая ASIO — без задер­жек вооб­ще.

Дырень

Читаю опи­са­ние нуле­вой дыр­ки в Аут­лу­ке и толь­ко тихо фигею.

Нет, вы поду­май­те сами:

1. Мож­но напи­сать спе­ци­аль­ным обра­зом сге­не­ри­ро­ван­ное пись­мо.
2. В этом пись­ме мож­но ука­зать, что уве­дом­ле­ние об это пись­ме долж­но быть инди­ви­ду­аль­ным (кастом­ный зву­ко­вой файл). Поль­зо­ва­те­лю даже не нуж­но это пись­мо откры­вать.
3. Этот файл с уве­дом­ле­ни­ем может быть любым.
4. В том чис­ле — он может нахо­дит­ся по UNC пути, к кото­ро­му надо прой­ти по про­то­ко­лу SMBv3.
5. Сер­вер с фай­лом может нахо­дит­ся где угод­но, в том чис­ле — в интер­не­тах, хрен зна­ет, где.
6. При попыт­ке про­чи­тать файл с сер­ве­ра в UNC, может воз­ник­нуть необ­хо­ди­мость авто­ри­зо­вать­ся.
7. Что­бы авто­ри­зо­вать­ся, Вин­да посы­ла­ет сер­ве­ру NTLM хеш паро­ля поль­зо­ва­те­ля.
8. PROFIT!!!!

Рех­нуть­ся. Какой дур­дом.

PS: Обя­за­тель­но при­крой­те на бран­дау­э­ре порт 445 на выход. Вред­ным не будет в любом слу­чае, даже если обнов­ле­ние уже постав­ле­но.