Кой още има принос, за да се стигне до убийството на Георги Кузев?

Post Syndicated from Светла Енчева original https://www.toest.bg/koy-oshche-ima-prinos-za-da-se-stigne-do-ubiystvoto-na-georgi-kuzev/

Кой още има принос, за да се стигне до убийството на Георги Кузев?

Обществената памет е къса. Новите скандали и трагедии изместват вниманието от предишните, а ако нови няма, винаги може да се претопли нещо старо. Убийството на Георги Кузев на Младежкия хълм в Пловдив на 4 септември 2026 г. от група непълнолетни обаче все още е относително актуално. И за него трябва да се говори, за да не потъне и тази тема в социалната амнезия. Защото линчуването (онова, на което е бил подложен Кузев, е именно линч) на човешки същества в България от омраза не е някакъв чудовищен акт, дошъл от нищото. Нито пък прецедент. То е поредната проява на тенденция, която в известен смисъл се официализира.

Посочените досега (освен извършителите)

Няма спор, че конкретните виновници за убийството на Георги Кузев са тийнейджърите – „ловци на педофили“, които са го пребили до смърт, гаврили са се с него, заснели са всичко, обрали са го. И горди, че са свършили нещо общественополезно, са се почерпили с дюнери, купени с откраднатите пари. Възниква обаче въпросът как се е стигнало дотам; как подобно престъпление е станало възможно.

Социалните мрежи

За радикализацията на деца е най-лесно да се обвинят социалните мрежи. Не че за това няма основания. Социалните мрежи създават „балони“, в които реалността се представя по определен начин, а авторитетът на лидерите на мнение в съответния балон изглежда безвъпросен. Това улеснява раждането и организирането на радикализирани групи. Общуването в интернет често остава сляпо за уязвимостта на другия, а онлайн тормозът може да има последици, стигащи далеч.

Когато сочим с пръст социалните мрежи обаче, най-лесно е да поискаме забраната им за деца до определена възраст. Но да оставим настрана факта, че децата ще си намерят начини да я заобикалят и че притежават достатъчно дигитална грамотност да си направят свои тайни мрежи, където предпоставките за радикализация да са още по-големи. По-сериозният проблем е, че хвърлянето на вината върху технологиите измества отговорността от възрастните, които са допринесли за това деца да започнат да раздават правосъдие.

Семейството

Обичайна практика е отговорността за проблемите с деца да се прехвърля върху семействата им. Чували сте твърдения като „Най-важно е семейството“, „Всичко зависи от семейството“ и т.н. – все едно дали става дума за лоши образователни резултати на децата, проблеми с дисциплината, отпадане от училище, агресия и пр.

Очаквано, появиха се аргументи в този дух и във връзка с убийството на Георги Кузев. Социалната министърка Наталия Ефремова се оплака, че част от родителите на извършителите нямат доверие в социалните служби и отказват съдействие. В социалните мрежи някои от тези родители бяха идентифицирани и демонизирани, а политическите им предпочитания – извадени на показ (в „Тоест“ няма да ви предоставим връзки към тези постове от етични съображения).

Не че родителите не носят отговорност – носят, или поне тези от тях, които са възпитавали децата си не в емпатия, а в омраза и „раздаване на справедливост“ със сила. Но и техните ценности не са се взели от нищото.

Родителите на днешните тийнейджъри са децата на 90-те.

Те са се формирали като личности в онези смутни времена на бедност, мутри, хиперинфлация и… скинари (наричаха ги още „бръснати глави“). В България ги имаше още от началото на 90-те – когато не само социални мрежи, а и интернет нямаше. За тях беше известно, че мразят пънкарите (каквито също имаше в изобилие) и като ги срещнат, ги бият – конфликт между тези две субкултури, привнесен от Великобритания.

Ала скинарите мразеха и други групи хора, особено ромите. През 1995 г. група от около 60 скинове нападна ромски къщи в Плевен и запали една от тях с възгласи: 

Ще ви изгорим живи! 

Година по-късно седмина тийнейджъри скинари от Шумен убиха 28-годишен ромски младеж – футболист в местен селски отбор, който просто си вървял по пътя. Следват още убийства. Едно от тях – на 15-годишния Методи Райнов, отново от група скинари, е деветият известен случай на смърт, причинена от расистко насилие, в България след 1989 г.

Ще попитате къде са били институциите. През 90-те те не само не разпознават престъпленията от омраза (не че днес ги разпознават особено), ами понякога ги и извършват. Към началото на 2000 г. в Европейския съд за правата на човека в Страсбург са заведени пет дела срещу България за малтретиране на роми от страна на полицейски служители. При четири от тях малтретираните са починали. Една от жертвите е Славчо Цончев, пребит в плевенското полицейско управление през 1994 г.

Може би ще си зададете въпроса и за родителите на скинарите от 90-те. Те са хора, формирани по времето на социализма, с все още пресни спомени за мащабното етническо прочистване, наречено Възродителен процес. А някои от тях може и лично да са участвали в него или най-малкото да са го подкрепяли идеологически.

С течение на времето радикализираните младежки групи се множат, делят и преплитат, както и социалните групи – обект на омразата им. Клошари, африканци, гейове, бежанци и т.н. и т.н., докато се стигне до „педофилите“.

Педофилията, срещу която се протестира, и педофилията, за която се мълчи

Гражданският гняв, изразяващ се в протести срещу насилието над деца и срещу неработещата държава, е абсолютно оправдан. Но е важно, когато си отваряме очите за едно, да не ги затваряме за друго. От Светла Енчева.

„Кръв и чест“

Убийството на Георги Кузев извади на показ българския клон на неонацистката организация „Кръв и чест“, чието ядро е в Пловдив – точно срещу Младежкия хълм, където е убит Георги Кузев. Това стана, след като покрай смъртта на Кузев стана известен друг акт на насилие в Пловдив, извършен десетина дни по-рано – побой над непалски гражданин от скинари (за поне един от извършителите има данни, че е повлиян от „Кръв и чест“). В резултат бяха арестувани 18 души от крайнодясната организация, а на трима от тях бяха повдигнати обвинения.

Досега не е установена пряка връзка между убийството на Кузев и „Кръв и чест“, макар в миналото групата да е извършвала нападение (срещу ром) на Младежкия хълм. Неонацистката организация развива дейност в България от четвърт век и се свързва дори с бомбен атентат в Сандански, при който загива мъж от ромски произход. Така че когато и да се захванат с нея институциите, все ще е късно. Но в случая с Кузев като че става въпрос по-скоро за отвличане на вниманието, както отбелязва и проф. Калин Янакиев. Темата се измества от руската връзка – „ловците на педофили“, вдъхновени от Максим Марцинкевич, известен с прозвището Тесак – към движението с британски произход „Кръв и чест“.

Медиите

Убийството на Георги Кузев извади на показ и отговорността на определени медии за героизирането на т.нар. ловци на педофили. „Тоест“ обърна внимание на проблема още през 2021 г., след като NOVA излъчи репортаж на Лора Крумова за децата „ловци на педофили“ в България и техния предводител и вдъхновител Ален Симеонов, и след репортаж на bTV за тийнейджъри „герои“, осъществили граждански арест на шофьор, който е причинил катастрофа. В репортажа на Крумова се показва и как Симеонов се гаври с уловените, например залива ги с урина. Тогава спестихме името му, защото беше още непълнолетен. Но предупредихме:

Ако деца и младежи подлагат на унижения и сами ловят „лошите“, за което получават похвали и награди, не е ли логично да започнат да линчуват и да екзекутират? Все в името на справедливостта. Да не забравяме, че и терористичните актове се извършват от чувство за справедливост – от сляпа вяра в някоя идеология и от убеждението, че тя стои над законите и правилата, над човешкото достойнство и човешкия живот.

През същата 2021 година Ален Симеонов стана герой и на позитивни материали на „Евроком“. В един от тях се представя като „парадокс“, че той е задържан от полицията, а „насилниците“ са на свобода. Следва интервю на Люба Кулезич с него и влогъра Станислав Цанов.

През 2022 г. медии, включително БНТ, разпространяват информация за 21 членове на педофилска мрежа, задържани „благодарение на действията на така наречените ловци на педофили“.

През следващите години Симеонов спорадично става медиен герой, но през 2026 г. вниманието към него е особено голямо. През февруари например подкастът на вестник „Телеграф“ излъчва интервю с него, озаглавено „Ален Симеонов: Хванал съм повече педофили от МВР“, което е отразено и в сайта на NOVA. През юли, по-малко от месец преди убийството на Кузев, в предаването „Офанзива“ на NOVA NEWS с Любо Огнянов и в интервю на Диана Радева по Euronews Bulgaria Ален Симеонов представя книгата си „Училище за лов на педофили“.

Новите тимуровчета

Статията на Светла Енчева е провокирана от няколко случая на самоинициативи, при които деца раздават „правосъдие“ по собствена преценка. Особено тревожни са медийното им героизиране и подкрепата от…

Непосочените

Освен посочените непреки виновници, за да се стигне до убийството на Кузев, други засега остават на сухо. Става въпрос за държавата – и като институции, и като политика.

Институциите

Каквото и да кажем за отговорността на институциите, няма да е достатъчно.

Да започнем от образователната система. Тя възпитава, както и по времето на късния социализъм, основно в национализъм. И то такъв, който, освен че е фиксиран в едно идеализирано минало, внушава, че най-достойно е да се биеш и да умираш за родината. Това, на което образованието ни не учи, е емпатия, зачитане на човешкото достойнство, включително на другите, чуждите, „неправилните“. В резултат всяка проява на омраза срещу определена група лесно може да бъде облечена в патриотични аргументи и така да изглежда легитимна в очите на мразещите. Децата „ловци на педофили“ вероятно са били убедени, че вършат родолюбиво и общественополезно дело.

Не по-малка е отговорността и на институциите – като се почне от структурите за закрила на детето на местно равнище, мине се през полицията, правосъдната система и се стигне чак до разузнавателните служби – които не са разпознали радикализацията и не са предприели твърди мерки, за да я ограничат. В продължение на пет години Ален Симеонов дефилира из медиите, а в социалните мрежи е отпреди това. Бил е и арестуван, срещу него са повдигани обвинения. Но… дотам. Междувременно пред очите на всички е създадена цяла мрежа от тийнейджъри, обучени да „ловят педофили“ и да се саморазправят с тях.

От друга страна обаче, институциите носят отговорност и за това, че системно не разпознават сексуалното насилие над деца и не вземат достатъчно мерки срещу него. Както установи журналистическо проучване на Теодора Станимирова, институциите, които трябва да се борят със сексуалното насилие срещу деца, на практика не го познават. И събират данни по начин, който не им помага да го разберат по-добре. А понякога не го виждат, дори да е пред очите им. Така става лесно някои подрастващи да решат, че трябва да вземат нещата в свои ръце, особено ако разполагат със „светли примери“ като Ален Симеонов и Тесак.

Какво (не) знаем за сексуалните злоупотреби с деца

Какво знаят институциите за сексуалните злоупотреби с деца в България и какви мерки предприемат? Теодора Станимирова се сдоби с информация от ВСС, МВР, АСП, ДАЗД и МЗ, разговаря с експерти и ни разказва какво е научила.

Политиците

Отговорността на политическите сили е особено сериозна. Не само защото от тях зависи как работят институциите, макар че и заради това. Всички парламентарно представени партии от 2023 г. насам обаче имат основен принос за официализирането на дехуманизацията. Без да пропускаме и „Прогресивна България“, защото в качеството си на президент Румен Радев не наложи вето върху законите, за които ще стане дума по-долу. А от дехуманизацията към физическото унищожение крачката е малка.

Татяна Ваксберг дава следната дефиниция на дехуманизацията

представянето на група хора не като сбор от индивиди, а като аморфна маса, несъвместима с обичайните човешки черти и неспособна на човешки чувства.

От тази дефиниция не следва, че представителите на всички групи – обект на дехуманизация, на всяка цена трябва да са добри хора. Някои може да са и престъпници и е редно да понесат отговорността си. Но дори те притежават основни права, например правото на живот и достойнство и правото да не бъдат подлагани на унижения. Така пише и в Конституцията на България:

  • „издигаме във върховен принцип правата на личността, нейното достойнство и сигурност“ (преамбюл);
  • „Република България гарантира живота, достойнството и правата на личността“ (чл. 4, ал. 2);
  • „Всеки има право на живот. Посегателството върху човешкия живот се наказва като най-тежко престъпление“ (чл. 28);
  • „Никой не може да бъде подлаган на мъчение, на жестоко, безчовечно или унижаващо отношение“ (чл. 29, ал. 1).

Не изглежда обаче политическите сили да вземат под внимание тези текстове. Нещо повече – партиите в парламента послушно следваха дневния ред на Ален Симеонов, който пък съвпада с този на „Възраждане“ и на ултраконсервативната организация „РОД Интернешънъл“ – същата, която се бори срещу „джендъра“ и „София прайд“. Скоро след убийството на Кузев от сайта на РОД изчезна публикация от 2021 г. със заглавие „Защо ни е необходим Ален?“, но нейно архивно копие още е достъпно. В статията се казва:

България е една от малкото страни, в които няма регистър на педофилите. Този регистър съдържа данни за лицето, адрес на пребиваване, престъплението, за което е осъден и най-важното – негова снимка.

Когато през лятото на 2023 г. законопроектът на „Възраждане“ за регистър на педофилите беше подложен на гласуване, всички парламентарни групи с изключение на ДПС го подкрепиха, а депутатите, които се отклониха от вота на партиите си, бяха единици. Божидар Божанов (днес съпредседател на „Да, България“) заяви от парламентарната трибуна, че темата е „консенсусна“. Така думата „педофилия“ влезе в българското законодателство, без да съществува ясна правна дефиниция за нея.

Наистина ли им пука за децата?

Светла Енчева с паралел между два нашумели случая, в които са намесени деца. В единия ги намесиха от „голяма загриженост“, но без реална нужда, институциите и политиците, а в другия пак институциите и политиците си затварят очите за истинския проблем – насилие над малко дете от учителката му.

На 19 февруари 2026 г. (символично – на датата на обесването на Левски) на парламента му трябваха точно три минути, за да приеме на две четения и с пълно мнозинство решението регистърът на педофилите да стане публичен. Освен в България, в ЕС подобен закон има само в Полша. Това стана в контекста на трагедията в Петрохан и Околчица, при която загинаха шестима души, включително 15-годишен тийнейджър, а за покойния лидер на групата Ивайло Калушев се появиха твърдения, че има сексуална склонност към непълнолетни момчета.

Случаят беше използван (и още се използва) като компромат срещу ПП, ДБ и кмета на София Васил Терзиев, макар да няма данни някой от тях да е бил наясно с евентуалните сексуални предпочитания на Калушев. И макар депутатите от ПП и ДБ послушно да гласуваха популистката поправка, това не ги спаси от активното мероприятие, състоящо се в инсинуации, че те поддържат „педофилска секта“ и „педофилско НПО“.

В началото на март 2026 г. пък парламентът прие по предложение на ДПС, отново единодушно, вдигане на възрастта за съгласие за секс от 14 до 16 г. Може да предположим, че това отново има връзка с трагедията с петроханската група – убитото момче е на 15 години, а единственият човек, който публично твърди, че е имал сексуална връзка с Калушев, казва в интервю с Мария Черешева, че интимните отношения са започнали, когато е бил навършил 15 г. Така с промяната на възрастта на съгласие Калушев посмъртно е произведен в педофил.

На позорния стълб

Темата „педофилия“ е достатъчно токсична, за да накара политиците да изглеждат единодушни. Така без особени колебания парламентът направи част от „регистъра на педофилите“ публична. Но предпазва ли това децата, или просто превръща страха в удобен политически инструмент? От Светла Енчева.

Не знаем дали Георги Кузев се е интересувал от политика и е следял новините. Ако не е, може така и да не е разбрал, че сексуалните отношения с 15-годишни тийнейджъри, като каквато се е представила „примамката“, вече са незаконни. Да, непознаването на закона не е извинение за неспазването му. Но независимо дали е знаел, нищо не оправдава линчуването.

Дехуманизацията ми е по-добра от дехуманизацията ти

Убийството на Георги Кузев е червена лампа, че в България имаме сериозен проблем с дехуманизацията. Би следвало на партиите да им светне, но уви. По-силен е урокът, който те са си извлекли от петроханската трагедия. А той е, че дехуманизацията е ефективно оръжие за разправа с политическия противник. Затова я вкарват в обращение в президентската надпревара.

ПП и ДБ вадят карта против Илияна Йотова –

факта, че тя е помилвала „българския Ескобар“ – наркобоса рецидивист Огнян Атанасов. Помилването се основава на медицинска експертиза, според която той е почти на смъртно легло поради паркинсон. След помилването му обаче „умиращият“ отново е хванат с наркотици. А председателят на ПП Асен Василев обръща внимание, че от 28 помилвани от Йотова петима са осъдени за наркотрафик.

И така, от доскорошната коалиция започват да споменават Йотова в комплект с думи като „наркодилъри“, „наркобарони“, „наркобосове“, „българския Ескобар“. Това внушава, че никой осъден за търговия с наркотици при никакви обстоятелства не заслужава помилване.

А актът на Йотова е дълбоко проблематичен, но по други причини. Първо, тя се оправдава с медицинската експертиза, макар да носи отговорност за решението. Второ и по-важно, към момента на помилването Атанасов не е бил в затвора (отново заради експертиза за здравословното му състояние). Така че и да допуснем, че наистина е бил на смъртно легло, помилването с нищо не е облекчило състоянието му. Ала влизането в такива тънки уточнения не носи точки, когато си в предизборна кампания.

От противниковия лагер пък отговарят с „претопляне“ на петроханската тема.

Само така може да се обясни пресконференцията, на която не бяха представени нови факти, но бяха направени куп внушения и квалификации. В главната роля беше криминалният психолог Росен Йорданов, според когото Калушев „отговаря на 100% от всички възможни критерии за преференциален, седуктивен, сексуален насилник“. И публично се говореше за сфинктери, включително за този на убитото дете. Отделен проблем е несъответствието на внушенията за анален секс с резултатите от медицинските експертизи на убитите край Околчица, извършени през февруари.

Скоро след пресконференцията „Епицентър“ и ПИК публикуваха експертиза за Петрохан и Околчица, съдържаща дори личните данни на деца, които може да са в уязвима ситуация. Но „всичко е в името на децата“, нали. Да не помислите, че е заради предизборната кампания. Апропо главната редакторка на „Епицентър“ Валерия Велева беше в инициативния комитет за президентската кандидатура на Йотова, но в резултат на скандала за нарушаването на журналистическата етика, последвал публикуването, тя се оттегли и комитетът се отрече от нея.

Картата с Петрохан беше използвана и от премиера Румен Радев, който употреби първия учебен ден, за да говори за „НПО, свърталище на педофили“ – стреляйки не само срещу политическите си противници, а и срещу неправителствения сектор.

Палачинката на дехуманизацията има свойството да се обръща.

Това вече изпитват на свой гръб младежите, гаврили се с Георги Кузев до смърт. Довчера се борят с „изроди педофили“, а днес тях наричат „изроди“. Друг въпрос е дали този опит би ги довел до осъзнаване на вредността на дехуманизацията. И съвсем различен въпрос – дали Ален Симеонов ще си вземе бележка.

Впрочем забелязахте ли, че той не беше сред посочените непреки отговорници за смъртта на Кузев? Това не е случайно – Ален Симеонов заслужава не параграф, а отделна статия. Която предстои.

На второ четене: „Белези“

Post Syndicated from original https://www.toest.bg/na-vtoro-chetene-belezi/

„Белези“ от Ойдур Ава Олафсдотир

На второ четене: „Белези“

превод от исландски Светла Стоянова, София: изд. ICU, 2025

Съществуват базови правила за отношението към човек в депресия: не омаловажаваме състоянието му; не изтъкваме житейски обстоятелства, поради които би следвало да се чувства щастлив и благодарен на съдбата; не посочваме за пример други хора, които са в много по-тежко положение, но се справят по-добре. Перифразирайки Толстой, Ойдур Ава Олафсдотир пише, че

всяко страдание е различно и затова не може да се сравнява.

Белезите, които оставя – също. И все пак…

И все пак, противно на горните твърдения, исландската авторка на романа „Белези“ поставя героя си – мъж на средна възраст, изпаднал в дълбока екзистенциална криза след развода и наученото за дъщеря си – именно в ситуация, в която състоянието му бива дискретно съпоставено с едно „по-убедително“ и смиряващо чуждо нещастие – и в личен, и в колективен план. Така както по-силният удар отнема усещането за друга, по-малка болка преди него, така и Олафсдотир обезсилва нагона на протагониста си към смъртта, изправяйки го пред нейните реални поражения в едно фикционално общество. Противно на стереотипните ми читателски очаквания подобен скандинавски роман да бъде мрачен и суров до цинизъм, „Белези“ всъщност изненадва с нежно-меланхоличната си атмосфера и жизнеутвърждаващите си послания.

За целта Олафсдотир създава образа на една анонимна, но очевидно европейска страна, поразена от последиците на бушувала цели пет години война, вероятно гражданска. За да не натовари със смъртта си своята дъщеря, героят Йонас Ебенесер заминава за това най-опасно, най-отзивчиво на Танатоса място, където всяка стъпка все още е минирана и унищожението дебне зад всеки ъгъл.

Правя любопитното уточнение, че романът излиза през 2016 г., но този въображаем топос зловещо напомня за случващото се от години в Украйна. В подобни сюжети много западни романи/филми имат уклон да преувеличават и да описват едни доста по-зрелищно и потискащо антиутопични тоталитарни структури, тип източноевропейски, в които обикновено се подвизават недостоверни, изопачени и елементаризирани общества. Въпреки някои сюжетно насилени съвпадения и неправдоподобности обаче (по скоро тип недомислени пропуски), исландската авторка ни отвежда в едно зловещо познато ни днешно място – да, това е нашата цивилизация, нашите институции, нашият културно-туристически облик, нашият тип хора. То е като някоя от страните, до които преди пет лета вероятно сме пътували или ходили на плаж. Трудно е да приемем (май още не сме го постигнали докрай дори по отношение на Украйна), че това наистина се е случило там – войната звучи абстрактно, така и не става ясно каква точно политика е довела до нея и най-вече кой и къде е врагът, ако всички, които срещаме, са само жертви (дали?).

Насред повсеместната разруха в наскоро настъпилото примирие, когато са плъзнали крадци на артефакти и бизнесмени, които се надяват да препостроят държавата, подобно вирус, главният герой внася и своя личен себеразрушителен импулс. Йонас идва без багаж (с изключение на бормашината си) и се оказва един от тримата гости на западнал хотел, държан от брат и сестра, които се надяват някой ден туристите да се завърнат. Именно там последните дни, отредени да приключи със себе си, се превръщат в началото на едно оздравително не само за него, но и за непосредствената общност начинание. Тази трансформация става с натрупване, с пренасочване на вътрешния самоубийствен импулс към „поправките“ на завареното външно положение – кран по кран и крушка по крушка, докато накрая Йонас, който умее да прави какво ли не, се превръща в търсен от всички наоколо майстор.

Може и да ни се вижда пределно ясна метафората за задължителните „малки всекидневни стъпки“ към психическото възстановяване, но симпатичното е, че

Олафсдотир ни оставя в удовлетворението от дословното – Йонас работи с ръцете си, той съвсем буквално поправя жичките и прозорците на реалността, прочиства наносите и затяга предметите.

Макар често тези думи да са взаимнозаменяеми, смисълът тук не е толкова в баналната причина/основание за живеене (нещо вече съществуващо, постигнато), а в намирането на цел (нещо предстоящо, неизвестно). Поправимостта не значи път към същото, към възстановяването на предишното – така както раната не може да зарасне, като изчезне напълно, а само оставяйки белег. Поправимостта е понасянето на този белег и създаването на нещо трето, със/във което да се съгласиш да продължиш да съществуваш.

… ако някой има голям и впечатляващ белег, то означава, че е погледнал страха в очите, изправил се е срещу дивия звяр и е оцелял.

На второ четене: „Белези“

Без да се поддава на скандинавския фаталистичен ноар, но и надскачайки опасността романът да зазвучи поучително, сантиментално или опростенчески катарзисно, исландската авторка – както сама пише в бележката си към българските читатели – все пак превръща този разказ в

книга за оцеляването, изцелението и способността да започнеш отначало.

В изследване на смисъла на добротворчеството и на въпроса

дали един обикновен човек може да съдейства с нещо, за да се претвори счупеният свят, за да промени и самите нас.

Спасение? Не, това е твърде грандиозна дума. Може би просто предаване на ритъма на конкретността, на минималните действия, сами по себе си едва ли не безсмислени и незабележими в контекста на голямото. Само че не.

В романа има изобилие от повтарящи се мотиви и символи – белезите, кожата, птиците, благодарността, мълчанието/тишината (неслучайно името на английския превод на книгата е „Хотел Тишина“), в които се преосмисля миналото и се подготвя изричането на бъдещето, и т.н. А една от най-устойчивите дихотомии е тази за мъжкото и женското.

Цяло поколение мъже са се избили един друг във войната, затвърждавайки архетипния образ на мъжа като разрушител, завоевател, насилник и убиец. В създалия се вакуум Йонас се налага като ироничен контрапункт – той е мъж, който „по-скоро би бил убит, отколкото да убие някого“, който е готов преди всичко да убие себе си. Мълчаливият исландец се е научил да прави почти всичко с ръцете си и винаги е откликвал на молбите на трите женски образа в живота си („ако някой ме попита защо го правя, отговарям: защото жена ме помоли“); той е чувствителен и колебаещ се (мисли над всяка дума от прощалното си писмо и по принцип); водил си е дневници и е чел много; следвал е философия, преди да поеме завода на баща си (книгата изобилства от препратки и цитати – от Ницще и Хайдегер до Ман и Бишъп). Абсолютно верен се оказва разказът на майка му за него като дете, който предизвиква неудобството му:

Видеше ли птица със счупено крило в градината, направо ревваше… Беше страшно чувствителен… постоянно се тревожеше, че хората не са достатъчно добри едни с други… Заричаше се, че като порасне, ще утеши света… защото светът страда толкова много…

В крайна сметка Йонас не се учи тепърва на грижа и отговорност, а по-скоро успява да открие нов, достатъчен адресат за тях. Уменията му го превръщат в архетип на лечителя, поправящия, градящия насред руините от военния конфликт. Докато мъжете се „размотават, пият и водят войни“ (според съседа Сванюр, обсебен от темата и статистиките за домашното насилие, половото неравенство, женското страдание и права, и изобщо от темата за справедливостта), Йонас започва да преустроява къща, в която ще живеят седем жени – колкото са и белезите му по рождение. До степен, в която на няколко пъти ще получи предупреждение, че това е съмнително и неугодно за мнозина – разбира се, мъже. Ала с действията си, той ще уважи думите на своя съсед в Рейкявик:

Онези, които знаят и не правят нищо по въпроса, са най-лошите.

Въпросният съсед Сванюр е един от двата интересни второстепенни образа в романа, замислени като своеобразен контрапункт (заедно с майката на Йонас). Той е единственият външен на семейството човек, с когото Йонас има някаква форма на общуване. Бъбрив, лапидарно декларативен дървен философ, който говори с винетки и труизми и носи тениска с надпис Shit happens. Еднозначен и лишен от способност да се изразява с метафори (според Йонас), той всъщност ще ни опровергае като човека, произнесъл някои от най-валидните истини, и ще ни изненада с тих, но крайно неочакван обрат, чрез който ще преосмислим поне донякъде образа му, ще приемем, че може би именно такива хора понякога дискретно разбират какво преживява другият, и му дават знаци и грижа, макар и по своя нелеп начин. Именно Сванюр е и източник на голяма част от ироничната нотка в този роман, която саботира възможността за прекомерна драматичност предвид темата. Той е човекът, който пита „искаш ли да ти покажа белега си“, имайки предвид среза от операцията на дисковата си херния, когато очакваме някакво възвишено-фигуративно разбиране за тази дума. Пак той:

– Хората мечтаят за прости неща – беше казал Сванюр. – Да не бъдат застреляни излишно и децата им да помнят родителите си.

Майката на Йонас – бивша учителка по математика, чийто рационален ум, свикнал да борави с точни цифри и факти, постепенно се предава на деменцията – пък е обсебена от темата за войните. Тя непрекъснато чете за миналите и очаква настоящи, макар парадоксално да живее в общество, от векове пощадено от военни конфликти. Нейното възприемане обаче минава през подробното познаване на фактологията и статистиката, не през онова, което нейният син ще познае – личната човешка история от първа ръка на младата жена и роденото ѝ във война и познаващо само нея момче. За майката на Йонас „голямата история е почнала много преди да се родим“, а всички базови книги за оцеляването през Втората световна война, всички истории са само илюстрация на това обективно и безстрастно знание. На този фон са поразителни, но не и изненадващи реакциите ѝ, лишени от състрадание и любов (да, най-вече от болестта, но…), в следните два разговора със сина ѝ, опитващ се да сподели състоянието си с нея:

– Нещастен съм.
Тя ме потупва по ръката.
– Всички имаме своите битки – казва и добавя: – Наполеон е бил в изгнаничество от самия себе си. Жозефин е била изоставена в брака си като мен.

– Не искаш ли да живееш, момчето ми?
– Не съм сигурен.
– Поне все още имаш коса. Мъжете от моя род не губят косата си.

И ето този натрапващ се контраст: в сигурен и подреден свят съзнанието се разпада и парадоксално търси структура през цифрите на войната, докато насред разрухата в анонимната страна душата на Йонас започва да се подрежда.

Трябва да оставиш багажа си, за да се изпълниш наново, ни казва този роман, в който Йонас (чието име според майка му значи „гълъб“ на иврит) е Ноевият гълъб, открил суша след Потопа. Умно ироничен на точните места, богат на интертекстуалност, преодоляващ патетиката отвъд „човешко, твърде човешкото“ (по любимия философ на Йонас), книгата ни предоставя поглед върху белезите, оставени по кожата както на отделния човек, така и на общността. Знаци колкото за поражението, толкова и за факта, че болката под тях е започнала да си отива или вече е преодоляна. И макар неизбежно да мерим болките и да сравняваме личните си истории (вероятно и да изпитваме същото неудобство, което изпитва Йонас, съпоставяйки нежеланието си да живее с радостта и благодарността на новите си приятели от всяко негово проявление насред оцеляването), Олафсдотир в крайна сметка не зачерква значението на едните белези, а просто ги вписва и скрива в другите. Също както красивата татуировка на Йонас пази сърцето му.


Никой от нас не чете единствено най-новите книги. Тогава защо само за тях се пише? „На второ четене“ е рубрика, в която отваряме списъците с книги, публикувани преди поне година, четем ги и препоръчваме любимите си от тях. За нея медията „Тоест“ е отличена с Националната награда „Христо Г. Данов“ (2025) за принос в представянето на българската книга.

Рубриката е част от партньорската програма Читателски клуб „Тоест“, благодарение на която активните дарители на „Тоест“ получават 20% отстъпка от коричната цена на всички книги на включените издателства. Изборът на заглавия обаче е единствено на авторите Стефан Иванов, Севда Семер и Антония Апостолова, които биха ви препоръчали тези книги и ако имаше как да се разходите с тях в книжарницата. 

How We Built a Data Warehouse Using ClickHouse

Post Syndicated from Let's Encrypt original https://letsencrypt.org/2026/09/17/clickhouse.html

When the scripts that generate the data for letsencrypt.org/stats broke yet again, we decided to retire it rather than repair it. Let’s Encrypt issues six to ten million certificates each day, producing a large volume of logs that keeps growing. It became increasingly time-consuming and difficult to answer questions about our own issuance like “how many certificates use the ‘shortlived’ profile.” Using raw logs, this requires finding, parsing and extracting relevant portions of loglines. Querying the database behind our issuance API is not a practical option, as it’s built for transactions rather than analysis. We’d also used a log search SaaS product, but our bills were growing much faster than we’d like, and while it was fine for searching, it wasn’t able to do the analytic workloads we needed. We knew we could dream bigger and better.

Daily certificate issuance over the last 180 days
Daily issuance of Let’s Encrypt certificates over the last 180 days

This led us to seek a self-hosted solution with efficient storage for structured data in addition to logs. We chose ClickHouse because of its potential as a data warehouse; the combination of cost-efficient storage and fast aggregation over large datasets appealed to us. A bonus of ClickHouse is that it is open source, a key principle valued by Let’s Encrypt.

The first step in building our new infrastructure was to purchase new hardware. To back our ClickHouse warehouse, we bought three PowerEdge R7715 servers. Each is equipped with a 32-core AMD EPYC 9355P 3.55GHz processor, 384 GB of RAM and 32 × 3.2TB NVMe drives, working out to roughly 100TB raw storage. With structured data and 100 days’ worth of logs already in our database, we are only at ~14% of total capacity, leaving lots of room for future growth.

Logs are the bulk of our storage use and the foundation of our structured data, as every other table we build is derived from them. When it comes to log search, ClickHouse covers our basic needs with quick ingest and interactive SQL. However, there are query ergonomics that we want to improve, like using OpenTechnology’s tracing features and ClickHouse’s tokenization settings.

Our primary target for structured data are our issuance records. A materialized view extracts those records from logs into their own table, and further views pre-aggregate from there. One such view counts issuance by day per profile. Now, questions like “what is our issuance by profile over the last 180 days” can be answered within milliseconds.

Daily certificate issuance by profile over the last 180 days
Daily issuance count of certificates by profile, excluding “classic”, over the last 180 days

We used this approach to completely rebuild the pipeline for our public stats page. The scripts we abandoned used to take hours each day to read and process dozens of compressed data files. The Rube-Goldberg-Machine-like collection of steps failed several times a year, requiring us to intervene and fix it. ClickHouse now computes those same stats in less than 10 seconds. Aside from pre-aggregated issuance tables, we can accomplish this because ClickHouse’s native functions are capable of quick and complex aggregations. Below is a simplified snippet of our materialized view for daily stats, counting the unique set of active domains over months across millions of rows. Two things to point out about this query: array handling means we can query nested fields without reshaping the underlying data, and uniq uses approximations to stay fast at scale.

SELECT
uniq(arrayJoin(arrayMap(x -> x.value, arrayFilter(x -> x.type = 'dns', identifiers)))) AS fqdns_active,
uniq(arrayJoin(etld_plus_one)) AS reg_domains_active
FROM boulder.cert_issuances
WHERE not_before >= yesterday() - 90
 AND not_after >= yesterday()
 AND not_before <= yesterday()

Our ClickHouse issuance data also addresses the previous headache of identifying affected certificates during incidents. It used to take hours of engineer time to correctly scan and parse logs to find the affected set of serials or hours of computing time to return results from database queries, competing with production transactional load. Now, however, there is no log wrestling required, and because queries return quickly, we can iterate toward the right one in minutes rather than hours.

Not everything we needed came with ClickHouse. For scheduled reports, we built our own custom tool that queries ClickHouse and exports formatted results. It cost additional engineering time to design it to fit our needs, but we’ve seen payoffs already. Old reports were clunky to read and required chasing down context by hand. New reports, on the other hand, streamline security reviews via neat formatting and linking directly to relevant pages. The same reporting tool was repurposed for our revitalized stats pipeline as well.

The biggest challenge was backfilling data. While OTel collector handles live log ingestion well for us, it didn’t suit the task of backfilling historical logs. We couldn’t find throttling settings that handled the bulk import reliably – a large portion of files were silently dropped – and the alternative meant breaking up the import by hand. We instead switched to ClickHouse’s native S3 import method, standing up an S3-compatible gateway in front of our old logs to do so. While this avoided the earlier obstacles, this process required trial and error to match ingestion rules to OTel collector’s parsing to ensure the ingested logs matched regardless of whether they were backfilled or streamed in. Two lessons: don’t run bulk historical imports through a streaming collector, and match parsing rules across paths before you start.

One schema decision made these iterations cheap. For tables we anticipated requiring backfilling or recalculation, we deliberately chose the ReplacingMergeTree engine, so re-ingesting corrected rows simply replaced the old ones. This also came in handy for a materialized view computing aggregations across other rows. We got the calculations wrong more than once, and each time all we had to do was re-run the query rather than surgically remove bad rows. For tables without the engine, we did OPTIMIZE TABLE ... DEDUPLICATE BY, which was expensive, but only needed to be run once.

We hope that this is just the start, especially with our shorter certificate lifetimes and post-quantum certificates on the horizon. We plan to take full advantage of our new warehouse, extracting and pre-aggregating data that answers questions other teams care about, the way we did for issuance. Better analysis improves our operations and makes transparency cheaper, as our rebuilt stats page shows.

Active certificates and domains since 2016
Daily certificate issuance stats since 2016

With powerful analytics in hand and only ~14% of our storage in use, we have room to store and analyze more than ever before.

Architecting a secure landing zone in the AWS European Sovereign Cloud

Post Syndicated from Pablo Pagani original https://aws.amazon.com/blogs/security/architecting-a-secure-landing-zone-in-the-aws-european-sovereign-cloud/

The AWS European Sovereign Cloud is a new, independent cloud for Europe, physically and logically separate from existing AWS Regions and operated within the European Union (EU). It provides the same services, features, and APIs as AWS commercial Regions, but runs as a distinct AWS partition (aws-eusc), with its own control plane, AWS Identity and Access Management (IAM), billing, console, and service endpoints. Understanding the partition boundary is the key that unlocks correct answers to questions about billing roll-ups, single sign-on (SSO), cross-account roles, AWS Direct Connect, and image distribution. In this post, we show you how to architect a secure, scalable landing zone in the AWS European Sovereign Cloud. We cover account structure and governance, identity managed as infrastructure as code (IaC), centralized logging to a security and event management (SIEM) tool, data protection, network and perimeter design, secure continuous integration and delivery (CI/CD) and artifact distribution, and incident response. Throughout, we map the design to the AWS Security Reference Architecture (AWS SRA) and the AWS Well-Architected Framework, and we call out which behaviors are platform boundaries of a sovereign partition and which are configuration choices you can adapt.

If you are evaluating compliance readiness alongside your landing zone build-out, see the companion post Landing Zone Accelerator Independent Assessment Report for C5:2020 now available on AWS Artifact. This post covers how to align with C5:2020 criteria and provides an independent assessment report and compliance workbook, resources that complement the architectural patterns described here.

The foundational concept: EUSC is a partition

AWS groups Regions into partitions. Every Region is in exactly one partition, and each partition has one or more Regions. Partitions have independent instances of AWS Identity and Access Management (IAM) and provide a hard boundary between Regions in different partitions. AWS commercial Regions are in the aws partition, Regions in China are in the aws-cn partition, and AWS GovCloud Regions are in the aws-us-gov partition. The AWS European Sovereign Cloud is the aws-eusc partition, with its first Region in Brandenburg, Germany (eusc-de-east-1).

Some AWS services provide cross-Region functionality, such as Amazon S3 Cross-Region Replication or AWS Transit Gateway Inter-Region peering. These capabilities work only between Regions in the same partition. You can’t use IAM credentials from one partition to interact with resources in a different partition. There are practical differences that impact your architecture, shown in the following table:

Dimension Commercial AWS (aws) AWS European Sovereign Cloud (aws-eusc)
ARN prefix arn:aws: arn:aws-eusc:
Console or endpoint domain amazonaws.com amazonaws.eu
AWS Organizations One organization in the partition A separate, independent organization
AWS IAM Identity Center Instance in the partition A separate instance in the partition
Billing Consolidated in the partition’s payer A separate payer and billing system (EUR currency)
Cross-partition features and services such as: sts:AssumeRole, VPC peering, Transit Gateway, AWS RAM, Amazon S3 replication Cross-Region features and functionality Not available across the aws and aws-eusc boundary

Every AWS Region is sovereign by design: if you find yourself architecting across Regions, note that this partition boundary means that the centralization—one organization, one logging account, one identity source, one billing roll-up—is achievable within each partition. In the EUSC you operate an independent landing zone in aws-eusc that mirrors your commercial operating model. Where you need to bridge the two clouds (for example, a standard application CI/CD system in an AWS commercial Region deploying into EUSC), you integrate at the network or API layer with separate credentials for each partition, not with cross-partition trust. With these partition fundamentals in mind, the remainder of this post walks you through the considerations to build a production-ready landing zone in the EUSC. Each section addresses a critical layer of the architecture, starting with how to write partition-aware infrastructure code that works across both aws and aws-eusc, then moving into the organizational and governance controls that underpin everything else.

Cross-partition IaC

These Terraform and AWS CloudFormation IaC snippets demonstrate partition-aware Amazon Resource Name (ARN) construction—a pattern that helps ensure your infrastructure code works unchanged across AWS partitions (such as standard aws, GovCloud aws-us-gov, or European Sovereign Cloud aws-eusc).

In the case of using the same Terraform script from a commercial Region, ensure that arn:aws isn’t hard coded. This Terraform script derives the partition at deploy time so the same modules work in both AWS commercial Regions and the EUSC.

# Terraform: partition-aware ARNs (works unchanged in aws and aws-eusc)data "aws_partition""current" {}
data "aws_partition" "current" {}
data "aws_region" "current" {}
data "aws_caller_identity" "current" {}
data "aws_organizations_organization" "current" {}

locals {
partition = data.aws_partition.current.partition# "aws" or "aws-eusc"
account_id = data.aws_caller_identity.current.account_id
org_id= data.aws_organizations_organization.current.id
ecs_task_execution_policy_arn = "arn:${local.partition}:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
central_logs_bucket_arn= "arn:${local.partition}:s3:::${local.org_id}-central-logs"
}

resource "aws_iam_role" "amazon_ecs_role" {
  name = "AmazonECSrole"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Sid= ""
        Principal = {
          # IAM service principals are "amazonaws.com" across all partitions,
          # this stays literal (do NOT use ${AWS::URLSuffix} here).
          Service = "ecs-tasks.amazonaws.com"
        }
      },
    ]
  })
}

resource "aws_iam_role_policy_attachment" "amazon_ecs_role_attach" {
  role= "AmazonECSrole"
  # Use ${local.partition } rather than hardcoding "aws" in the ARN.
  policy_arn = "arn:${local.partition}:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
}

# CloudFormation: use the AWS::Partition pseudo parameter, never a literal "aws"

AWSTemplateFormatVersion: "2010-09-09"

Description: >-
Creates an ECS task execution role. Demonstrates using the
${AWS::Partition} pseudo parameter in ARNs instead of hardcoding "aws",
so the template works across partitions (aws, aws-cn, aws-us-gov, aws-eusc).

Resources:
  ExecRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: AmazonECSroleCF
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                # IAM service principals are "amazonaws.com" across all partitions,
                # so this stays literal (do NOT use ${AWS::URLSuffix} here).
                - "ecs-tasks.amazonaws.com"
            Action: "sts:AssumeRole"
      ManagedPolicyArns:
        # Use ${AWS::Partition} rather than hardcoding "aws" in the ARN.
        - !Sub "arn:${AWS::Partition}:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"

Outputs:
  ExecRoleArn:
    Description: ARN of the created ECS task execution role
    Value: !GetAtt ExecRole.Arn

Account structure and governance

AWS Control Tower offers a straightforward way to set up and govern an AWS multi-account environment, following prescriptive best practices. AWS Control Tower orchestrates the capabilities of several other AWS services, including AWS Organizations, AWS Service Catalog, and AWS IAM Identity Center, to build a landing zone in less than an hour. Resources are set up and managed on your behalf.

We recommend following the AWS Security Reference Architecture (AWS SRA) multi-account model structure for a EUSC deployment. Use the management account only for governance, deploy universal security guardrails through service control policies (SCPs), resource control policies (RCPs), and service deployments (such as AWS CloudTrail) that will affect all member accounts in the organization.

Region-deny SCPs are commonly applied in commercial Regions, but aren’t required (at this time) in the EUSC because of the physically and logically separated nature of its design.

Other possible SCPs for the management OU:

  • Service-level guardrails – Restrict which AWS services can be used, based on your compliance posture.
  • Network perimeter controls – Enforce virtual private cloud (VPC) endpoints, deny public access patterns, and restrict egress.
  • Encryption and key management – Require AWS Key Management Service (AWS KMS) managed keys for all data-at-rest services and enforce key policies aligned with your sovereignty requirements.

Note: As additional EUSC Regions or Local Zones become available, the partition boundary continues to enforce isolation from non-EUSC Regions. If you need to restrict usage to a subset of EUSC Regions (for example, only eusc-de-east-1 but not a future eusc-de-west-1), a Region-deny SCP would become relevant at that point.

Identity: IAM Identity Center as IaC, no direct payer access

IAM Identity Center is available in the AWS European Sovereign Cloud as an independent instance within the partition. You can connect it to your external identity provider (IdP)—Microsoft Entra ID, Okta, and so on—using SAML/SCIM, exactly as in AWS commercial Regions. If you already use Identity Center to federate in the commercial partition, you can point a second Identity Center integration at the same corporate IdP, so users keep one set of credentials. You manage permission sets, groups, and account assignments separately for each partition.

Manage permission sets and assignments as code

The following Terraform defines a permission set with both an AWS managed policy and an inline least-privilege policy, then assigns a group to a target account. Reproduce the aws_ssoadmin_account_assignment for each account or organizational unit (OU) mapping.

Because group membership comes from your IdP over SCIM, the IdP handles joiner, mover, and leaver, and access in EUSC updates automatically. No one receives direct access to the management account; all human access flows through IAM Identity Center permission sets assigned to non-management accounts.

data "aws_ssoadmin_instances" "this" {}
data "aws_partition" "current" {}

# Workload account the group is assigned to.
variable "analytics_workload_account_id" {
  type        = string
  description = "Account ID of the workload account to assign the permission set to"
}

locals {
  sso_instance_arn  = tolist(data.aws_ssoadmin_instances.this.arns)[0]
  identity_store_id = tolist(data.aws_ssoadmin_instances.this.identity_store_ids)[0]
}

resource "aws_ssoadmin_permission_set" "analytics_operator" {
  name             = "AnalyticsOperator"
  description      = "Operate analytics workloads; no IAM or billing"
  instance_arn     = local.sso_instance_arn
  session_duration = "PT4H"
}

# Attach an AWS managed policy
resource "aws_ssoadmin_managed_policy_attachment" "analytics_ro" {
  instance_arn       = local.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.analytics_operator.arn
  managed_policy_arn = "arn:${data.aws_partition.current.partition}:iam::aws:policy/ReadOnlyAccess"
}

# Add a least-privilege inline policy (note the partition-aware ARNs)
resource "aws_ssoadmin_permission_set_inline_policy" "analytics_inline" {
  instance_arn       = local.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.analytics_operator.arn
  inline_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Sid      = "OperateAnalyticsData"
      Effect   = "Allow"
      Action   = ["s3:GetObject", "s3:PutObject", "s3:ListBucket"]
      Resource = [
        "arn:${data.aws_partition.current.partition}:s3:::analytics-*",
        "arn:${data.aws_partition.current.partition}:s3:::analytics-*/*"
      ]
      Condition = { StringEquals = { "aws:RequestedRegion" = "eusc-de-east-1" } }
    }]
  })
}

# Group for analytics operators.
# In production this is typically synced from your IdP via SCIM; here we
# manage it directly so the config is self-contained.
resource "aws_identitystore_group" "analytics" {
  identity_store_id = local.identity_store_id
  display_name      = "analytics-operators"
  description       = "Analytics operators"
}

# Assign the group to a workload account with the permission set
resource "aws_ssoadmin_account_assignment" "analytics_to_workload" {
  instance_arn       = local.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.analytics_operator.arn
  principal_id       = aws_identitystore_group.analytics.group_id
  principal_type     = "GROUP"
  target_id          = var.analytics_workload_account_id
  target_type        = "AWS_ACCOUNT"
}

Cross-account roles for governance, logging, and tooling

Cross-account roles within the EUSC partition work normally; this is how the logging and security-tooling accounts collect from workload accounts. Scope each trust policy to a specific principal and harden it with an external ID (for third-party tooling) and partition-aware ARNs.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:${AWS::Partition}:iam::<SECURITY_TOOLING_ACCOUNT_ID>:role/SecurityAuditCollector"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringEquals": { "sts:ExternalId": "eusc-sec-audit" },
      "ArnLike": { "aws:PrincipalArn": "arn:${AWS::Partition}:iam::*:role/SecurityAuditCollector" }
    }
  }]
}

A role in the aws partition can’t assume a role in aws-eusc (or the reverse).

Logging and monitoring: centralized in EUSC, exported to your SIEM

A sovereign logging architecture requires three things:

  • A single, immutable store for all audit and operational logs
  • A central security account that runs detective controls and correlates findings
  • A reliable, in-partition path that feeds everything into your SIEM without data ever leaving the boundary.

In the subsections that follow, we walk through each layer: Centralized log collection in the Log Archive account, Amazon GuardDuty and AWS Security Hub administration through the Security Tooling account, and the pull-based SIEM integration pattern that keeps telemetry inside the EUSC partition.

Centralize logs in the Log Archive account

The Log Archive account holds the organization trail and a central log bucket as part of the landing zone. In the commercial AWS partition, global services like IAM route their CloudTrail events to us-east-1. In the EUSC, global services events are logged within the EUSC partition because the control plane is independent and located entirely within the EU.

Organization level detective services

GuardDuty and Security Hub are available in EUSC, but organization-wide auto-enable and some newer features might differ from commercial AWS features at any given time. Design the Security Tooling account as the delegated administrator where supported. If org-level auto-enable isn’t yet available, enable per-account through your IaC (AWS CloudFormation StackSets) so coverage is complete and code-managed. Treat the EUSC service and feature list as the source of truth and gate optional features behind a partition flag.

Network security and perimeter, including AWS Direct Connect

The AWS European Sovereign Cloud has its own sovereign AWS Direct Connect points of presence (PoPs), with dedicated networking infrastructure and connectivity from European providers, providing customers an autonomous network path into the partition. You terminate Direct Connect in a dedicated Network account and share connectivity to workload VPCs using Transit Gateway (with AWS RAM). A Direct Connect connection or Direct Connect gateway in the commercial partition can’t be extended into aws-eusc. To reach EUSC VPCs, you provision a separate Direct Connect connection that lands in the EUSC partition’s Network account. If your on-premises network already backhauls to AWS commercial Regions, you connect that network to EUSC with its own virtual interface or connection, or a site-to-site VPN. You don’t bridge the two AWS partitions through a shared Direct Connect gateway.

The following figure shows the recommended perimeter design in EUSC.

Figure 1: Recommended perimeter design in EUSC

Figure 1: Recommended perimeter design in EUSC

The perimeter design includes:

  • Centralized egress and inspection – Route workload egress through an inspection VPC in the Network account (gateway load balancer with your firewall of choice, or AWS Network Firewall. Keep workload VPCs private with no internet gateway.
  • Private service access – Use VPC interface endpoints (VPCe) for AWS service calls so traffic stays on the AWS network within the partition. VPCe doesn’t cross partitions; expose any commercial-partition service to EUSC consumers over DX/VPN and an in-EUSC load balancer.
  • DNS – EUSC has its own Amazon Route 53. For names that must resolve across clouds, use subdomain delegation or Resolver forwarding rules over your DX or VPN link rather than expecting hosted zones to be visible across partitions.
  • Segmentation as code – Express segmentation with security groups referencing prefix lists and keep the EUSC IP ranges current from the partition’s published ip-ranges file in your firewall automation.

Data protection

AWS Key Management Service (AWS KMS) is available in EUSC; use customer managed keys for all sensitive data stores and enforce their use with SCPs and key policies. Where your residency or operational-autonomy requirements call for it, evaluate AWS KMS external and imported key material options available in the partition.

For workloads where regulation mandates that key material never resides within the cloud provider’s infrastructure, configure an AWS KMS External Key Store (XKS) in the EUSC Region. The XKS proxy connects AWS KMS to your EU-based hardware security module (HSM) (on-premises or hosted with an EU trust service provider); all encrypt and decrypt operations are performed by your external key manager. Note the trade-offs: increased latency, reduced availability SLA, and added operational burden. Reserve XKS for the subset of data where regulatory or contractual obligations explicitly require it.

The EUSC Region has achieved SOC 2, BSI C5 Type 1 attestation, and seven ISO certifications, including ISO 27001, 27017, 27018, and 27701. Reference these in your data protection evidence packages when demonstrating encryption-at-rest and key management controls to EU regulators.

Secure CI/CD and distributing images across the partition boundary

If you need to deploy existing images or binaries into EUSC (aws-eusc) from existing AWS commercial (aws) accounts, you can’t use cross-partition Amazon Elastic Container Registry (Amazon ECR) replication, Amazon Machine Image (AMI) copy, or Amazon Simple Storage Service (Amazon S3) replication. Instead, treat EUSC as an independent supply-chain destination:

  • Container images – Build (or re-tag and re-sign) images and push to an Amazon ECR registry inside EUSC. ECR cross-Region replication works within the partition (useful as EUSC adds Regions or Local Zones), but the initial crossing from commercial is an explicit pipeline push using EUSC credentials. Sign images with a sovereign signing key and verify at deploy time.
  • AMIs and images – Rebuild golden images in EUSC with EC2 Image Builder (run the pipeline natively in EUSC), or import virtual machine (VM) images using Amazon S3 in EUSC and aws ec2 import-image. There is no direct cross-partition AMI copy.
  • Binaries and artifacts – Stage in an artifact bucket in the EUSC Shared Services account. Move packages across the boundary with aws s3 sync or AWS DataSync over your DX or VPN, or using controlled export, then distribute within the partition using in-partition S3 replication to other EUSC Regions or Local Zones as they come online.
# Push a container image to ECR inside EUSC (note the .eu endpoint).
# Credentials/profile must be for the aws-eusc partition.
aws ecr get-login-password --region eusc-de-east-1 --profile eusc-shared-services \
  | docker login --username AWS --password-stdin \
    111122223333.dkr.ecr.eusc-de-east-1.amazonaws.eu

docker tag company/runtime:7.x \
  111122223333.dkr.ecr.eusc-de-east-1.amazonaws.eu/company/runtime:7.x
docker push \
  111122223333.dkr.ecr.eusc-de-east-1.amazonaws.eu/company/runtime:7.x

Remember that endpoints and ARNs use amazonaws.eu in the EUSC partition. IAM service principals always use amazonaws.com regardless of partition.

Replicating deployment code and pipelines

Run a native deployment plane in EUSC (AWS CodePipeline, AWS CodeBuild, AWS CodeDeploy, or your existing tool deployed in-partition) in the Shared Services account, with cross-account deploy roles into workload accounts. If a commercial-partition continuous-integration system must deploy into EUSC, give it separate credentials for each partition; the clean pattern is OIDC federation with two trust configurations, one for each partition, because no cross-partition role assumption exists.

// Deploy role in an EUSC workload account, trusted by the EUSC Shared Services pipeline role
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws-eusc:iam::<SHARED_SERVICES_ACCT>:role/PipelineDeployRole" },
    "Action": "sts:AssumeRole",
    "Condition": { "StringEquals": { "sts:ExternalId": "EUSC-deploy" } }
  }]
}

For account vending and landing-zone-as-code, use Account Factory for Terraform (AFT) deployed in EUSC. AFT pipelines create accounts through AWS Control Tower, apply baseline guardrails, bootstrap the preceding partition-aware modules, and register OUs, giving you the accounts and account groups as code. Keep Terraform state for each partition in an in-EUSC Amazon S3 backend with an Amazon DynamoDB lock table; don’t share state across partitions.

The Landing Zone Accelerator on AWS (LZA) solution is an alternative deployment method that provisions a baseline security architecture and includes customizations for each partition, with consideration for service availability. A customized configuration baseline for European Sovereign Cloud was recently released and is accompanied by the LZA Compliance Workbook, which maps regional European security standards and international frameworks to over 200 security settings deployed by LZA.

Supported compared to by-design boundaries: A quick reference

Capability Status in EUSC What to do
AWS Control Tower account vending, controls Supported in-partition Govern the EUSC Region; drive vending with AFT; re-register OUs after Region changes
AWS Control Tower–managed or self-managed IAM Identity Center Configuration choice Choose self-managed to own permission sets as code
Permission set creation and assignment as IaC Supported Manage with SCIM groups from your IdP
Identity Center single home and delegated admin for each partition By-design behavior Administer from one Region; non-issue in single-Region EUSC
Cross-account roles (governance, logging, tooling) Supported within partition Scope trust to specific principals and ExternalId
Cross-partition AssumeRole, VPC peering, TGW, RAM, Amazon S3 replication Not available (security boundary) Integrate at network or API layer with separate per-partition credentials
Billing roll-up across accounts and Regions Supported within the EUSC org Aggregate in a finance or governance account in-partition
Billing roll-up across the aws and aws-eusc boundary Separate billing systems (EUR payer) Keep cost analysis in-partition or in an EU-resident tool
Multi-Region image distribution (Amazon ECR, AMI, and Amazon S3) Supported within partition Push into EUSC first, then replicate in-partition
GuardDuty and Security Hub Available—some org-auto-enable and features vary Delegate admin where supported; per-account enable using IaC otherwise
CloudFront, Shield Advanced, Firewall Manager, Inspector In planning at time of publication Follow on AWS Builder Center (capabilities) for release updates

Billing and cost governance

Roll up within the EUSC organization, not across partitions. Enable consolidated billing in the EUSC management account and deliver AWS Data Exports (Cost and Usage Report 2.0) to an S3 bucket in a dedicated finance or governance account in the Security or Infrastructure OU.

Set permissions so workload teams can query the curated data in that account; no one should be able to access the management or payer account directly. You can’t replicate billing data into the commercial partition; the EUSC has a separate payer (billed in EUR through the EU contracting entity).

Conclusion

Architecting in the AWS European Sovereign Cloud is, in most respects, architecting a second well-run AWS landing zone with one organizing principle that resolves nearly every design question: it’s an independent partition. Centralization of governance, identity, logging, and billing is fully achievable, but within the EUSC partition. The boundaries you encounter between commercial AWS and EUSC—no cross-partition roles, peering, replication, or billing roll-up—are the sovereignty guarantees doing their job.

Build the foundation as code. Use an AWS Control Tower landing zone driven by AFT, IAM Identity Center permission sets and assignments in Terraform federated to your corporate IdP, an immutable central log store, customer managed encryption keys constrained to the sovereign Region, and a Network account terminating a dedicated Direct Connect. Add a CI/CD plane that pushes images and artifacts into the partition with per-partition credentials. Keep every ARN partition-aware and every optional service behind a feature flag, and the same modules will serve both clouds.

To accelerate your build with additional enablement from AWS, explore the LZA Universal Configuration for European Sovereign Cloud on GitHub, which packages many of the patterns described in this post into a ready-to-deploy baseline. To complement your deployment with compliance readiness, the LZA Independent Assessment Report for C5:2020 evaluates how LZA’s security baseline maps to C5:2020 technical requirements, and you can download the report and the LZA Compliance Workbook from AWS Artifact.

Further reading

If you have feedback about this post, submit comments in the Comments section below or start a thread on AWS re:Post.


Pablo Pagani

Pablo Pagani

Pablo is a Systems Development Manager for AWS European Sovereign Cloud, based in Madrid, Spain. He has previously held roles within Enterprise Support and Professional Services. An active member of the Security Technical Field Community, he helps customers build a secure journey on AWS. Pablo developed his passion for computers while writing his first lines of code in BASIC on an MSX computer with 64 KB of RAM.

Margo Cronin

Margo is an EMEA Principal Solutions Architect specializing in Security & Compliance and is based out of Zurich Switzerland. Her interests include security, privacy, cryptography, and compliance. She is passionate about her work unblocking security challenges for AWS customers, enabling their successful cloud journeys. She is an author of the “AWS User Guide to Financial Services Regulations and Guidelines in Switzerland”.

When scanners miss the attack: how Cloudflare Client-Side Security protects storefronts

Post Syndicated from Juan Miguel Cejuela original https://blog.cloudflare.com/client-side-security-finds-4-malicious-campaigns/

A modern storefront can look perfectly healthy while malicious JavaScript works underneath: siphoning affiliate revenue, hijacking searches and clicks, tampering with analytics, or asking a remote server what to execute next. Pages load, products appear, and checkout works — yet the browser may be quietly doing something the site owner never authorized.

That is the blind spot our Client-Side Security machine learning (ML) model is built to expose. This post follows four operations, spanning eight payloads, that our Page Shield ML uncovered in the wild. 

The detection of these malicious payloads was automated; humans verified each finding only after the system had flagged it. When we afterward reviewed the campaigns using security scanning tools, seven of the eight payloads were entirely absent from VirusTotal, and URLScan returned no malicious verdict for any of them. Page Shield ML, meanwhile, caught all eight in live traffic.

For instance, while security research documented the broader Lnkr family years earlier, one specific payload version sat indexed by URLScan for nearly two and a half years with “No classification,” including during a direct scan in January 2024. Only in this case had VirusTotal ingested the payload earlier: while it currently flags the script as malicious, public history does not reveal when that verdict was first assigned. Meanwhile, Page Shield ML independently surfaced those exact bytes live on an online retailer's storefront. More broadly, a hash can be known long before the code behind it is classified as malicious. If your defense waits for that label, you are already late. You need ML that can unravel the JavaScript itself and judge it at scale.

Indeed, seeing a file is not the same as understanding it. The tricky part was that the four operations shared no universal signature or common concealment technique. One remained dormant unless the device, country, time, referrer, or browser state matched what it was waiting for. Another concealed a clickless affiliate request within an invisible iframe. Others intercepted clicks, suppressed monitoring, or conditionally loaded additional code from remote servers. To catch them, you have to watch how those pieces work together: when the script wakes up, what it hides, what it intercepts, and what it fetches next. Checking the page once is not enough; as these cases show, such scripts are built to stay quiet until the right victim shows up. That is why ongoing browser visibility makes the difference between catching an attack and missing it entirely.

How we detect and label JavaScript at scale

The same GNN (graph neural network) that flagged the four operations in this post had already caught malicious npm packages and an in-the-wild Magecart payment skimmer. The GNN does not treat JavaScript as a flat chunk of text; it reasons through the code as a graph: a syntax tree connecting code symbols and exposing what calls what, what the attacker tried to bury, and what still phones home. That structure helps it recognize suspicious patterns across minification, renaming, and some obfuscation without relying on a known URL or byte signature. 

The few scripts that the GNN flags as malicious (under 0.3% of all analyzed traffic) go to a lightweight large language model (LLM) on Workers AI for a live second opinion. This further reduces false positives while keeping recall high. When the LLM corroborates the GNN, customers are alerted.

To investigate the most complex scripts at scale, we use a cohort of frontier models, which we call teachers (an ensemble of automated judges). The cohort draws leading models from around six different families, including open-weight models running on Workers AI. We spin up each as an agent to analyze the same suspicious script in its own fresh, independent session. When useful, their agentic tool access lets them use a restricted JavaScript evaluator to unpack small snippets and reveal concealed behavior. We will soon extend this workflow with Cloudflare Sandbox for deeper analysis in isolated environments.

The frontier models sometimes disagree, especially on the most intricate scripts. We treat that disagreement as signal, not noise. Each label becomes a vote, weighted by the model's score in the Artificial Analysis Intelligence Index, producing a probability distribution over four labels: benign, payment skimming (magecart), other malware, and cryptomining. Human reviewers therefore need only examine scripts flagged as malicious or lacking a clear two-thirds majority. We then feed those label distributions back into GNN training, helping it distinguish ever more nuanced cases. This feedback loop is still partly manual, though we are starting to automate it.

Four malicious JavaScript operations we caught

These four operations do very different things, from commission theft to stolen analytics on shoppers the store already paid to acquire. Stealing a commission is not like skimming a credit card; likewise, hijacking search is not like stealing a password. If an ML model only knows one of those tricks, it will sleep through the others. Instead, our Page Shield ML has to stay attuned to every kind of hostile behavior. 

Now, let’s dig deeper into each operation and how it worked.

Operation 1: The after-hours affiliate-commission hijacker

Picture a quiet Sunday afternoon: a shopper on a phone taps a product. Instead of following the tap normally, the script opens a product or campaign landing page from an attacker-preselected list in a new tab and sends the original tab through an affiliate route. The storefront still appears to work. If the shopper completes a purchase (either then or later), the detour hijacks the attribution, crediting the sale (and any resulting commission) to an account that did not earn the referral.

What the shop lost

The shop could pay an unearned commission to an account that did not bring the shopper. Worse, if a legitimate partner had made the referral, the forced request could misattribute it, diverting credit and a potential payout from the partner who did the work. The damage could outlast one commission: partners who stop trusting the attribution system may also stop trusting the retailer behind it.

Attack chain

Qualified mobile visitor → intercepted product tap → script-selected page opens in new tab + original tab follows attacker’s affiliate route

How it stayed hidden

We found five related script builds: two active and three paused when captured. Each active variant uses a different set of gates before it acts, checking things like the visitor’s device and local time, whether the trick has run recently, whether a product button has appeared, and whether someone actually clicks it. That maze of rules keeps the malicious behavior out of sight during a brief automated visit unless the variant’s specific conditions are met. The active scripts use a MutationObserver (a JavaScript API) to watch for product tiles and buttons that dynamically appear after the page is first loaded. This lets them intercept clicks on those late-arriving elements, while a crawler that loaded the HTML once and stopped there could miss the redirect path entirely.

In the active later variants, the script intercepts a qualifying click and writes a three-day cooldown to localStorage (staying dormant on that device for days). It then executes a dual-tab maneuver: popping an attacker-chosen product page into a fresh tab to keep the shopper engaged, while the original tab takes a quick, unnoticed round-trip through the attacker's affiliate tracking link and back to the shop, to plant the attacker’s attribution cookie in the background. Console masking and self-defending source checks make inspection harder, while the cooldowns and narrow schedules limit how often the malicious path can appear during otherwise normal shopping.

The following sanitized excerpt shows how the payload hooks dynamic product tiles and executes the dual-tab detour. We simplified identifiers, reformatted the code, and neutralized destination URLs for readability.

The paused builds showed how the campaign could go dark without removing the script. Their embedded configuration set status: "paused", so they exited before installing click handlers. These paused scripts carried different per-shopper cooldown configurations (3, 4, and 5 days). One of the paused scripts even recorded a version-history comment explicitly documenting that the campaign was paused after Black Friday.

To reach visitors in the first place, the operation leveraged the site's marketing supply chain: the third-party scripts and tag managers embedded by e-commerce sites to track ad campaigns and analytics. One confirmed delivery path ran through two otherwise ordinary tag managers: Google Tag Manager → another tag manager → malicious script. That is how the payload reached the browser, not proof that either tag manager was compromised.

The attacker even disguised the domain hosting the script to pass a quick marketing review. One delivery host hid in plain sight: adtargett[.]com differed by a single “t” from adtarget[.]com, an advertising domain registered in 1998. The lookalike was registered in 2025 and, when we checked, its homepage called itself “Adtarget.com – Performance Marketing Agency.” This is typosquatting: by mimicking a real ad agency, the host blended in with routine marketing tags, quietly serving the malicious payload that hijacked shopper clicks and redirected them through affiliate payout links.

Operation 2: The clickless affiliate theft

While the first scam still needed a click, this one requires even less. A shopper can open a booking page, linger over the product options, and never touch an ad. In the background, however, the script might have already sent an affiliate request that could make a later sale look as though someone else had referred the shopper. Indeed, when the script’s conditions are met, the payload sends that request through a hidden iframe or a link that clicks itself.

What the shop lost

For the affected tourism business, the attack could corrupt the economics of customer acquisition: a legitimate booking or purchase could be credited to an unearned affiliate account. The code proves covert, automated affiliate requests, but whether any specific request resulted in completed attribution, account crediting, or paid commission in practice remains unobserved.

Attack chain

Time-gated browser → covert affiliate request (off-screen iframe) → 1-hour throttle cookie → when blocked, automated hidden-link click fallback

How it stayed hidden

The script conceals the affiliate request in two layers: selective execution (a pre-flight network gate and hourly schedule), and stealth delivery (an off-screen iframe). The first layer is surprising because its country labels are disconnected from actual geography: neither the shopper’s nor the shop’s location drives the choice.

First, the script calls a public IP-based geolocation service but ignores everything it returns, including the shopper’s country. We could not determine why it required a successful response while ignoring the returned data; this may have been intended to confuse investigators or simply been a remnant of an earlier version. Interestingly, if the geolocation request fails, the script silently stops; its promise chain ends with .catch(() => {}). Although intent is unproven, this fail-closed behavior could help the script evade network-restricted sandboxes.

Next, instead of using the fetched geolocation data, the payload contains three TradeDoubler (an affiliate-marketing network) configuration objects labelled {AU, US, and UK}. These settings blocks are embedded in the code, and each contains an affiliate URL and start and end times. The script computes Asia/Kolkata time in JavaScript, checks those configured time windows, then applies fixed odd/even-hour rules to choose one of the three or else skip the affiliate request for that run. The choice is deterministic. 

Together, the schedule and browser-state checks create time-gated selective execution, a form of cloaking. When those conditions do not line up, the affiliate behavior stays dormant, so a one-off inspection can miss it.

Once the script chooses a configuration, it writes a local cookie named affiliateClicked_<market> as a one-hour retry throttle so it will not re-fire for that region right away (this is a client-side throttle to avoid noise, not an affiliate-network attribution cookie). Next, it loads that affiliate URL in an off-screen iframe with the referrer suppressed. The iframe is the primary delivery path, but it carries an aggressive fallback: if the iframe errors or fails to finish loading after one to two seconds, the script creates a hidden link (<a>) without a target attribute and clicks it programmatically, which could navigate the user's active tab. To the qualifying shopper, nothing seems out of place: they never see an ad, never have to click, and can close the tab as if nothing happened.

As for the script’s obfuscation, it is simple but effective: even property names are assembled one character at a time. The following sanitized excerpt shows the payload creating an invisible off-screen iframe. We renamed key identifiers and reformatted the code for readability. The destination has been removed.

Operation 3: The old search saboteur, now storefront backdoor

Years ago, the Lnkr malware family made the news by hiding inside shady browser extensions, intercepting Google and Bing searches to redirect results and pocket ad money. Now, attackers repurposed the codebase to plant a backdoor into an online retailer’s website.

Because the script was running on a shop rather than a search engine, its old redirect tricks stayed dormant. This time, the script was used to send telemetry back to the attacker. More dangerously, it gave the attacker a remote doorway to arbitrarily download and run fresh JavaScript in customers' browsers whenever they wanted, without touching a single file on the server. It even carried an old trick from its extension days: shutting itself off if someone typed words like “virus” or “popup” into Google. From the outside, the store kept selling without a hint that anything was wrong.

What the shop lost

The shop lost control over what code runs in its customers' browsers. Attackers were secretly tracking visitors' sessions and had a direct backdoor to push and run any JavaScript they wanted on the storefront at any time.

Attack chain

HTML-referenced script → analyst evasion gates → parallel host-gated branches (dormant search vs. live backdoor) → arbitrary remote JavaScript execution

How it stayed hidden

Unlike campaigns delivered through tag managers, this script was directly embedded into the merchant’s HTML. We could not determine the exact initial intrusion vector; in practice, direct HTML insertions usually happen through compromised store admin credentials, an unauthorized template edit, or an infected third-party theme or plugin.

Under the hood, the script is a modular toolkit carrying both active and dormant code. Its older modules (transparent click overlays, search-engine query interceptors, extension-store link rewriters, and redirects for typosquatted domains, like buking[.]com instead of booking[.]com) only wake up on specific target sites, so they stayed turned off on this storefront. Several embedded domains (sugabit[.]net, votetoda[.]com, cdnpps[.]us, and telemetry endpoint hanstrackr[.]com) sat inside these disabled modules.

On the shop, the active branches focused on evasion, telemetry, and remote control:

  • Playing dead for security researchers. An evasion trick inherited from its browser-extension days: the script monitored search inputs and URL queries for telltale adware terms. Searching one security keyword paused the script for that visit. Searching two or more wrote a persistent opt-out record to localStorage, permanently silencing the script on that analyst's machine so repeated tests would find nothing. While originally built to dodge analysts on search engines, as far as we could determine, this check was hard-coded specifically to Google search URLs and remained dormant on the merchant's storefront.
  • Dynamic remote code execution. The script didn't need to modify the storefront to change its behavior. While the hardcoded domain names (scrprime[.]com, youronlinesearches[.]com, jullyambery[.]net) remained identical to older captures, what those endpoints returned was entirely up to the attacker. The script could phone home visitor telemetry, ask those servers for new instructions, and pull down fresh JavaScript directly into the shopper's browser. Effectively, this gave attackers a live backdoor to run arbitrary code on the storefront. We could not determine what second-stage payloads were served in practice.

All in all, a static snapshot of the site showed only the normal storefront, while the underlying state checks, anti-analysis traps, and remote-loading branches exposed the backdoor.

Operation 4: The paid-mobile cloaker

The shop already paid to bring this visitor in from a mobile ad or marketing campaign. The malicious script lets that visit through, then cuts off the merchant's visibility. Analytics go dark, the live support chat vanishes, and a rogue observer starts recording telemetry on the very session the store just bought. 

Behind the scenes, the payload refuses to run unless that visit matches an elaborate set of conditions: the exact target storefront, a narrow mobile screen, and a campaign tag during the first two pages of the visit. It stays dormant on laptops, corporate networks, cloud providers, and VPNs, so the engineers most likely to debug the page never see it fire. The script also stays dormant across selected US cities and regions, backed by a handcrafted denylist of 325 IP strings to dodge automated scanners and security analysts. Only then does the script attempt to tear down the shop’s monitoring, substitute replacement advertising and analytics identities, and phone home. A second look from the wrong device or network will never trigger it. All the while, the storefront keeps selling.

What the shop lost

For a direct-to-consumer retailer, the malware specifically targeted high-value traffic the store had paid to acquire through paid-search and marketing campaigns (ppc, cpc, sms, paid). Those customers could still buy. Yet the shop faced three clear threats: diverted advertising attribution and unearned publisher payouts, the loss of critical session analytics across nine observability tools, and the suppression of the help chat and contact form (preventing shoppers from asking questions or reporting anomalies). Dynamic analysis in a sandboxed browser environment confirmed that the replacement analytics script loaded and fired a tracking beacon (an invisible network request sent to log visitor activity), but whether the attacker successfully captured session telemetry or diverted ad revenue in practice remains unproven.

Attack chain

Campaign-tagged mobile arrival → multi-tier cloaking & network gates → monitoring sabotaged → advertising, analytics, and support controls rewritten 

How it stayed hidden

To blend into the store's marketing supply chain, the attacker delivered the payload from sdk-amazonaws[.]com, a lookalike domain registered in 2024 and wholly unaffiliated with the official Amazon Web Services domain (amazonaws.com, registered in 2005). To compound the deception, the attacker prefixed the domain with a subdomain mimicking a popular e-commerce marketing platform too. This stacked, double-trusted-brand typosquat forged a convincing disguise, engineered to slip past quick tag reviews. Neither Amazon Web Services nor the impersonated marketing platform was involved in the attack or suffered any compromise.

Once loaded in the browser, the script executed an exceptionally dense gauntlet of cloaking gates before triggering its main payload:

  • Target host and browsing context. The script verified that window.location.hostname matched the specific merchant host it was built to target (exiting immediately anywhere else), ensured the current window was top-level (not an embedded iframe), and checked that the path did not contain /challenge. It also verified that tracking marker cookies (_cart_dr and logoalt) were not already present in the browser.
  • Device and campaign filtering. The visitor's viewport width had to be narrower than 477 pixels (a handheld smartphone). Furthermore, the visitor had to arrive via a first-touch (the visitor's initial referral) campaign tagged with one of six specific UTM mediums (Urchin Tracking Module, standard URL tags used to track marketing campaigns): ppc, cpc, sms, paid, flow, or campaign. It also had to be the first or second page load of their session. Curiously, while the code contained a nominal non-UTM path, it required the session page count to be simultaneously greater than -1 and less than -2 (a mathematical impossibility that left that branch completely unreachable). This could be yet another diversion technique or a code change leftover.
  • The "random" gate that always passed. The code featured what looked like a probabilistic throttle (Math.random() <= threshold) to make execution appear intermittent. However, when we solved the deobfuscated arithmetic, the threshold reduced to exactly 1. Because JavaScript's Math.random() always returns a value strictly below 1, this gate always evaluates to true. Like the unreachable non-campaign branch, this is a condition that never actually decides anything. It may be a leftover throttle, or purposeful camouflage for anyone reading the obfuscated math. Either way, the captured payload never used it to skip a qualifying visitor.
  • Third-party IP intelligence. The script queried an external third-party IP intelligence API using an embedded key. It required a U.S. mobile consumer connection, while immediately bailing out if the response flagged a business network, hosting facility, cloud provider, bogon, Tor exit node, VPN, proxy, relay, or general threat indicator.
  • Geographic exclusions. The payload did not activate for visitors from specific regions (US-NY, US-CA, and US-NHDD) or from cities named San Francisco, Plymouth, Compton, Hopkinton, and Lafayette.
  • The 325-entry IP substring trap. The script checked the visitor's IP against an embedded denylist containing 325 full IPv4 address strings. After deduplication, these represented 313 unique addresses across 249 distinct three-octet prefixes. Rather than performing structured CIDR (Classless Inter-Domain Routing) subnet matching, the author simply stripped the final octet from the visitor's IPv4 address and ran a raw substring search: !denylistString.includes(visitorPrefix).

In stripped-down pseudocode, the multi-layer primary activation funnel looks like this:

Sabotaging observability and hijacking identities:

Only after every primary gate passed did the script execute its payload:

  • Blinding monitoring tools. It searched the DOM and removed script tags for nine different observability and analytics services: Lucky Orange, Segment, Optimizely, New Relic, Bugsnag, LogRocket, Hotjar, Microsoft Clarity, and the store's Google Tag Manager container (GTM-<redacted>). In remaining inline scripts, it string-replaced references to these tools with undefined dummy identifiers (hji0) so calls to them failed silently, attempting to blind the store's error reporting and monitoring.
  • Suppressing customer support. It injected CSS and removed elements to hide its support-chat and contact-form containers, cutting off the customer's direct line to store support.
  • Replacing advertising and analytics identities. It purged Google Ads globals (google_ad_modifications, adsbygoogle), tore down existing ad slots (ca-pub-<original>), and loaded Google Ads under a replacement publisher ID (ca-pub-<replacement>). It then injected a new Microsoft Clarity session-replay script configured with a rogue, replacement project ID.

Simpler independent beacons and the 600-day marker:

In sharp contrast to the elaborate primary cloak, the payload also contained secondary beaconing branches (standalone routines that quietly ping an external server to confirm a visit) that completely bypassed the viewport, hostname, campaign, geography, and IP gates. If the visitor was on their second page or beyond, the script wrote a persistent cookie (_cart_dr=1) with an expiry of exactly 600 days (51,840,000,000 milliseconds) and fired an invisible zero-pixel image request to a remote telemetry endpoint on maper[.]info (a tracking beacon used to log that the browser reached this step).

A separate branch checked for an alternate marker (_logo_alt), which would trigger a second telemetry .png beacon (a cookie this script looked for, but never wrote itself; likely planted by a companion script). This gave the attacker a simple, persistent hit-counter to log basic traffic for all visitors (IP and User-Agent logged at the endpoint) across the entire store, while keeping their high-risk ad-hijacking routines strictly hidden behind the mobile cloak (high-value paid arrivals). It shows why analyzing only one visible effect does not reveal the full reach of a multi-purpose payload.

Indicators of Compromise (IOCs)

We are publishing these indicators to help security teams and researchers detect and hunt these campaigns across their own environments. All indicators are drawn directly from captured payloads and their network connections. Listed URLs are defanged. Some indicators have been withheld or generalized because publishing them could inadvertently divulge the identities of affected organizations. Listed domains reflect infrastructure observed participating in the delivery, redirection, or telemetry chain during these attacks; inclusion does not imply that a shared service or hosting provider is exclusively malicious.

Four lessons for defenders

Taken together, the operations tell one escalating story: attackers changed the objective, delivery path, and disguise, but the browser still had to execute their logic. Four lessons stand out.

Behavior beats signatures. These operations pursued different forms of monetization and manipulation, but every payload still had to act in the browser: observe events, inspect state, alter the page, schedule work, make network requests, or load another stage. That is what structural analysis looks for: the logic a hostile payload must carry, even as URLs, signatures, and objectives change.

Selective execution is part of the attack, not a footnote. Device, time, geography, referrer, session, network, and cooldown gates can all defeat a crawler that visits once and takes a static snapshot. Continuous visibility matters because an attack may appear only to one browser, in one state, at one moment. 

Obfuscation raised the cost of analysis, but in these cases it did not prevent detection. Self-defending loops, console suppression, debugger traps, rotated string tables, and dead branches complicated analysis. Page Shield ML still surfaced all four operations despite those barriers. Fast in-house models surface the suspicious code at scale, while frontier models investigate the hardest cases. Their disagreements highlight the trickiest obfuscation and logic, helping us narrow our focus.

Context completes the picture. Code that looks ordinary in isolation can reveal its malicious role once defenders link static analysis with dynamic context: how it arrived, which browser state activated it, what connections it opened, and what it actually did at runtime.

Continuous visibility into client-side execution

These four operations relied on different layers of misdirection, but they all shared one constraint: their JavaScript had to execute in the browser. Public scanners and static crawls can miss gated behavior. Continuous observation helps clarify what the code actually does when real visitors interact with the page

Cloudflare Client-Side Security provides that visibility across all plans. You can turn on Continuous script monitoring under Security settings to track first- and third-party scripts on your storefront, while automated malicious-script detection and alerting are available with Client-Side Security Advanced. You can review script activity and manage detections directly in the Cloudflare dashboard.

AWS reimagines the getting started experience

Post Syndicated from Micah Walter original https://aws.amazon.com/blogs/aws/aws-reimagines-the-getting-started-experience/

Amazon Web Services (AWS) started with a handful of foundational infrastructure services such as Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), and Amazon Simple Queue Service (Amazon SQS), so that anyone with an idea could start building. As the world’s largest companies and governments adopted AWS, they asked for features to optimize their configuration for a range of global business contexts, security requirements, and operational needs. To meet these needs, AWS expanded globally through new Regions and added breadth and depth of services in security, networking, governance, and cost controls, so those customers could operate wherever they needed and at the scale they require. That combination of global reach, breadth, and depth remains essential for those customers, but if you are at the start of a new idea, every configuration option is effort standing in the way of shipping your dream product fast.

Today, we’re announcing a new simplified experience on AWS for builders who are working at the pace of AI. Instead of having to complete configuration tasks before you can work on your project, you start with sensible defaults and simple administration. You sign up using an existing identity from providers including Google, GitHub, and Apple. For most new customers, no credit card is required to start and you receive $100 in free credits as part of the AWS Free Tier. You can build immediately in your first project. As you continue to work, you can invite collaborators with just an email address, without learning about AWS Identity and Access Management (IAM) or AWS IAM Identity Center. When your project grows beyond the free credits, you can set a spend limit so you stay within your budget on the paid plan. If you grow to need additional customization, you can activate advanced AWS features to access the full breadth and depth of AWS without migrating.

How it works
When you sign up, AWS organizes your work in a project. A project contains an AWS account, where you create resources, and settings for sharing with team members. AWS creates that structure for you and applies additional security controls so you can start building your idea. After signing in, you get a prompt to paste into your coding agent that configures it to work with your new AWS environment. From there, your agent can deploy resources, run workloads, and iterate on your application following best practices for working with AWS.

You can create another project with a click. When you want to work with an additional team member, you send an invitation to their email address. Identity permissions are handled for you, so there are no IAM users to create; each person you invite only gets access to the projects you specify. Console workflows and coding agents also configure permissions between supported services and resources automatically, so you do not have to set up or troubleshoot resource permissions by hand.

When you’re ready to move beyond free credits, you can upgrade to a paid plan by entering your payment method. You can set a monthly spend limit on a project based on your usage trends, starting at $20 per month. The spend limit is the ceiling for that project’s costs, and you pay for what you actually use up to that amount. For example, if you set a $50 spend limit and your project incurs $32 in charges that month, you pay $32 (plus taxes). AWS will suggest a spend limit based on your usage, and you can accept that recommendation or set a custom amount if you are planning to further scale your usage. If your project approaches the limit, you first receive notifications. If spend reaches the limit, AWS pauses your project rather than accumulating charges, and you can resume working on it when you raise the limit. Each project has its own spend limit so you can give a larger budget to a workload that is gaining traction while keeping a smaller budget on an experimental idea.

Let’s try it out
To get started, I went to aws.amazon.com and chose Create account. I signed in with my Google account and within seconds had a new project ready to go, as shown in the following screenshot.

The Sign up for AWS page, with options to continue with email or sign in using Google, GitHub, Apple, or Amazon.

The first thing I saw was a prompt to configure my coding agent. I copied the prompt and pasted it into my agent. The agent set up the AWS Command Line Interface (AWS CLI) and the Agent Toolkit for AWS, logged me into AWS, and created a CLAUDE.md file in my project with guidance for the new experience.

The Setup Agent Toolkit for AWS dialog, with a prompt to copy and paste into your coding agent.

With the agent connected, I gave it a short prompt: build an API that returns a new unique sequential ID on every request. The agent created an AWS Lambda function, an Amazon DynamoDB table, and an Amazon API Gateway API, then deployed them for me. I did not have to configure resource permissions by hand. Within a few minutes I had a public endpoint that returned a newly minted ID on each request. My project started with $100 in free credits, and I received an additional $20 when the Lambda function was deployed.

A coding agent prompt to build an API that returns a unique sequential ID on every request.

The coding agent presents architecture options for the sequential ID API, with AWS Lambda and Amazon DynamoDB selected.

The coding agent confirms the API is live and lists the Amazon DynamoDB table, AWS Lambda function, and Amazon API Gateway API it deployed.

From the project, I could manage settings, invite team members by email, and monitor billing, as shown in the following screenshots.

The Projects page, showing remaining free-plan days, credits, and a project.

The project Members page, with the option to invite a new team member by email.

The Billing page, showing a $0.00 balance on the free plan, remaining credits, and cost by project.

Activating advanced features
If you reach the point where you need multiple Regions, or governance features like custom policies in AWS Organizations, you can activate advanced features at no additional cost. You’ll find yourself in a fully configured AWS Organization built according to best practices, with no migration and no downtime. Everything you configured previously is preserved and reflected in the underlying AWS services.

Now rolling out
We’ve heard from builders that they do not want to spend their first hours configuring an AWS environment. They want to build what they came to build, and we listened. AWS began as a place where anyone with an idea could start building, and this new simplified experience brings that starting point back, with sensible defaults so you can begin immediately, and with the global reach, breadth, and depth of AWS still there when your idea needs it. We are gradually rolling this experience out to new customers. We cannot wait to see what you build, and we want your feedback on the experience.

To try the new experience, create a new AWS account. To learn more, see Sign up for AWS (new).

Fedora 45 beta drags the Linux console into the 21st century (Register)

Post Syndicated from corbet original https://lwn.net/Articles/1094762/

The Register looks
forward
to the upcoming Fedora 45 release.

The biggest surprise is that Linux’s legacy in-kernel console – the
text-mode interface normally hidden beneath the GUI – has been
replaced with a software-controlled alternative.
The replacement is kmscon, a
userspace terminal emulator that has been in development for more
than a decade.

Discover and govern Snowflake data using SageMaker Unified Studio

Post Syndicated from Marco Duarte original https://aws.amazon.com/blogs/big-data/discover-and-govern-snowflake-data-using-sagemaker-unified-studio/

Many organizations operate in hybrid data environments where critical assets live in Snowflake while analytics workloads run on AWS, which can create governance gaps, discovery friction, and duplicated efforts when the two aren’t connected.

With Amazon SageMaker Unified Studio, you can govern data across Snowflake and AWS through its integrated catalog and AWS Glue Data Quality, a capability of AWS Glue. You connect directly to Snowflake tables without moving data, apply quality rules using AWS Glue Visual ETL, and publish validated assets to Amazon SageMaker Catalog, maintaining consistent governance across your entire distributed data estate.

Without this integration, cataloging Snowflake data requires building extraction pipelines, often taking days. With SageMaker Unified Studio connected to Snowflake, you can query, catalog, and validate the quality of federated data in 5–15 minutes. No data replication or custom ETL code required.

In this post, we show you how to connect Snowflake to Amazon SageMaker Unified Studio, register data assets in Amazon SageMaker Catalog, configure data quality validation using AWS Glue Visual ETL, and publish assets for unified collaboration. By following these steps, you enrich federated assets with data quality scores so that consumers across your organization can discover and trust the data, all while keeping it in Snowflake.

Solution overview

This solution integrates Snowflake with Amazon SageMaker Unified Studio for centralized data cataloging and quality validation.

The architecture uses an AWS Glue connection to federate the Snowflake catalog into Amazon SageMaker Unified Studio. Tables become available in the project catalog without complex storage configurations. You can query data directly using SQL analytics, publish datasets to Amazon SageMaker Catalog for organization-wide discovery, and apply data quality rules through AWS Glue Visual ETL pipelines.

The workflow consists of the following steps:

Architecture diagram: Snowflake federated into SageMaker Unified Studio through AWS Glue, with data quality validation and publishing to SageMaker Catalog

Figure 1: Architecture for federating Snowflake into SageMaker Unified Studio and validating data quality

  1. Snowflake connection creation on Amazon SageMaker Unified Studio — Amazon SageMaker Unified Studio uses an AWS Glue connection to federate Snowflake tables and views into its open data lakehouse architecture. The federated catalog entry is registered in AWS Glue Data Catalog and governed by AWS Lake Formation for centralized access control, without moving data out of Snowflake.
  2. Federate Snowflake tables into the Amazon SageMaker publisher project — The Amazon SageMaker publisher project discovers the federated Snowflake tables through the AWS Glue Data Catalog integration.
  3. Publish the dataset to Amazon SageMaker Catalog — The publisher project publishes the dataset as a governed asset to the Amazon SageMaker Catalog, making it discoverable for data consumers across the organization.
  4. Validate data quality — AWS Glue Data Quality runs validation rules against the federated Snowflake data and publishes the data quality results directly to the corresponding asset in Amazon SageMaker Catalog.
  5. Consume data — Users access Snowflake data through two paths:
    1. Publisher project users — Query data with SQL Analytics — Users in the publisher project can query the Snowflake data directly using Amazon SageMaker Unified Studio SQL Analytics for interactive exploration and analysis, without copying or moving data.
    2. Consumer project users — Discovery and subscription through SageMaker Catalog — Other Amazon SageMaker consumer projects discover the published asset in the Amazon SageMaker Catalog, subscribe to it, and consume the data for their analytics and machine learning workloads.

Prerequisites

To follow along, you need:

  • An active Snowflake account with administrator access.
  • Tables or views created within a schema inside a Snowflake database.
  • An Amazon SageMaker Unified Studio and project created.
  • An Amazon Simple Storage Service (Amazon S3) bucket for AWS Glue assets.
  • Appropriate AWS Identity and Access Management (IAM) permissions configured (Amazon SageMaker Catalog is built on Amazon DataZone, so the IAM actions use the datazone: prefix.)

Your AWS Glue job execution role requires specific permissions to interact with Amazon SageMaker Catalog.

Required IAM policies for the AWS Glue job role

1. Amazon SageMaker Catalog search and listing permissions: Attach a policy that allows the AWS Glue job to search and list assets in Amazon SageMaker Catalog.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "datazone:SearchListings",
        "datazone:GetListing",
        "datazone:ListDomains",
        "datazone:GetDomain"
      ],
      "Resource": "arn:aws:datazone:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>"
    }
  ]
}

2. Amazon SageMaker Catalog time series data posting permissions: Add permissions to post data quality metrics:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "datazone:PostTimeSeriesDataPoints",
        "datazone:GetAsset",
        "datazone:ListAssetRevisions"
      ],
      "Resource": "arn:aws:datazone:<REGION>:<ACCOUNT_ID>:domain/<DOMAIN_ID>"
    }
  ]
}

Configure the AWS Glue job role as an Amazon SageMaker domain user

Configure the IAM role used by your AWS Glue job as a domain user. In the Amazon SageMaker console, navigate to your domain, choose Access management, and add the AWS Glue job execution IAM role as a domain user.

Project-level permissions

Add the AWS Glue job execution role as a project member with Owner permissions. Navigate to your project, go to Project settings > Members, and add the role.

For more information about IAM roles for AWS Glue, see the AWS Glue security documentation. For Amazon SageMaker Unified Studio permissions, refer to the Amazon SageMaker Unified Studio administrator guide.

Querying Snowflake datasets from Amazon SageMaker Unified Studio

The following sections walk you through connecting Snowflake to Amazon SageMaker Unified Studio and running data quality validation with results displayed in Amazon SageMaker Catalog.

Identifying information in Snowflake

First, gather your Snowflake connection details. You need a Snowflake account with tables or views created at the schema level within a database.

To obtain Snowflake connection information:

  1. Navigate to your Snowflake environment and sign in with administrator credentials.

    Snowflake sign-in screen for administrator credentials
  2. Choose your user account and choose Connect a tool to Snowflake.

  3. Note the Account/Server URL displayed on the screen.
  4. Choose the Config File tab, select values for Warehouse, Database, and Schema, and copy these values for use in the next section.

Creating the connection in Amazon SageMaker Unified Studio

The Add Connection feature stores Snowflake connectivity details including credentials, server, and database information. Amazon SageMaker Unified Studio uses this connection to federate the Snowflake catalog through AWS Glue, so you can query data within minutes of setup.

You need an Amazon SageMaker Unified Studio domain and a project, which acts as a data producer project.

To create the Snowflake connection:

  1. In your Amazon SageMaker Unified Studio project, go to Overview.

    SageMaker Unified Studio project Overview page
  2. Choose Data.

    Data option in the SageMaker Unified Studio project navigation
  3. Choose + Add, then choose Add Connection.

    Add menu in SageMaker Unified Studio with the Add Connection option
    Add Connection panel in SageMaker Unified Studio
  4. Choose Next.
  5. Select Snowflake and choose Next.

    Connection type selection showing Snowflake in SageMaker Unified Studio
  6. Complete the connection details:
    • Name: snowflake-connection.
    • Description (Optional): Enter a description for your connection.
    • Host: Your Snowflake account URL (for example, XXXXXXXXX-XXX000000.snowflakecomputing.com).
    • Port: 443.
    • Database: Your database name (for example, sm_demo).
    • Warehouse: Your warehouse name (for example, COMPUTE_WH).
    • Schema: Your schema name (for example, demo).
    • Additional Properties:
      • Register in AWS Glue Data Catalog: Turn on checkbox.
      • Case conflict handling: Select the option based on Snowflake naming syntax.
    • Authentication:
      • Username: Your Snowflake username.
      • Password: Your Snowflake password.
    Snowflake connection details form with name, host, port, database, warehouse, and schema fields
    Connection form showing authentication and AWS Glue Data Catalog registration options
  7. Choose Add Data.

After creating the connection, wait a few minutes for the federated connection to be established. Search within Amazon SageMaker Unified Studio for the database and created objects.

Federated Snowflake database and objects appearing in SageMaker Unified Studio search

Federated Snowflake tables registered in the AWS Glue Data Catalog

With the Snowflake connection established and the federated tables registered in AWS Glue Catalog, you’re now ready to query Snowflake data directly from Amazon SageMaker Unified Studio, without moving or replicating any data.

Query results from a federated Snowflake table in the SageMaker Unified Studio query editor

How federated queries work

When you run a query in the Amazon SageMaker Unified Studio query editor against a federated Snowflake table, Amazon Athena runs the request. Athena is the underlying query engine integrated into Amazon SageMaker Unified Studio. Athena reads the table definition from AWS Glue Catalog, connects to Snowflake through the established connection, and pushes the query down for execution. Athena returns results directly to the query editor while Snowflake processes the data in place, and only the query results travel across the connection. Amazon SageMaker Unified Studio doesn’t copy data to S3 or any intermediate storage.

After you’ve validated that queries return the expected results, the next step is to publish this dataset to Amazon SageMaker Catalog, making it discoverable and shareable across your organization.

Publishing Snowflake datasets to the SageMaker Catalog

Now that your Snowflake connection is configured, you can publish your datasets to the Amazon SageMaker Catalog, making them discoverable and shareable across your organization.

Creating data assets in SageMaker Catalog

Data assets in Amazon SageMaker Catalog are the cataloged representation of your data resources. They help teams discover, govern, and share data across your organization.

In this section, you create a data asset associated with a Snowflake table. This process transforms a technical Snowflake table into a cataloged resource enriched with business metadata.

To create a data source:

  1. In your Amazon SageMaker Unified Studio project, go to Manage.

    Manage tab in the SageMaker Unified Studio project
  2. Choose Data Sources.
  3. Choose Create Data Source.

  4. Select the AWS Glue option.

    Data source type selection showing the AWS Glue option
  5. Turn on the Import data lineage checkbox and select the connection: project.default_lakehouse.

    Data source configuration with Import data lineage and the project.default_lakehouse connection selected
  6. Complete the form and choose Next:
    • Catalog: Select Enter the catalog name and enter snowflake-connection.
    • Database name: Enter your database name (for example, movies).
    • Table selection criteria: Enter * for all tables in the database, or enter a specific table name.
    Data source form showing catalog name, database name, and table selection criteria
  7. Keep the default options and choose Next until you reach the summary screen.

    SageMaker Unified Studio data source configuration summary screen
    Data source review screen before creation
  8. Review your settings and choose Create.

To extract metadata and publish assets:

  1. Choose Run to start extracting metadata from AWS Glue Data Catalog.

    Data source detail page with the Run option to extract metadata from the AWS Glue Data Catalog
  2. Wait for the run to complete.
  3. Go to Assets to view the Asset Inventory.

    Asset inventory in SageMaker Catalog after the data source run completes

The following screenshot shows the asset inventory after the data source run completes.

  1. Choose an asset to view its details.

    Asset detail page in SageMaker Catalog showing the Snowflake table metadata

At this point, you can enrich the business context by choosing Generate Descriptions. Amazon SageMaker Catalog analyzes the asset’s technical structure and generate:

  • Business descriptions in natural language for the asset.
  • Contextual definitions for each field/column.
  • Suggested glossary terms that could be applied.
  1. After your asset has been enriched with the necessary business metadata, you can publish it to the Amazon SageMaker Catalog by choosing Publish Asset.

Publish Asset option on the enriched Snowflake asset in SageMaker Catalog

The Snowflake enriched asset is now available to data consumers across your organization. Other users can discover it, subscribe to it, and consume it without data replication.

Implementing data quality rules with AWS Glue Data Quality

This section explains how to apply data quality validations to Snowflake data using AWS Glue Data Quality and visualize results in Amazon SageMaker Catalog.

Setting up the custom transform

Upload two files to an Amazon S3 bucket in the same AWS account where you run AWS Glue:

Copy both files to your AWS Glue assets S3 bucket in the transforms folder (s3://aws-glue-assets-<account-id>-<region>/transforms). AWS Glue Studio reads all JSON files from this folder to register custom visual transforms.

Custom transform files uploaded to the transforms folder in the AWS Glue assets S3 bucket

In the following sections, we walk you through the steps of building an ETL pipeline for data quality validation using AWS Glue Studio.

Creating the AWS Glue Visual ETL job

AWS Glue for Spark provides built-in support for reading from Snowflake data sources.

To create a new visual ETL job:

  1. Open the AWS Glue console at https://console.aws.amazon.com/glue/. Choose ETL jobs, then Visual ETL.

    AWS Glue console showing ETL jobs and the Visual ETL option

Establishing the Snowflake connection

To add a Snowflake source:

  1. In the job pane, choose Snowflake as your source. For Snowflake connection, select the connection that you created earlier. Specify the relevant schema and table for data quality checks.

    Snowflake source node configured in the AWS Glue visual ETL job

The visual editor displays the Data source properties panel where you select your connection, database, and enter a custom query targeting your Snowflake table.

Applying data quality rules

After establishing the Snowflake connection, configure the data quality evaluation step using the Data Quality Definition Language (DQDL).

To add data quality validation:

  1. Choose Transform and choose Evaluate Data Quality.
  2. Define domain-specific data quality rules using DQDL. For more information, see the AWS DQDL documentation.

    Evaluate Data Quality transform with DQDL rules in AWS Glue Studio
  3. Choose to output the data quality results. Optionally, store outcomes in Amazon S3 or publish to Amazon CloudWatch with alert notifications.

The preview of the data quality results from the ruleOutcomes node shows the outcomes of each rule.

Preview of the data quality rule outcomes from the ruleOutcomes node

Post the data quality results to Amazon SageMaker Catalog

To configure the custom transform:

  1. Add the Datazone DQ Result Sink transform to your job.
  2. Connect the ruleOutcomes node output to this transform.
  3. Complete the parameters:
    • Role to assume (Optional): Only needed for associated accounts.
    • Domain ID: Your Amazon SageMaker Unified Studio domain ID (found in the Amazon SageMaker Unified Studio portal).
    • Table name and Schema name: Same values used when creating the Snowflake source transform.
    • Data quality ruleset name: The name you want to give to the ruleset in Amazon SageMaker Catalog.
    • Max results: Maximum number of assets to return in case of multiple matches.

The following image shows the complete job graph with the Datazone DQ Result Sink transform configured.

AWS Glue visual ETL job graph with Snowflake source, Evaluate Data Quality, ruleOutcomes, and Datazone DQ Result Sink nodes

The visual editor displays four nodes connected sequentially: the Snowflake data source, the Evaluate Data Quality transform, the ruleOutcomes SelectFromCollection transform, and the Datazone DQ Result Sink transform.

To configure job parameters:

  1. Choose Job details.
  2. In Job parameters, add the following key-value pair:
    • --additional-python-modules
    • boto3>=1.34.105
  3. Save and run the job.

AWS Glue job parameters with the additional-python-modules key set to boto3

Visualizing data quality results in the SageMaker Catalog

After the AWS Glue ETL job completes, you can view the data quality information directly in Amazon SageMaker Catalog. This is the key outcome of running data quality on a federated source: the asset gains quality scores and metadata without ever leaving Snowflake. This makes it trustworthy and ready for other teams across your organization to use. Data consumers can now discover this asset in Amazon SageMaker Catalog and evaluate its quality before subscribing, without needing direct access to Snowflake or running their own validation.

To view data quality results:

  1. Open the Amazon SageMaker Unified Studio console.
  2. Navigate to your project.
  3. Go to Assets.
  4. Choose the Snowflake data asset.
  5. View the data quality information displayed on the asset page.

The following image shows the asset page in Amazon SageMaker Catalog with the data quality score populated.

SageMaker Catalog asset page showing a populated data quality score for the Snowflake asset

Data Quality tab in SageMaker Catalog showing an overall score of 100 with the movies rule set passed

The Data Quality tab shows an overall score of 100 and lists the rule set movies with a Passed result (1/1). This confirms that the data quality checks from AWS Glue posted successfully to Amazon SageMaker Catalog.

Clean up

To avoid ongoing charges, remove the resources you created during this walkthrough:

  1. Delete the AWS Glue ETL job — Open the AWS Glue console, choose ETL jobs, select your job, and then choose Delete.
  2. Remove the AWS Glue connection — In the AWS Glue console, go to Connections, select the Snowflake connection, and then choose Delete.
  3. Delete the data source in SageMaker Catalog — In your Amazon SageMaker Unified Studio project, go to Data Sources, select the data source you created, and then choose Delete.
  4. Remove S3 assets — Delete the custom transform files from your s3://aws-glue-assets-<account-id>-<region>/transforms/ bucket.
  5. Remove IAM policies — Detach and delete the IAM policies you attached to the AWS Glue job execution role. Remove the role as a domain user and project member.

Conclusion

In this post, we showed you how to connect Snowflake to Amazon SageMaker Unified Studio for centralized data cataloging and quality validation. This approach maintains consistent governance without replicating data. Key benefits include:

  • Query without data movement: Access Snowflake data directly from Amazon SageMaker Unified Studio through federated queries, using the interoperable data architecture of AWS and eliminating time-consuming data replication.
  • Centralized governance: Maintain a single source of truth for data discovery, quality metrics, and governance policies across your distributed data estate.
  • Automated quality validation: Apply consistent data quality rules using AWS Glue Data Quality and visualize results directly in Amazon SageMaker Catalog.
  • Unified collaboration: Support data discovery and sharing across your organization through the publishing capabilities of Amazon SageMaker Catalog.

To get started, open the Amazon SageMaker Unified Studio console. To learn more about related topics, see Cross-account lakehouse governance with Amazon S3 Tables and SageMaker Catalog and Get started with AWS Glue Data Quality dynamic rules for ETL pipelines.


About the authors

Marco Duarte López

Marco Duarte López

Marco is a Data Specialist Solutions Architect at AWS, based in Santiago, Chile. He works with organizations across the region to design modern data architectures and governance frameworks that enable trusted, scalable data consumption. He is a member of the AWS Technical Field Community (TFC) for Analytics, where he specializes in Data & AI Governance, and has led data transformation programs for some of the largest enterprises in the region.

Diego Ortiz

Diego Ortiz

Diego is a Senior Data Strategy Solutions Architect for Latin America based in San Juan, Puerto Rico, with 14+ years of experience in technology roles. He supports organizations across countries and industries to develop data and AI strategies aligned with their business objectives, combining strategic vision with deep technical expertise in data and AI technologies. He is a core member of the Data Governance global community at AWS and leads the analytics technical community in the Spanish-speaking countries of Latin America.

[$] Ways to encrypt data on servers

Post Syndicated from jake original https://lwn.net/Articles/1092553/

At the 2026 edition of FOSSY, Romeo
Solano gave a fast-paced, humorous presentation on what could have been a
rather boring topic: server encryption. There are a number of threats that
we face in today’s world, from criminals, government overreach, espionage,
and more, that can be thwarted with encryption. But encrypting data on a
system that may live elsewhere, without any access to its keyboard at boot
time, is rather more difficult than encrypting the disk of a laptop.
Solano described the problems and gave a tour of some of the solutions in
the talk.

„Господът на световете“. Извънземни и ислям

Post Syndicated from Атанас Шиников original https://www.toest.bg/gospodut-na-svetovete-izvunzemni-i-islyam/

„Господът на световете“. Извънземни и ислям

Като заклет читател на фантастика във всичките ѝ разновидности и жанрове прехвърлям през ума си възможни тематични връзки с вярата в Аллах. Имаше навремето един сериал – „Бойна звезда: Галактика“, римейк на по-стария от 70-те години на миналия век. В него човечеството е почти унищожено от расата на роботите сайлони, които в старата версия на сериала са творение на извънземна раса, а пък в последната – човешко. Интересното е, че в сериала военизираните роботи изповядват религия, която, противно на тази на хората, е строго монотеистична. Е, не се казва точно каква…

В една от любимите ми класики пък – „Хиперион“ на Дан Симънс, нещата стават една степен по-конкретни. Разказът се разгръща през XXVIII век и следва структурата на класическите „Кентърбърийски разкази“ на Джефри Чосър от XIV век. Един от разказвачите поклонници в романа е полковник Федман Касад, роден на Марс, в етническа група, която все още се определя като палестинци. Първият му сблъсък с радикалния ислям се случва на планетата Ком-Рияд. Името ѝ очевидно събира най-доброто от шиизма и сунизма, доколкото Ком, или Кум, днес е главен шиитски град в Иран, а пък Рияд е столицата на сунитска Саудитска Арабия. Там самопровъзгласил се нов пророк обявява джихад срещу господстващата политическа структура, известна като Хегемонията. Типичен екшън герой от добрите, Касад заявява, че Богът на исляма нито би одобрил, нито би позволил избиването на невинни – тук малко ми напомня на Ясер Арафат, когото гледах през 2001 г. в Дамаск да казва по телевизията, че

ислямът не насърчава убийството на нищо живо.

А вселената на Дан Симънс, колкото и владяна от човечеството, допуска наличието на нечовешки разумни раси. Предимно в миналото.

Ако се приземим обратно на Земята, някои от мрачните фантазии на Хауърд Лъвкрафт също съжителстват с вярата в Аллах или поне с негови последователи. Не се ли пръква зловещият Ал-Азиф („Некрономикон“), този магнум опус на окултната литература, в безумните видения на лудия арабин Абдул Алхазред от Йемен по времето на Омеядския халифат? Отстъпник от исляма, Алхазред се прекланя пред уродливите космически извънземни Йог-Сотот и Ктхулу и под руините на безименен пустинен град открива следи от древни космически раси, отдавна посещавали Земята. А пък смъртта му е описана от историка Ибн Халликан, според чийто разказ лудият арабин е погълнат от невидимо чудовище посред бял ден. Забавното е, че такъв историк действително съществува, живее през XIII век и пише история под формата на биографични речници със справки за живота на изтъкнати мюсюлмани.

Малко по-различен е случаят с „Дюн“ на Франк Хърбърт. Ако и светът на планетата Аракис да е антропоцентричен и извънземни – поне такива, каквито очаква популярната представа („нечовешка разумна форма на живот“) – да не съществуват там, имаме множество населени светове, които се подчиняват на трагичния пророчески образ на Пол Атреидски – Муад’Диб. Всъщност може да гледате на „Дюн“ като на наръчник за религиозната терминология на арабски. Махди, „Напътствания от Аллах“, е едно от прозвищата на Пол Атреидски, но и месианската фигура от края на времето в исляма. Джихад е свещената война (но и „върховно усилие“), водена от пустинните племена на фремените, напомнящи на воините на Пророка от VII век в пясъците на Арабия. Шай-Хулуд, пустинният червей, който произвежда космическата подправка меланж, идва от арабското „Нещо от вечността“ (шай’ хулуд). Лисан ал-гайб на арабски си е „езикът на неведомото“ и фремените го използват като название на пророка си. Примерите са десетки и за моя огромна изненада, когато през 1998 г. попаднах в тукашната арабистика, след като вече бях чел „Дюн“, открих, че доста плътно следват арабския. Една от любимите ми препратки е изразът би-лал кайфа, който фремените използват като „Амин!“. Той пък идва от арабското би-ла кайфа („без [да се пита] как!“), фраза, често свързвана в традиционното мюсюлманско богословие с фигурата на Абу л-Хасан ал-Ашари от IX–X век, който я използва, когато го питат как следва да се приемат и тълкуват Божиите качества в Корана. Ей така, без да се пита как.

Само че това е лесната част от разговора за вярата в Аллах в свят (или светове), където е възможно човешкото и извънземното да споделят една вселена. Защото става въпрос за фантастика. По-голямата част от нея може да носи етикета „научна“, но всички знаем, че става въпрос за фикция. Авторите не са мюсюлмани. Затова и могат да се отдадат на симпатична литературна игра, в която ислямът е вторичен, пък бил той и екзотичен играч. В този смисъл е лесно пластовете на въображаемия разказ да съвместят едновременно разговора за наличието на множество светове, разумен живот извън Земята и сферата на човешкото с едно изцяло въобразено, външно възприятие на мюсюлманския монотеизъм. В несериозността на този подход се крие и неговата безопасност.

Съвсем различно е да запретнем ръкави и да хванем (звездния) бик за рогата. Да надзърнем как мюсюлманите възприемат извънземни разумни форми на живот не през призмата на литературната фикция, а в сферата на религиозния закон (шари‘а), право (фикх) и богословието (калам). А с тях шега не бива. Който смята обратното, може да почете например за традиционните, предписани от Свещения закон, наказания за отрязването на ръката на крадеца в Корана („А на крадеца, мъж или жена, отсичайте ръцете за наказание, защото са присвоили – възмездие от Аллах“, 5:38), за отсъждането на убийство чрез хвърляне на камъни (раджм) по поводи като прелюбодейство. Или за богохулство, подигравка с Пророка, отстъпление (ридда) и оскверняване на Корана, да речем.

Сериозността, с която консервативните мюсюлмани възприемат свещените текстове и тяхната способност да определят дадени поведенчески модели, ясно личи в повлияни от Свещения закон държавни законодателни системи като например тези в Саудитска Арабия, Иран или Афганистан. Тъй че към всяка тема в обхвата на Свещения закон мюсюлманите следва да се отнасят с подобаваща сериозност. А не като Салман Рушди, който от 2022 г. носи върху лицето си (и не само) последствието от пренебрежителното отношение към Пратеника на Аллах, впрочем като далечен отзвук от фетвата на аятолах Хомейни срещу него през 1989 г.

Впрочем дали старите религиозни авторитети имат какво да кажат по въпроса?

Та нали съществуването на небесни тела, оттук и на други светове, е наблюдавано още от древността. Луна. Планети. Звезди. Там сигурно живее някой, тъй както Земята е обитаема от човека. От религиозна гледна точка пък, независимо коя е конкретната религия, е изключително важно да се знае дали приложимата религиозна рамка за човека на Земята би била валидна и за възможните разумни обитатели на небесните тела. В християнството дилемата влече след себе си въпроси около наличието на грях и съответно нуждата от изкупление. И дали Христос на земята е един за всички, включително и за извънземните, или се предполагат множество негови въплъщения?

В исляма съответно проблематична е валидността на Свещения закон (шари‘а) в неговата цялост за евентуални разумни извънземни форми на живот. Иначе казано, опростенчески, не просто дали има междузвездни „малки зелени човечета“, а важи ли за тях правилото за задължителната молитва (салат) пет пъти на ден. Или къде извършват задължителното за всеки мюсюлманин ритуално поклонение (хадж) в светите места на исляма. И дали пък евентуални разумни нечовешки форми на живот могат въобще да бъдат отговорни (мукаллаф) от юридическа гледна точка. Или пък, още една стъпка по-нататък, какво ще се случи с тях в Деня на възкресението (йаум ал-кийама) и какви евентуално ще бъдат Раят и Адът за тях – все сложни, но реални въпроси.

Ето го един философ – Ибн Рушд от XII век, познат ни като Авероес, когото тези дни превеждам. Той като че ли не е толкова скептичен. В своето съчинение за съвместимостта между вярата и разума разгръща доста интересен аргумент в полза на философията. Тя, казва Авероес, помага на хората да научат повече за Свещения закон, тоест за религията. Оттук и да забраниш философските книги е „угнетителство“ (зулм, абе направо зулум, както влиза в български през турски) спрямо най-достойните измежду хората и живите същества. Защото – казва той –

най-изключителните измежду живите същества заслужават признание от най-способните измежду хората – това са по подразбиране философите.

И колкото по-величаво е едно живо същество, толкова по-голямо нечестие е невежеството спрямо него. Съчинението е сред най-известните на Авероес. А тук очевидно говори за „достойни същества“ извън човешкия род. Знаем, че коментаторската традиция схваща тези му думи като обозначаващи ангелите и Аллах. Но може да натиснем педала на спекулацията и да кажем, че ако и Аллах да прозира в текста чрез позоваването на Коран 31:13 („Съдружаването е огромен гнет“), останалите живи същества могат да бъдат от всякакъв порядък. Разумни и достойни за признание. Нали?

И за да не си мислите, че си фантазирам, следва да кажа, че текстът на мюсюлманското Свещено писание не е толкова строго отричащ, колкото веднага и прибързано бихме предположили. Даже си е направо двусмислено благосклонен. Още в първата глава (сура) – „Откриващата“ (Ал-Фатиха), тази, която всеки мюсюлманин трябва да знае наизуст, защото е част от задължителната молитва, Аллах е наречен „Господа на световете“ (1:2). На Него „се подчинява всичко на небесата и на земята, доброволно или по принуда“ (3:83). Той е сътворил не само конете и мулетата, и магаретата „за да ги яздите и за украса“, но и „каквото не знаете“ (16:8). Тъй де, ако „каквото не знаете“ се появява в един и същи стих паралелно със земния добитък, може да се очакват и живи твари там някъде, където никой друг освен Аллах не знае. „Синовете на Адам“ са почетени и предпочетени от Аллах „да превъзхождат повечето от онези, които сътворихме“ (17:70). Със сигурност знаем, че измежду тези, които са сътворени и над които Аллах е предпочел човека, са ангелите и самият Иблис, известен още с прозвището Шейтан. Именно в това се състои и неговият бунт (2:34).

Един от най-любимите ми стихове обаче е 42:29:

И от Неговите знамения е сътворяването на небесата и на земята, и на тварите, които там е намножил. Той е способен да ги събере, ако пожелае.

Може да е неясно, но не е и отричащо. На небесата и на земята според някои тълкувания има твари, които сам Аллах е намножил. И това също не си го измислям. Тук „тварите“ са обозначени с думата дабба в арабския оригинал. Обикновено означава „добитък“, „добиче“. Разбира се, с по-общо значение на „твар“, „живо същество“, па понякога и „звяр“. Като в онези свещени текстове от Корана и Сунната, в които се говори за „Звяра от земята“ (Дабба мин ал-ард, „от земята едно животно“, Коран 27:82), който в края на времето, преди настъпването на Съдния ден, се появява почти като зверовете от виденията на библейския пророк Даниил или Откровението на св. Йоан Богослов.

За да не ме обвините, че нещо притурям върху традицията, има и големи тълкуватели, които мислят като мен. Вземете един Аз-Замахшари от XI век. Името идва от родното му място Замахшар в Иран, само че пътува много, както често правят учените тогава, че по някое време даже се установява в Мека. Толкова е начетен, че носи прозвището „Съсед, Приближен на Аллах“ (Джар Аллах). И в най-известния му коментар на Корана, т.нар. Ал-Кашшаф („Разкриващия“), той разсъждава също върху предполагаемите „небесни добичета“ от стих 42:29. Може ангелите – мир тям! – да се движат като птиците, пише Аз-Замахшари. А пък въобще не е невъзможно в небесата Аллах да е създал някаква небесна жива твар, която да ходи по тях, тъй както хората ходят по земята,

Пречист е Той, който създава различни видове същества, онова, което знаем, и онова, което не знаем!

Тази небесна жива твар си я нарича направо „животно“ (хайауан), откъдето на български е дошло хайван. Разбирайте, голям небесен хайван. Същото мнение се споделя и от друг голям коментатор, Фахр ад-Дин ар-Рази в „Ключове към неведомото“ (Мафатих ал-гайб), като тук „неведомото“ е същото като гайб в Лисан ал-гайб от „Дюн“. И при него откриваме темата за Аллах, който може да е създал „различни видове живи твари (хайвани!), които ходят по небесата така, както хората ходят по земята“. Да удължа и аз още малко интерпретативната нишка: ако в някои тълкувания е възможно „добиче“ (дабба) да обозначава и ангелите, и хората, и не само, то защо хайауан да изключва разумност?

Колегата му Ал-Куртуби („от Кордоба“) от XIII век обаче е по-скептичен. Няма такива неща в неговия коментар. Сигурно защото цитира много ранен коментар, може би първия запазен, този на Муджахид от VII – началото на VIII век, който бил казал, че „добичетата“ от въпросния стих са живи същества и се имат предвид ангелите и хората, и то на земята. Е, не сме оставени съвсем без никакви „извънземни“, доколкото за ангелите също се предполага, че обитават пространството над земята, някъде в небесата. Съществуват и други гледни точки – животните и насекомите в земното небе, гигантски животни в небето, някъде над видимата му част, че дори и животните в Рая.

В Коран 52:4 пък се говори за „посещавания Дом“. Много интересно, в признатия за авторитетен превод на български език от Цветан Теофанов имаме бележката към този стих, че „посещаваният дом“ тук е или храмът Кааба, или „небесното място, което ангелите обхождат“. Бележката е неслучайна, доколкото загатва за споменатите в достоверно предание от Пророка хиляди ангели, които се молят в свято място на небето, подобно на земната мюсюлманска светиня в Мека. Оттук пък и имало популярно предание, че по една свещена Кааба съществува във всяко едно от седемте небеса, където техните жители (ахл) ходят на поклонение. А пък „жителите“ може да бъдат не само ангели, нали? Коментатори добавят още, че „световете“ от Коран 1:2 могат да бъдат огромен брой, като някои предания говорят, че светът на хората и джиновете (не забравяйте, че те не са ангели, имат особен статус и са направени от огън според стих 15:27) е един от тях, ангелите живеят във втори, но извън това има още десетки хиляди, в които само Аллах знае кой живее. В стих 65:12 се добавя допълнителна възможност за други светове. „Аллах е, Който сътвори седем небеса, и от земята – също толкова“ допуска не само небесата да са седем, но и земите.

Ал-Куртуби, колкото и да е консервативен спрямо „небесните животни“, се опира на колегата си от XI век Ал-Мауарди, онзи същия, когото ИДИЛ използва като аргумент за властовата легитимност на Абу Бакр ал-Багдади, просто защото е един от най-известните политически теоретици на исляма. Ал-Куртуби очертава картина, при която седемте земи съществуват, подобно на небесата, една над друга, отделени от огромно разстояние, а във всяка от тях има обитатели (суккан). А пък тълкувателят Ал-Кауаши от XIII век добавя, че тъй както във всяко от небесата има ангели, така и във всяка от седемте земи има създадени хора (ахл), които имат свои собствени чудни качества. Че даже и според предание на Пророка във всяка земя имало по един Пророк като Мохамед, по един Адам, по един Нух (Ной), по един Ибрахим (Авраам) и пр. За всички, които се интересуват повече, по темата има чудесни неща на Шоайб Малик, Йорг Детерман и Парандис Таджбакш¹. За да не останете с впечатлението, че откриваме топлата вода, когато разлистим дебелите средновековни коментари на Корана и Сунната. Макар че откриването на топлата вода в някои квартали на София лятоска си е направо небесно откровение само по себе си.

Ала все пак трябва да сме почтени към изворовия материал, колкото и понякога да ни се ще да си изфантазираме нещо ей така, за забавление, с риск да си навлечем гнева на правоверните. Общото мнение е, че разумните същества във вселената – оттук и такива, които са религиозно задължени и отговорни (мукаллаф) по религиозния закон – са ангелите, хората и джиновете. Измежду тях ангелите и джиновете някак съответстват на дефиницията за „разумен, извънземен (донякъде)“ живот. Оттам нататък не са изключени възможности за наличие на множество светове, населени с техните обитатели, които евентуално да са разумни (оттук и отговорни по Свещения закон). Но както завършва всяко уважаващо себе си изказване в мюсюлманското право, Аллах знае най-добре!

1 Islamic Theology and Extraterrestrial Life: New Frontiers in Science and Religion. Ed. by Shoaib Ahmed Malik and Jörg Matthias Determann. London: I.B. Tauris, 2024. В изследването Мохаммад Махди Монтасери разглежда подробно тълкуванията на Коран 42:29, а Файсал Абдуллах повдига завесата откъм други стари коментари, които отварят възможността за извънземен разумен живот. В тази посока си струва човек да прегледа и Tajbakhsh, P. Islam and Extraterrestrial Life. Cambridge Essentials. Cambridge: Cambridge University Press, 2026.

(Следва продължение.)


В рубриката „Ориент кафе“ Атанас Шиников поднася любопитни теми, свързани не толкова с горещата политика, колкото с историята и културата на Близкия изток. А той, древен и днешен, е по-близко до нас и съвремието ни, отколкото си представяме.

Security updates for Wednesday

Post Syndicated from corbet original https://lwn.net/Articles/1094720/

Security updates have been issued by AlmaLinux (kernel, kernel-rt, libkcapi, nginx, nginx:1.24, openssl, osbuild-composer, perl, perl:5.32, python-tornado, rsync, and rust), Debian (cjose and nginx), Fedora (environment-modules, erlang, GitPython, knot, perl-Authen-SASL, python-configargparse, ruby, rubygems, and sblim-sfcb), Oracle (firefox, git-lfs, gstreamer1-plugins-base, kernel, libkcapi, nginx, nginx:1.26, openssl, osbuild-composer, perl, perl-YAML-Syck, postgresql18, python-tornado, and rust), Red Hat (fence-agents, git-lfs, microcode_ctl, osbuild-composer, podman, python-pyasn1, and resource-agents), SUSE (389-ds, ant, bson-devel, chirp-20260911, docker, gimp, google-cloud-sap-agent, hauler, kernel, kimi-code, libpcap, python-GitPython, python310, syncthing, yast2-samba-client, and zstd-jni), and Ubuntu (aom, imagemagick, kitty, openssh, phpseclib, policykit-1, python-sql, python-webob, shibboleth-sp, simplesamlphp, snapcast, srt, and suricata-update).

The collective thoughts of the interwebz