Post Syndicated from Matt Granger original https://www.youtube.com/watch?v=ZoH9vjEUunM
"Baby Parades"
Post Syndicated from The History Guy: History Deserves to Be Remembered original https://www.youtube.com/watch?v=m0WV4P1KyaM
[$] LWN.net Weekly Edition for February 13, 2025
Post Syndicated from corbet original https://lwn.net/Articles/1008279/
Inside this week’s LWN.net Weekly Edition:
- Front: BPF load-time checking; IRQ suspension; Rust for Linux; Rewriting coreutils; Selfish contributors; emlearn.
- Briefs: RfL policy; OpenWrt 24.10.0; Arti 1.4.0; LibreOffice 25.2; OpenInfra; Plasma 6.3; Attacks on Codeberg; Quotes; …
- Announcements: Newsletters, conferences, security updates, patches, and more.
Comic for 2025.02.13 – Cough
Post Syndicated from Explosm.net original https://explosm.net/comics/cough
New Cyanide and Happiness Comic
Childbearing
Post Syndicated from Oglaf! -- Comics. Often dirty. original https://www.oglaf.com/childbearing/
HPE ProLiant Gen12 Launched Ahead of Intel Granite Rapids-SP
Post Syndicated from Cliff Robinson original https://www.servethehome.com/hpe-proliant-gen12-launched-ahead-of-intel-granite-rapids-sp/
The new HPE ProLiant Gen12 family is out ahead of the Intel Granite Rapids-SP (Xeon 6700P) processors launching later this quarter
The post HPE ProLiant Gen12 Launched Ahead of Intel Granite Rapids-SP appeared first on ServeTheHome.
Codeberg responds to hate attacks
Post Syndicated from corbet original https://lwn.net/Articles/1009227/
The Codeberg development forge has
recently been subject to sustained attacks resulting in, among other
things, abusive email being sent to the site’s users. The organization has
now put up a
description and a defiant response:
Extreme right forces actively target members of our communities and
discriminate based on ethnicity and gender, political background,
sexual orientation, disabilities, nationality and faith. However
diversity is an important asset in free/libre software communities
and it is what makes our software great and development productive.By targeting some of our most active translators, nicest
designers, best developers and all other motivated contributors,
they are hurting the free/libre software ecosystem as a whole.
The importance of encryption and how AWS can help
Post Syndicated from Ken Beer original https://aws.amazon.com/blogs/security/importance-of-encryption-and-how-aws-can-help/
February 12, 2025: This post was republished to include new services and features that have launched since the original publication date of June 11, 2020.
Encryption is a critical component of a defense-in-depth security strategy that uses multiple defensive mechanisms to protect workloads, data, and assets. As organizations look to innovate while building trust with customers, they need to meet critical compliance requirements and improve data security. Encryption, when used correctly, adds a layer of protection against unauthorized access that can help you strengthen data protection, adhere to regulations and standards, and enhance the security of communications.
How and why does encryption work?
Encryption works by using an algorithm with a key to convert data into unreadable data (ciphertext) that can only become readable again with the right key. For example, a simple phrase like “Hello World!” may look like “1c28df2b595b4e30b7b07500963dc7c” when encrypted. There are several different types of encryption algorithms, all using different types of keys. A strong encryption algorithm relies on mathematical properties to produce ciphertext that can’t be decrypted using any practically available amount of computing power without also having the necessary key. Therefore, protecting and managing the keys becomes a critical part of any encryption solution.
Encryption as part of your security strategy
An effective security strategy begins with stringent access control and continuous work to define the least privilege necessary for persons or systems accessing data. When using the AWS Cloud, you adopt the model of shared responsibility. You are responsible for managing your own access control policies. Encryption is a critical component of a defense-in-depth strategy because it can mitigate weaknesses in your primary access control mechanism. What if an access control mechanism fails and allows access to the raw data on disk or traveling along a network link? If the data is encrypted using a strong key, as long as the decryption key is not on the same system as your data, it is computationally infeasible for a bad actor to decrypt your data.
To show how infeasible this is, let’s consider the Advanced Encryption Standard (AES) with 256-bit keys (AES-256). It’s the strongest industry-adopted and government-approved algorithm for encrypting data. AES-256 is the technology we use to encrypt data in AWS, including Amazon Simple Storage Service (S3) server-side encryption. It would take at least a trillion years to break using current (and foreseeable future) computing technology. Current research suggests that even the future availability of quantum-based computing won’t sufficiently reduce the time it would take to break AES-256 encryption.
But what if you mistakenly create overly permissive access policies on your data? A well-designed encryption and key management system can also help prevent this from becoming an issue, because it separates access to the decryption key from access to your data.
Requirements for an encryption solution
To get the most from an encryption solution, you need to think about two things:
- Protecting keys at rest: Are the systems using encryption keys secured so the keys can never be used outside the system? In addition, do these systems implement encryption algorithms correctly to produce strong ciphertexts that cannot be decrypted without access to the right keys?
- Independent key management: Is the authorization to use encryption independent from how access to the underlying data is controlled?
There are third-party solutions that you can bring to AWS to help meet these requirements. However, these systems can be difficult and expensive to operate at scale. AWS offers a range of options to simplify encryption and key management.
Protecting keys at rest
When you use third-party key management solutions, it can be difficult to gauge the risk of your plaintext keys leaking and being used outside the solution. The keys have to be stored somewhere, and you can’t always know or audit all the ways those storage systems are secured from unauthorized access. The combination of technical complexity and the necessity of making the encryption usable without degrading performance or availability means that choosing and operating a key management solution can present difficult tradeoffs. The best practice to maximize key security is using a hardware security module (HSM). This is a specialized computing device that has several security controls built into it to help prevent encryption keys from leaving the device in a way that could allow an adversary to access and use those keys.
One such control in modern HSMs is tamper response, in which the device detects physical or logical attempts to access plaintext keys without authorization, and destroys the keys before the attack succeeds. Because you can’t install and operate your own hardware in AWS datacenters, AWS offers two services using HSMs with tamper response to protect customers’ keys: AWS Key Management Service (AWS KMS), which manages a fleet of HSMs on the customer’s behalf, and AWS CloudHSM, which gives customers the ability to manage their own HSMs. Each service can create keys on your behalf, or you can import keys from your on-premises systems to be used by each service.
The keys in AWS KMS or AWS CloudHSM can be used to encrypt data directly, or to protect other keys that are distributed to applications that directly encrypt data. The technique of encrypting encryption keys is called envelope encryption, and it enables encryption and decryption to happen on the computer where the plaintext customer data exists, rather than sending the data to the HSM each time. For very large data sets (e.g., a database), it’s not practical to move gigabytes of data between the data set and the HSM for every read/write operation. Instead, envelope encryption allows a data encryption key to be distributed to the application when it’s needed. The “master” keys in the HSM are used to encrypt a copy of the data key so the application can store the encrypted key alongside the data encrypted under that key. Once the application encrypts the data, the plaintext copy of data key can be deleted from its memory. The only way for the data to be decrypted is if the encrypted data key, which is only a few hundred bytes in size, is sent back to the HSM and decrypted.
The process of envelope encryption is used in AWS services in which data is encrypted on a customer’s behalf (which is known as server-side encryption) to minimize performance degradation. If you want to encrypt data in your own applications (client-side encryption), you’re encouraged to use envelope encryption with AWS KMS or AWS CloudHSM. Both services offer client libraries and SDKs to add encryption functionality to their application code and use the cryptographic functionality of each service. The AWS Encryption SDK is an example of a tool that can be used anywhere, not just in applications running in AWS. To make it easier for customers to encrypt data in databases like Amazon DynamoDB, we built the AWS Database Encryption SDK. The AWS Database Encryption SDK is a set of software libraries that enable you to use client-side encryption in your database design, including record-level encryption of database items. Today, the AWS Database Encryption SDK supports Amazon DynamoDB with attribute-level encryption.
Because implementing encryption algorithms and HSMs is critical to get right, all vendors of HSMs should have their products validated by a trusted third party. HSMs in both AWS KMS and AWS CloudHSM are validated under the National Institute of Standards and Technology’s FIPS 140 program, the standard for evaluating cryptographic modules. This validates the secure design and implementation of cryptographic modules, including functions related to ports and interfaces, authentication mechanisms, physical security and tamper response, operational environments, cryptographic key management, and electromagnetic interference/electromagnetic compatibility (EMI/EMC). Encryption using a FIPS 140 level 3 validated cryptographic module is often a requirement for other security-related compliance schemes like FedRamp and HIPAA-HITECH in the U.S., or the international payment card industry standard (PCI-DSS).
Independent key management
While AWS KMS and AWS CloudHSM can protect plaintext master keys on your behalf, you are still responsible for managing access controls to determine who can cause which encryption keys to be used under which conditions. One advantage of using AWS KMS is that the policy language you use to define access controls on keys is the same one you use to define access to all other AWS resources. Note that the language is the same, not the actual authorization controls. You need a mechanism for managing access to keys that is different from the one you use for managing access to your data. AWS KMS provides that mechanism by allowing you to assign one set of administrators who can only manage keys and a different set of administrators who can only manage access to the underlying encrypted data. Configuring your key management process in this way helps provide separation of duties you need to avoid accidentally escalating privilege to decrypt data to unauthorized users. For even further separation of control, AWS CloudHSM offers an independent policy mechanism to define access to keys.
In 2022, AWS KMS launched support for external key stores (XKS), a feature that allows you to store AWS KMS customer managed keys on an HSM that you operate on premises or at a location of your choice. At a high level, AWS KMS forwards requests for encryption and decryption to your HSM. Your key material never leaves your HSM. This can help you unblock use cases for a small portion of highly regulated workloads where encryption keys should be stored and used outside of an AWS data center. However, XKS forces a significant shift in the shared responsibility model—you now have responsibility for the durability, throughput, latency, and availability of your KMS key. If that key is lost or destroyed, you could permanently lose access to data, and if an XKS key becomes unavailable, all workloads in AWS that are dependent on that XKS key will be inaccessible.
Even with the ability to separate key management from data management, you can still verify that you have configured access to encryption keys correctly. AWS KMS is integrated with AWS CloudTrail so you can audit who used which keys, for which resources, and when. This provides granular vision into your encryption management processes, which is typically much more in-depth than on-premises audit mechanisms. Audit events from AWS CloudHSM can be sent to Amazon CloudWatch, the AWS service for monitoring and alarming third-party solutions you operate in AWS.
Encrypting data at rest and in transit
AWS services that handle customer data, encrypt data that is sent from one system to another—known as data in transit—provide options to encrypt data at rest. AWS services that offer encryption at rest using AWS KMS or AWS CloudHSM use AES-256. None of these services store plaintext encryption keys at rest—that’s a function that only AWS KMS and AWS CloudHSM may perform using their FIPS 140 level 3 validated HSMs. This architecture helps minimize the unauthorized use of keys.
When encrypting data in transit, AWS services use the Transport Layer Security (TLS) protocol to provide encryption between your application and the AWS service. Most commercial solutions use an open source project called OpenSSL for their TLS needs. OpenSSL has roughly 500,000 lines of code with at least 70,000 of those implementing TLS. The code base is large, complex, and difficult to audit. Moreover, when OpenSSL has bugs, the global developer community is challenged to not only fix and test the changes, but also to make sure that the resulting fixes themselves do not introduce new flaws.
AWS’s response to challenges with the TLS implementation in OpenSSL was to develop our own implementation of TLS, known as s2n, or signal to noise. We released s2n in June 2015, which we designed to be small and fast. The goal of s2n is to provide you with network encryption that is easier to understand and that is fully auditable. We released and licensed it under the Apache 2.0 license and hosted it on GitHub.
We also designed s2n to be analyzed using automated reasoning to test for safety and correctness using mathematical logic. Through this process, known as formal methods, we verify the correctness of the s2n code base every time we change the code. We also automated these mathematical proofs, which we regularly re-run to ensure the desired security properties are unchanged with new releases of the code. Automated mathematical proofs of correctness are an emerging trend in the security industry, and AWS uses this approach for a wide variety of our mission-critical software.
Similarly, in 2022, we released s2n-quic, an open-source Rust implementation of the QUIC protocol that was added to our set of AWS encryption open source libraries. QUIC is an encrypted transport protocol designed for performance and is the foundation of HTTP/3. It is specified in a set of IETF standards that were ratified in May 2021. Amazon CloudFront HTTP/3 support is built on top of s2n-quic, due to its emphasis on performance and efficiency. You can learn more about s2n-quic in this Security Blog post.
Implementing TLS requires using encryption keys and digital certificates that assert the ownership of those keys. AWS Certificate Manager and AWS Private Certificate Authority are two services that can simplify the issuance and rotation of digital certificates across your infrastructure that needs to offer TLS endpoints. Both services use a combination of AWS KMS and AWS CloudHSM to generate and/or protect the keys used in the digital certificates they issue.
Encrypting data in use
You might also have use cases for protecting data that is actively being used by federated learning models or other applications. Cryptographic computing—a set of technologies that allow computations to be performed on encrypted data, so that sensitive data is not exposed—is a methodology for protecting data in use.
Consider the example of an insurance company that works with other companies to develop machine learning models for insurance fraud detection. You might need to use sensitive data about your customers as training data for your models, but you don’t want to share your customer data in plaintext form with the other companies. Cryptographic computing gives organizations a way to train models collaboratively without exposing plaintext data about their customers to each other, or to a cloud provider like AWS. You can read more about cryptographic computing in this AWS Security Blog post.
Today, you can see cryptographic computing at work in AWS Clean Rooms, a service that helps companies and their partners more easily and securely analyze and collaborate on their collective datasets—all without sharing or copying one another’s underlying data. AWS Clean Rooms has a feature called Cryptographic Computing for AWS Clean Rooms (C3R) that cryptographically protects your data even while it is being processed by an AWS Clean Rooms collaboration.
The role of end-to-end encryption in secure communications
End-to-end encryption (E2EE) is a method of secure communication between two or more parties that combines encryption in transit and encryption at rest to protect data from unauthorized access, interception, or tampering. Decryption happens only on the parties you intend to communicate with, and no service providers in between. Every call, message, and file is encrypted with a unique private key and remains protected in transit. Unauthorized parties can’t access communication content, because they don’t have the private key required to decrypt the data.
AWS Wickr is an end-to-end encrypted messaging and collaboration service that protects one-to-one and group messaging, voice and video calling, file sharing, screen sharing, and location sharing with 256-bit encryption. With Wickr, each message gets a unique AES private encryption key and a unique Elliptic-curve Diffie–Hellman (ECDH) public key to negotiate the key exchange with recipients. Message content—including text, files, audio, or video—is encrypted on the sending device (your iPhone, for example) by using the message-specific AES key. This key is then exchanged by using the ECDH key exchange mechanism, so that only intended recipients can decrypt the message.
Quantum computing and post-quantum cryptography
Quantum computing is a field of technology that uses quantum mechanics to solve complex problems faster than on classical computers. Quantum computers are able to solve certain types of problems faster by taking advantage of quantum mechanical effects, such as superposition and quantum interference. For cryptography, this has implications that affect traditional encryption mechanisms such as asymmetric key encryption, which is often used for protecting data in transit (TLS) or creating hash-based signatures to verify the integrity and authenticity of a message or file. Quantum computers, if they are performant and stable enough, could theoretically compromise the security of asymmetric key algorithms like RSA, Elliptic Curve Cryptography (ECC), or Diffie-Hellman key agreement schemes. Based on current research, symmetric key algorithms like AES are not considered to be at risk from a quantum computer, because the key length of 256 bits is already sufficient to compensate for a decrease in cryptographic key strength posed by quantum algorithms.
AWS gives customers the option of evaluating post-quantum algorithms alongside traditional algorithms, using hybrid schemes that make use of both classic cryptography and newer post-quantum cryptographic (PQC) algorithms that are designed to be resistant to quantum computer threats. AWS has taken the first step in deploying PQC by implementing ML-KEM, a module lattice-based key encapsulation mechanism, within AWS-LC, our open source FIPS-140-3 validated cryptographic library. AWS-LC is the core cryptographic library used throughout AWS. Specifically, AWS-LC is used in s2n-tls, our open source TLS implementation used across AWS services with HTTPS-based endpoints.
We have also deployed post-quantum s2n-tls with AWS KMS, AWS Certificate Manager (ACM), and AWS Secrets Manager TLS endpoints—bringing the benefits of post-quantum cryptography to customers who enable hybrid post-quantum TLS in their AWS SDK to connect to those services. AWS Transfer Family also supports post-quantum, hybrid SFTP file transfers. You can read more about our efforts to migrate more AWS managed service endpoints to PQC over TLS in this AWS Security blog post. You can also find information about the work of Amazon and AWS in cryptographic research and improvements on the Amazon Science Blog.
Encrypt everything, everywhere
AWS provides customers the ability to encrypt everything, everywhere. Customers can encrypt data at rest, in transit, and in memory, with a few clicks in the AWS Management Console, or an AWS API call. Services like Amazon Simple Storage Service (Amazon S3) encrypt new objects by default, and also support the use of customer managed AWS KMS keys to give customers more control over their encryption keys. Importantly, AWS KMS uses techniques like envelope encryption and highly scalable key management infrastructure to enable AWS services like Amazon S3 or Amazon Elastic Block Store (Amazon EBS) to encrypt data with minimal performance impact to customer applications.
AWS is also consistently working to improve the performance and security of our customers’ data as it moves between networks or devices. As of June 2024, all AWS API endpoints support TLS 1.3 and require at least TLS 1.2 or higher. By using TLS 1.3, you can decrease your connection time by removing one network round trip for every connection request, and can benefit from some of the most modern and secure cryptographic cipher suites available today.
Customers who require memory encryption can use AWS Graviton, our custom-built family of processors based on ARM. AWS Graviton2, AWS Graviton3, and AWS Graviton3E support always-on memory encryption. The encryption keys are securely generated within the host system, do not leave the host system, and are destroyed when the host is rebooted or powered down. Memory encryption is also supported for other instance types; see the EC2 documentation for more details.
As part of our AWS Digital Sovereignty Pledge, we commit to continue to innovate and invest in additional controls for encryption features so that our customers can encrypt everything, everywhere with encryption keys managed inside or outside the AWS Cloud.
Summary
At AWS, security is our top priority. We are committed to helping you control how your data is used, who has access to it, and how it is protected. By building and supporting encryption tools that work both on and off the cloud, we help you secure your data and enable compliance across your environment. We put security at the center of everything we do to make sure that you can protect your data using best-of-breed security technology in a cost-effective way.
If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, start a new thread on the AWS KMS forum or the AWS CloudHSM forum, or contact AWS Support.
Числото, което ще чуете днес, е грешно
Post Syndicated from Боян Юруков original https://yurukov.net/blog/2025/greshno-chislo/

В следващите дни ще срещнете едно число често из медиите – 48754. Толкова раждания е имало в България през 2024-та г. поне според сайта clinica.bg. С това число има много проблеми, но се цитира редовно по това време в последните години заради острата липса на други данни – също толкова грешни или изцяло подправени, но подходящи за генериране на сензация.
Писал съм много по темата в последните 15 години и накрая ще сложа изчерпателен списък с текстовете ми разглеждащи различни аспекти на данните за раждаемостта, както и хронологията на проблемите със съобщаването им. Тук ще се опитам сравнително кратко да обясня защо горното число е грешно, от къде е взето и защо спрях отдавна да следя данните, които въпросния сайт съобщава.
Още на 3-ти януари предупредих в социалките, че това число ще излезе около тази дата. Дадох за пример разминаването миналата година с няколко хиляди деца на тогавашното число изнесено от clinica.bg и данните на НСИ. Проблемът на данните им е първо източникът, второ времето на справката и трето какво всъщност показва и какви твърдения правят с него.
Първо, те твърдят, че се базира на данните на НЗОК за заплатени раждания в страната. Таблицата, която показват, дава разбивка за брой секцио, недоносени, усложнения и прочие. Тази справка не е от НЗОК, а по-специално от регистъра за ражданията. Това е един злополучен регистър, за който ще четете доста в списъка със статии долу, но за сега трябва да знаете, че болниците следва да подават данни за всяко раждане и детайлите по него отделно от клиничните пътеки. Знам, че са взели данните от там, защото през 2018-та получих идентична разбивка по болници и публикувах статистика от нея. Колкото и да беше интересна, заради описаните по-долу проблеми с качеството на данните спрях да я следя, защото се обезсмисля.

Макар болниците да имат задължение до три дни да публикуват данни за ражданията, много малко го правят. Някои въвеждат със забавяне от 3 до 6 месеца, някои не въвеждат правилно. Контрол и санкции до сега не е известно да е упражняван. Това значи, че данните за някои раждания през 2024-та може да се въведат чак април или май. Това установих след няколко години автоматично следене и анализ на публичната част от регистъра. След анализа ми и предупрежденията, че се използва само за фалшиви новини, въпросната публична част беше спряна. Частта за болниците и задължението им обаче остана. Няма индикации за промяна в липсата на контрол над качеството, което ги прави също толкова ненадеждни сега, колкото бяха преди десет години. Това важи и за разбивката по усложнения и начин на израждане.
Друго сведение, че не са използвали данните на НЗОК за плащания, а регистъра за ражданията е разминаването им с данните на НЦОЗА. Критика към техните данни имам премного и отново ще я намерите в списъка долу. Те също публикуват данни за раждаемостта и използват плащанията на НЗОК по пътеки за източник, но гледат не ражданията, а брой родени. Числото се разминава, но с около 2000 на година – толкова са многоплодните раждания. Дори така не може да се обясни разликата в числата им – за 2023-та НЦОЗА съобщава с доклад на 1-ви февруари, че е имало 49795 живородени, а clinica на 14-ти февруари – за 49610 раждания. Разлика от 185 деца. За 2024-та НЦОЗА казва на 4-ти февруари, че са 49556 живородените, а clinica – на 11-ти февруари, че ражданията са 48754. Разлика от 802. Впрочем, според НСИ за 2023-та ражданията са били 57478 или 7868 повече, т.е. грешка от 13.7%.
Тук идваме към втория проблем – кога са взели данните. Твърдят, че източникът им е един и същ – НЗОК, но справките им са с около 10 дни разлика. Разминаването не би трябвало да има значение, тъй като 2024-та е привършила отдавна, но видимо значение има. Реалният източник е различен и през времето изникват нови записи. Интересно тук е също как въобще са взели данните от регистъра на ражданията. Както споменах, публичната част е спряна, а справките по болници никога не е била част от нея. През 2018-та получих справката от човек работещ в министерството със служебен достъп. После същата справка ми беше отказана по ЗДОИ, но точно тогава нямах време и нерви да ги съдя. Обсъжданият сайт е свързан с бивши служители на министерството, които обаче отдавна не са част от системата. Изниква въпросът дали все още нямат случайно служебен достъп до ресурси, до които не би трябвало да имат. Ако пък са искали справката по ЗДОИ, защо те я получават, а на други се отказва.
Третият проблем е какво твърдят и какво намекват в текста си. Изрично посочват, че числата не включват раждания непокрити от НЗОК „с страната или извън нея“, навярно в отговор на критиката, че изкарват крайно занижени данни спрямо тези на НСИ. С това обаче намекват, че в официалните данни се включват родените в чужбина българчета. Това категорично не е вярно. Първо, методологията на НСИ показва, че те броят по подадени от съобщения за раждане, също както всички актове за гражданско състояние. Такива се издават само на родени на територията на страната. На родените в чужбина се вади ЕГН директно в ГРАО с молба и чуждестранен акт за раждане голяма част от тях се регистрират месеци и години след раждането по различни причини.

По случайност получих справка за родените в чужбина и получили българско ЕГН именно на 11-ти февруари, когато излезе и статията на clinica.bg. Ще пусна отделна статия с подробна информация за последните 35 години, но накратко – за българчетата родени в чужбина, на които родителите им са извадили български паспорт скоро след раждане през 2024-та (т.е. подали молба до края на януари 2025-та) са 8029. Тези родени през 2023-та вече са 15031, защото родителите им са имало повече време да се приберат и извадят паспорт. През последните години общия брой се върти около 20 хиляди деца родени зад граница. Така сметката видимо не излиза, а методологията и отговорите на НСИ оборват намеците на clinica.bg.
Обяснението не се получи кратко, а не съм засегнал доста аспекти от темата. Стигнахте до тук, така че може да ви е интересно да прочетете и за тях. Вярвам, че търпеливо ще изчакате и окончателните данни на НСИ през април, когато отново ще си говорим по темата. Пускам списък със статиите ми до тук, но вместо заглавията им слагам отговор на какъв въпрос отговарят. Не са в някакъв определен ред:
- Има ли наистина скок в раждаемостта след пандемията?
- Какво казват данните за ражданията по болници през 2018-та?
- Отговор на твърденията на Костадинов, че се крият данните за ражданията след като регистърът спря
- Регистърът на ражданията спря да работи през 2018-та – как тръгна отново и какво научих?
- Как журналистите използваха регистъра за фалшиви новини?
- Първи анализ на регистъра през 2016-та и как не се изражда през почивните дни
- Какви бяха проблемите със свалянето на данни от регистъра?
- Колко българчета са водени в чужбина между 1990 и 2019?
- Карта на българчетата родени в чужбина между 2005 и 2015
- Дилемата на журналистите за нов източник на бързо число за ражданията след спиране на регистъра
- Анализ за проблемите на регистъра на ражданията и сравнение с падналия Търговски регистър
- Още примери за фалшиви новини покрай ражданията
- Подробен анализ на забавеното въвеждане на данни в регистъра на ражданията и защо е ненадежден за анализи
- Колко са непълнолетните родилки всъщност?
- На каква възраст раждат жените и вярно ли е, че раждат по-малко от майките си? от 2015
- На каква възраст раждат жените у нас? – обновена от 2021-ва
- Знаем ли колко са абортите в България и какво ни казват единствените налични числа?
- Другият проблемен регистър на НЗОК – този на бившия фонд за лечение на деца и как показа колко зле се справя касата
- Защо не може да се разчита на справките на НЦОЗА?
- Справка за мъртвородените в Сливен след нашумял случай там и последвалите спекулации
- Белег за сериозно намаление на абортите дори взимайки предвид всички други фактори
- Как беше затрит раковия регистър и до какво доведе това?
- Защо трябва се съмняване в сензационни данни и изследвания?
- Защо твърденията за рекордно ниска раждаемост са изопачени и често неверни?
- Защо сравнението на смъртността по държави и спрямо предишни години е грешно?
- Различни аспекти от динамиката на раждаемостта от 1968-ма до 2015-та
- Защо е измислица, че в чужбина работят повече българи, отколкото в страната и как повярвахме на това?
The post Числото, което ще чуете днес, е грешно first appeared on Блогът на Юруков.
[$] Milliwatt machine learning with emlearn
Post Syndicated from jake original https://lwn.net/Articles/1009011/
While large language models and the expensive hardware they require are all
the rage now, other areas of artificial intelligence work within much more
constrained hardware environments. At FOSDEM 2025, Jon Nordby presented
his open-source machine-learning inference engine for microcontrollers,
named emlearn. The project
also boasts bindings for MicroPython,
thus making machine-learning applications even more accessible.
How GitHub uses CodeQL to secure GitHub
Post Syndicated from Brandon Stewart original https://github.blog/engineering/how-github-uses-codeql-to-secure-github/
GitHub’s Product Security Engineering team writes code and implements tools that help secure the code that powers GitHub. We use GitHub Advanced Security (GHAS) to discover, track, and remediate vulnerabilities and enforce secure coding standards at scale. One tool we rely heavily on to analyze our code at scale is CodeQL.
CodeQL is GitHub’s static analysis engine that powers automated security analyses. You can use it to query code in much the same way you would query a database. It provides a much more robust way to analyze code and uncover problems than an old-fashioned text search through a codebase.
The following post will detail how we use CodeQL to keep GitHub secure and how you can apply these lessons to your own organization. You will learn why and how we use:
- Custom query packs (and how we create and manage them).
- Custom queries.
- Variant analysis to uncover potentially insecure programming practices.
Enabling CodeQL at scale
We employ CodeQL in a variety of ways at GitHub.
- Default setup with the default and security-extended query suites
Default setup with the default and security-extended query suites meets the needs of the vast majority of our over 10,000 repositories. With these settings, pull requests automatically get a security review from CodeQL. - Advanced setup with a custom query pack
A few repositories, like our large Ruby monolith, need extra special attention, so we use advanced setup with a query pack containing custom queries to really tailor to our needs. - Multi-repository variant analysis (MRVA)
To conduct variant analysis and quick auditing, we use MRVA. We also write custom CodeQL queries to detect code patterns that are either specific to GitHub’s codebases or patterns we want a security engineer to manually review.
The specific custom Actions workflow step we use on our monolith is pretty simple. It looks like this:
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql/${{ matrix.language }}/codeql-config.yml
Our Ruby configuration is pretty standard, but advanced setup offers a variety of configuration options using custom configuration files. The interesting part is the packs option, which is how we enable our custom query pack as part of the CodeQL analysis. This pack contains a collection of CodeQL queries we have written for Ruby, specifically for the GitHub codebase.
So, let’s dive deeper into why we did that—and how!
Publishing our CodeQL query pack
Initially, we published CodeQL query files directly to the GitHub monolith repository, but we moved away from this approach for several reasons:
- It required going through the production deployment process for each new or updated query.
- Queries not included in a query pack were not pre-compiled, which slowed down CodeQL analysis in CI.
- Our test suite for CodeQL queries ran as part of the monolith’s CI jobs. When a new version of the CodeQL CLI was released, it sometimes caused the query tests to fail because of changes in the query output, even when there were no changes to the code in the pull request. This often led to confusion and frustration among engineers, as the failure wasn’t related to their pull request changes.
By switching to publishing a query pack to GitHub Container Registry (GCR), we’ve simplified our process and eliminated many of these pain points, making it easier to ship and maintain our CodeQL queries. So while it’s possible to deploy custom CodeQL query files directly to a repository, we recommend publishing CodeQL queries as a query pack to the GCR for easier deployment and faster iteration.
Creating our query pack
When setting up our custom query pack, we faced several considerations, particularly around managing dependencies like the ruby-all package.
To ensure our custom queries remain maintainable and concise, we extend classes from the default query suite, such as the ruby-all library. This allows us to leverage existing functionality rather than reinventing the wheel, keeping our queries concise and maintainable. However, changes to the CodeQL library API can introduce breaking changes, potentially deprecating our queries or causing errors. Since CodeQL runs as part of our CI, we wanted to minimize the chance of this happening, as this can lead to frustration and loss of trust from developers.
We develop our queries against the latest version of the ruby-all package, ensuring we’re always working with the most up-to-date functionality. To mitigate the risk of breaking changes affecting CI, we pin the ruby-all version when we’re ready to release, locking it in the codeql-pack.lock.yml file. This guarantees that when our queries are deployed, they will run with the specific version of ruby-all we’ve tested, avoiding potential issues from unintentional updates.
Here’s how we manage this setup:
- In our qlpack.yml, we set the dependency to use the latest version of
ruby-all - During development, this configuration pulls in the latest version) of
ruby-allwhen runningcodeql pack init, ensuring we’re always up to date.// Our custom query pack's qlpack.yml library: false name: github/internal-ruby-codeql version: 0.2.3 extractor: 'ruby' dependencies: codeql/ruby-all: "*" tests: 'test' description: "Ruby CodeQL queries used internally at GitHub" - Before releasing, we lock the version in the
codeql-pack.lock.ymlfile, specifying the exact version to ensure stability and prevent issues in CI.// Our custom query pack's codeql-pack.lock.yml lockVersion: 1.0.0 dependencies: ... codeql/ruby-all: version: 1.0.6
This approach allows us to balance developing against the latest features of the ruby-all package while ensuring stability when we release.
We also have a set of CodeQL unit tests that exercise our queries against sample code snippets, which helps us quickly determine if any query will cause errors before we publish our pack. These tests are run as part of the CI process in our query pack repository, providing an early check for issues. We strongly recommend writing unit tests for your custom CodeQL queries to ensure stability and reliability.
Altogether, the basic flow for releasing new CodeQL queries via our pack is as follows:
- Open a pull request with the new query.
- Write unit tests for the new query.
- Merge the pull request.
- Increment the pack version in a new pull request.
- Run
codeql pack initto resolve dependencies. - Correct unit tests as needed.
- Publish the query pack to the GitHub Container Registry (GCR).
- Repositories with the query pack in their config will start using the updated queries.
We have found this flow balances our team’s development experience while ensuring stability in our published query pack.
Configuring our repository to use our custom query pack
We won’t provide a general recommendation on configuration here, given that it ultimately depends on how your organization deploys code. We opted against locking our pack to a particular version in our CodeQL configuration file (see above). Instead, we chose to manage our versioning by publishing the CodeQL package in GCR. This results in the GitHub monolith retrieving the latest published version of the query pack. To roll back changes, we simply have to republish the package. In one instance, we released a query that had a high number of false positives and we were able to publish a new version of the pack that removed that query in less than 15 minutes. This is faster than the time it would have taken us to merge a pull request on the monolith repository to roll back the version in the CodeQL configuration file.
One of the problems we encountered with publishing the query pack in GCR was how to easily make the package available to multiple repositories within our enterprise. There are several approaches we explored.
- Grant access permissions for individual repositories. On the package management page, you can grant permissions for individual repositories to access your package. This was not a good solution for us since we have too many repositories for it to be feasible to do manually, yet there is not currently a way to configure programmatically using an API.
- Mint a personal access token for the CodeQL action runner. We could have minted a personal access token (PAT) that has access to read all packages for our organization and added that to the CodeQL action runner. However, this would have required managing a new token, and it seemed a bit more permissive than we wanted because it could read all of our private packages rather than ones we explicitly allow it to have access to.
- Provide access permissions via a linked repository. We ended up implementing the third solution that we explored. We link a repository to the package and allow the package to inherit access permissions from the linked repository.
CodeQL query pack queries
We write a variety of custom queries to be used in our custom query packs. These cover GitHub-specific patterns that aren’t included in the default CodeQL query pack. This allows us to tailor the analysis to patterns and preferences that are specific to our company and codebase. Some of the types of things we alert on using our custom query pack include:
- High-risk APIs specific to GitHub’s code that can be dangerous if they receive unsanitized user input.
- Use of specific built-in Rails methods for which we have safer, custom methods or functions.
- Required authorization methods not being used in our REST API endpoint definitions and GraphQL object/mutation definitions.
- REST API endpoints and GraphQL mutations that require engineers to define access control methods to determine which actors can access them. (Specifically, the query detects the absence of this method definition to ensure that the actors’ permissions are being checked for these endpoints.)
- Use of signed tokens so we can nudge engineers to include Product Security as a reviewer when using them.
Custom queries can be used more for educational purposes rather than being blockers to shipping code. For example, we want to alert engineers when they use the ActiveRecord::decrypt method. This method should generally not be used in production code, as it will cause an encrypted column to become decrypted. We use the recommendation severity in the query metadata so these alerts are treated as more of an informational alert. That means this may trigger an alert in a pull request, but it won’t cause the CodeQL CI job to fail. We use this lower severity level to allow engineers to assess the impact of new queries without immediate blocking. Additionally, this alert level isn’t tracked through our Fundamentals program, meaning it doesn’t require immediate action, reflecting the query’s maturity as we continue to refine its relevance and risk assessment.
/**
* @id rb/github/use-of-activerecord-decrypt
* @description Do not use the .decrypt method on AR models, this will decrypt all encrypted attributes and save
* them unencrypted, effectively undoing encryption and possibly making the attributes inaccessible.
* If you need to access the unencrypted value of any attribute, you can do so by calling my_model.attribute_name.
* @kind problem
* @severity recommendation
* @name Use of ActiveRecord decrypt method
* @tags security
* github-internal
*/
import ruby
import DataFlow
import codeql.ruby.DataFlow
import codeql.ruby.frameworks.ActiveRecord
/** Match against .decrypt method calls where the receiver may be an ActiveRecord object */
class ActiveRecordDecryptMethodCall extends ActiveRecordInstanceMethodCall {
ActiveRecordDecryptMethodCall() { this.getMethodName() = "decrypt" }
}
from ActiveRecordDecryptMethodCall call
select call,
"Do not use the .decrypt method on AR models, this will decrypt all encrypted attributes and save them unencrypted.
Another educational query is the one mentioned above in which we detect the absence of the `control_access` method in a class that defines a REST API endpoint. If a pull request introduces a new endpoint without `control_access`, a comment will appear on the pull request saying that the `control_access` method wasn’t found and it’s a requirement for REST API endpoints. This will notify the reviewer of a potential issue and prompt the developer to fix it.
/**
* @id rb/github/api-control-access
* @name Rest API Without 'control_access'
* @description All REST API endpoints must call the 'control_access' method, to ensure that only specified actor types are able to access the given endpoint.
* @kind problem
* @tags security
* github-internal
* @precision high
* @problem.severity recommendation
*/
import codeql.ruby.AST
import codeql.ruby.DataFlow
import codeql.ruby.TaintTracking
import codeql.ruby.ApiGraphs
// Api::App REST API endpoints should generally call the control_access method
private DataFlow::ModuleNode appModule() {
result = API::getTopLevelMember("Api").getMember("App").getADescendentModule() and
not result = protectedApiModule() and
not result = staffAppApiModule()
}
// Api::Admin, Api::Staff, Api::Internal, and Api::ThirdParty REST API endpoints do not need to call the control_access method
private DataFlow::ModuleNode protectedApiModule() {
result =
API::getTopLevelMember(["Api"])
.getMember(["Admin", "Staff", "Internal", "ThirdParty"])
.getADescendentModule()
}
// Api::Staff::App REST API endpoints do not need to call the control_access method
private DataFlow::ModuleNode staffAppApiModule() {
result =
API::getTopLevelMember(["Api"]).getMember("Staff").getMember("App").getADescendentModule()
}
private class ApiRouteWithoutControlAccess extends DataFlow::CallNode {
ApiRouteWithoutControlAccess() {
this = appModule().getAModuleLevelCall(["get", "post", "delete", "patch", "put"]) and
not performsAccessControl(this.getBlock())
}
}
predicate performsAccessControl(DataFlow::BlockNode blocknode) {
accessControlCalled(blocknode.asExpr().getExpr())
}
predicate accessControlCalled(Block block) {
// the method `control_access` is called somewhere inside `block`
block.getAStmt().getAChild*().(MethodCall).getMethodName() = "control_access"
}
from ApiRouteWithoutControlAccess api
select api.getLocation(),
"The control_access method was not detected in this REST API endpoint. All REST API endpoints must call this method to ensure that the endpoint is only accessible to the specified actor types."
Variant analysis
Variant analysis (VA) refers to the process of searching for variants of security vulnerabilities. This is particularly useful when we’re responding to a bug bounty submission or a security incident. We use a combination of tools to do this, including GitHub’s code search functionality, custom scripts, and CodeQL. We will often start by using code search to find patterns similar to the one that caused a particular vulnerability across numerous repositories. This is sometimes not good enough, as code search is not semantically aware, meaning that it cannot determine whether a given variable is an Active Record object or whether it is being used in an `if` expression. To answer those types of questions we turn to CodeQL.
When we write CodeQL queries for variant analysis we are much less concerned about false positives, since the goal is to provide results for security engineers to analyze. The quality of the code is also not quite as important, as these queries will only be used for the duration of the VA effort. Some of the types of things we use CodeQL for during VAs are:
- Where are we using SHA1 hashes?
- One of our internal API endpoints was vulnerable to SQLi according to a recent bug bounty report. Where are we passing user input to that API endpoint?
- There is a problem with how some HTTP request libraries in Ruby handle the proxy setting. Can we look at places we are instantiating our HTTP request libraries with a proxy setting?
One recent example involved a subtle vulnerability in Rails. We wanted to detect when the following condition was present in our code:
- A parameter was used to look up an Active Record object.
- That parameter is later reused after the Active Record object is looked up.
The concern with this condition is that it could lead to an insecure direct object reference (IDOR) vulnerability because Active Record finder methods can accept an array. If the code looks up an Active Record object in one call to determine if a given entity has access to a resource, but later uses a different element from that array to find an object reference, that can lead to an IDOR vulnerability. It would be difficult to write a query to detect all vulnerable instances of this pattern, but we were able to write a query that found potential vulnerabilities that gave us a list of code paths to manually analyze. We ran the query against a large number of our Ruby codebases using CodeQL’s MRVA.
The query, which is a bit hacky and not quite production grade, is below:
/**
* @name wip array query
* @description an array is passed to an AR finder object
*/
import ruby
import codeql.ruby.AST
import codeql.ruby.ApiGraphs
import codeql.ruby.frameworks.Rails
import codeql.ruby.frameworks.ActiveRecord
import codeql.ruby.frameworks.ActionController
import codeql.ruby.DataFlow
import codeql.ruby.Frameworks
import codeql.ruby.TaintTracking
// Gets the "final" receiver in a chain of method calls.
// For example, in `Foo.bar`, this would give the `Foo` access, and in
// `foo.bar.baz("arg")` it would give the `foo` variable access
private Expr getUltimateReceiver(MethodCall call) {
exists(Expr recv |
recv = call.getReceiver() and
(
result = getUltimateReceiver(recv)
or
not recv instanceof MethodCall and result = recv
)
)
}
// Names of class methods on ActiveRecord models that may return one or more
// instances of that model. This also includes the `initialize` method.
// See https://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html
private string staticFinderMethodName() {
exists(string baseName |
baseName = ["find_by", "find_or_create_by", "find_or_initialize_by", "where"] and
result = baseName + ["", "!"]
)
// or
// result = ["new", "create"]
}
private class ActiveRecordModelFinderCall extends ActiveRecordModelInstantiation, DataFlow::CallNode
{
private ActiveRecordModelClass cls;
ActiveRecordModelFinderCall() {
exists(MethodCall call, Expr recv |
call = this.asExpr().getExpr() and
recv = getUltimateReceiver(call) and
(
// The receiver refers to an `ActiveRecordModelClass` by name
recv.(ConstantReadAccess).getAQualifiedName() = cls.getAQualifiedName()
or
// The receiver is self, and the call is within a singleton method of
// the `ActiveRecordModelClass`
recv instanceof SelfVariableAccess and
exists(SingletonMethod callScope |
callScope = call.getCfgScope() and
callScope = cls.getAMethod()
)
) and
(
call.getMethodName() = staticFinderMethodName()
or
// dynamically generated finder methods
call.getMethodName().indexOf("find_by_") = 0
)
)
}
final override ActiveRecordModelClass getClass() { result = cls }
}
class FinderCallArgument extends DataFlow::Node {
private ActiveRecordModelFinderCall finderCallNode;
FinderCallArgument() { this = finderCallNode.getArgument(_) }
}
class ParamsHashReference extends DataFlow::CallNode {
private Rails::ParamsCall params;
// TODO: only direct element references against `params` calls are considered
ParamsHashReference() { this.getReceiver().asExpr().getExpr() = params }
string getArgString() {
result = this.getArgument(0).asExpr().getConstantValue().getStringlikeValue()
}
}
class ArrayPassedToActiveRecordFinder extends TaintTracking::Configuration {
ArrayPassedToActiveRecordFinder() { this = "ArrayPassedToActiveRecordFinder" }
override predicate isSource(DataFlow::Node source) { source instanceof ParamsHashReference }
override predicate isSink(DataFlow::Node sink) {
sink instanceof FinderCallArgument
}
string getParamsArg(DataFlow::CallNode paramsCall) {
result = paramsCall.getArgument(0).asExpr().getConstantValue().getStringlikeValue()
}
// this doesn't check for anything fancy like whether it's reuse in a if/else
// only intended for quick manual audit filtering of interesting candidates
// so remains fairly broad to not induce false negatives
predicate paramsUsedAfterLookups(DataFlow::Node source) {
exists(DataFlow::CallNode y | y instanceof ParamsHashReference
and source.getEnclosingMethod() = y.getEnclosingMethod()
and source != y
and getParamsArg(source) = getParamsArg(y)
// we only care if it's used again AFTER an object lookup
and y.getLocation().getStartLine() > source.getLocation().getStartLine())
}
}
from ArrayPassedToActiveRecordFinder config, DataFlow::Node source, DataFlow::Node sink
where config.hasFlow(source, sink) and config.paramsUsedAfterLookups(source)
select source, sink.getLocation()
Conclusion
CodeQL can be very useful for product security engineering teams to detect and prevent vulnerabilities at scale. We use a combination of queries that run in CI using our query pack and one-off queries run through MRVA to find potential vulnerabilities and communicate them to engineers. CodeQL isn’t only useful for finding security vulnerabilities, though; it is also useful for detecting the presence or absence of security controls that are defined in code. This saves our security team time by surfacing certain security problems automatically, and saves our engineers time by detecting them earlier in the development process.
Writing custom CodeQL queries
Tips for getting started
We have a large number of articles and resources for writing custom CodeQL queries. If you haven’t written custom CodeQL queries before, here are some resources to help get you started:
- CodeQL zero to hero part 1: The fundamentals of static analysis for vulnerability research – The GitHub Blog
- Writing CodeQL queries
- Use CodeQL inside Visual Studio Code – GitHub Docs
- CodeQL workshops for GitHub Universe and GitHub Satellite 2020 workshops on finding security vulnerabilities with CodeQL for Java/JavaScript.
- A beginner’s guide to running and managing custom CodeQL queries
Improve the security of your applications today by enabling CodeQL for free on your public repositories, or try GitHub Advanced Security for your organization.
Michael Recachinas, GitHub Staff Security Engineer, also contributed to this blog post.
The post How GitHub uses CodeQL to secure GitHub appeared first on The GitHub Blog.
Security updates for Wednesday
Post Syndicated from corbet original https://lwn.net/Articles/1009177/
Security updates have been issued by AlmaLinux (firefox, kernel, kernel-rt, tbb, and thunderbird), Debian (bind9, cacti, pam-pkcs11, and ruby2.7), Fedora (bind, bind-dyndb-ldap, chromium, crun, and java-21-openjdk), Mageia (calibre, nginx, python-ansible-core, python-jinja2, python-pip, python-setuptools, python-twisted, and python-waitress), Red Hat (doxygen, firefox, gcc, gcc-toolset-13-gcc, gcc-toolset-14-gcc, tbb, and thunderbird), SUSE (go1.24, govulncheck-vulndb, java-1_8_0-openj9, kernel, openssl-3, ovmf, python3-numpy, python311, python36, qemu, and skopeo), and Ubuntu (bluez and openssl).
Vampire Panics
Post Syndicated from The History Guy: History Deserves to Be Remembered original https://www.youtube.com/watch?v=G7gq-kmwzqw
[$] Rewriting essential Linux packages in Rust
Post Syndicated from jzb original https://lwn.net/Articles/1007907/
Most Linux systems depend on a suite of core utilities that the GNU Project started development on
decades ago and are, of course, written in C. At FOSDEM 2025, Sylvestre Ledru
made the case in his
main stage talk that modern systems require safer, more
maintainable tools. Over the past few years, Ledru has led the charge
of rewriting the GNU
Core Utilities (coreutils) in Rust, as the MIT-licensed uutils project. The goal is to
offer what he said are more secure, and more performant drop-in
replacements for the tools Linux users depend on. At FOSDEM, Ledru
announced that the uutils project is setting its sights even
higher.
Delivering Malware Through Abandoned Amazon S3 Buckets
Post Syndicated from Bruce Schneier original https://www.schneier.com/blog/archives/2025/02/delivering-malware-through-abandoned-amazon-s3-buckets.html
Here’s a supply-chain attack just waiting to happen. A group of researchers searched for, and then registered, abandoned Amazon S3 buckets for about $400. These buckets contained software libraries that are still used. Presumably the projects don’t realize that they have been abandoned, and still ping them for patches, updates, and etc.
The TL;DR is that this time, we ended up discovering ~150 Amazon S3 buckets that had previously been used across commercial and open source software products, governments, and infrastructure deployment/update pipelines—and then abandoned.
Naturally, we registered them, just to see what would happen—”how many people are really trying to request software updates from S3 buckets that appear to have been abandoned months or even years ago?”, we naively thought to ourselves.
Turns out they got eight million requests over two months.
Had this been an actual attack, they would have modified the code in those buckets to contain malware and watch as it was incorporated in different software builds around the internet. This is basically the SolarWinds attack, but much more extensive.
But there’s a second dimension to this attack. Because these update buckets are abandoned, the developers who are using them also no longer have the power to patch them automatically to protect them. The mechanism they would use to do so is now in the hands of adversaries. Moreover, often—but not always—losing the bucket that they’d use for it also removes the original vendor’s ability to identify the vulnerable software in the first place. That hampers their ability to communicate with vulnerable installations.
Software supply-chain security is an absolute mess. And it’s not going to be easy, or cheap, to fix. Which means that it won’t be. Which is an even worse mess.
Вихрен Георгиев от People of Sofia. Да се научиш да виждаш в градския алгоритъм
Post Syndicated from Ина Иванова original https://www.toest.bg/vihren-georgiev-ot-people-of-sofia/

Той е сърцето, моторът и единственият човек, който се грижи за съдържанието на People of Sofia. От близо 12 години Вихрен Георгиев снима хора и моменти по улиците на столицата, като се старае да остане незабелязан. Проектът стартира заради увлечението му по стрийт фотографията със стотина снимки, направени преди изобщо да му хрумне идеята да създаде свое виртуално пространство.
Уличната фотография е опит да бъде уловен онзи миг, в който сцена в движение се превръща в композиция. Работите на Вихрен Георгиев поставят в центъра човека, състоянието му и как самият той се вписва в градската среда. Но също и как я променя. Ето защо присъствието на Вихрен и обектива му по нещо напомнят иконичната фигура на фланьора. Да, наименованието е жизнерадостно свързано с глагола „шляя се“. Не бива да забравяме обаче интерпретацията на Валтер Бенямин, според когото фланьорът е внимателен наблюдател на градското пространство. И неговият поглед разгръща и конструира сюжети, разказва необикновеното.
Ако попитате Вихрен Георгиев как би изглеждал той в един сутрешен кадър в дома му, ще се засмее. Признава, че може да си позволи да не става рано, че обича да пие кафе и да глези котките си, а откакто започна агресията на Русия срещу Украйна – и да чете сутрешните сводки за войната.
А после? После го призовава улицата. Неговата работа е да излезе навън с фотоапарата си. Градът. Любопитството към лицата. Приключението. Очарованието от всекидневното, от срещата с непознати, които вървят срещу теб, потопени в собственото си време.
Отвъд документалната стойност (едва ли можем да си представим какви масиви от хора, състояния и тенденции съхранява платформата) People of Sofia и конкретно Вихрен Георгиев винаги са били ангажирани с каузи, които приоритизират приемането на различието, оцеляването и обявяването на обикновения човек с всичката му уязвимост и нежност. Ние сме тук и сега – малките бизнеси по времето на COVID-19; кампанията срещу домашното насилие; невръстните майки; ромски деца, които учат медицина; хората с редки заболявания.
Кои са фотографите, които Ви вдъхновяват?
Класическите стрийт фотографи. Особено Анри Бресон и Вивиан Майер – за Коледа ми подариха четири нейни албума. Вивиан Майер е работила като детегледачка почти 40 години, снимала е като хоби. В техните снимки има толкова детайли и елементи, които можеш да разглеждаш. Възхищавам се на погледа, който имат.
Днес е много по-трудно да снимаш като първите улични фотографи, по-забележим си, а и хората са по-предубедени, питат „защо ме снимате“, а също така има и рестрикции, свързани с личните данни. Освен това в съвременните кадри липсва усещането за романтика от онези времена, ние вече живеем в друг свят. Последно гледах изложбата на Гаро Кешишян „Строителни войски“ – впечатляваща е. Аз не общувам много с колеги фотографи, обичам обаче да гледам неща, които ми попадат през нюзфийда.
Определяте ли се като градски човек?
О, да. Със сигурност! Аз не вирея на места, където няма хора, дори когато отивам на почивка, трябва да виждам лица. Харесва ми да наблюдавам хората, отношенията между тях, манталитета, начина им на живот, културата им. Опитвам се поне веднъж годишно да ходя и в чужбина, но подбирам винаги места, които са урбанизирани.



©Вихрен Георгиев за People of Sofia
Дали малките жестове имат силата да променят стереотипи и нагласи? Вашата работа е обвързана с множество различни каузи.
Иска ми се да е така. Аз съм ту умерен оптимист, ту песимист.
Моята цел е да показвам неща, които не присъстват достатъчно в общественото говорене. Живеем в малките теми. Колкото и да се вълнуваме от политика или глобални процеси, ние все пак се събуждаме всяка сутрин и живеем в нашия балон.
Моята презумпция е, че ако промениш улицата, на която живееш, ако промениш после съседната, след време може да е целият град.
Важно ми е хората да бъдат информирани, такава беше кампанията ни за редките болести, аз снимах такива хора и през моята платформа информацията стигна до много хора – точно през човешките истории.
Проектът ми за малките майки беше срещу стереотипа, че под 18-годишна възраст раждат само ромските момичета. Изобщо не е така, 50 на 50 е, общо взето. Първата майка, която публикувах тогава, е етническа българка, родила на 12 години.
И още нещо. Да вземем и ромския потенциал – тук живеят около 300 000 души от ромски произход. Тези хора могат да допринасят за обществото, икономиката и културата, ако се образоват и не се държат насилствено бедни – ние имаме реален недостиг на работна ръка в момента. Напоследък виждам как обществото ни бива разделено от тезата, че има истински българи и обикновени, да ги нарека, българи.
Вашите работи са на границата, в ничията земя между портретната и стрийт фотографията. На страницата на People of Sofia излизат и кратки интервюта с някои от хората, които сте снимали.
Снимката фиксира част от секундата и за този отрязък ти можеш да покажеш различни състояния на този човек, ето защо е толкова важен изборът на кадър. Той говори много и за самия фотограф, върху какво той иска да акцентира.
За 2024 г. се оказа, че имам 215 интервюта. Чувствам се горд, че съм го направил сам, без екип, че съм се срещнал и съм разговарял с тези хора и те са ми се доверили.

Напоследък живеем в свят, силно повлиян от визуалната култура. Това променя ли начина, по който човек вижда себе си?
Според мен визуалната култура на масовия българин не е висока. Това може би идва от начина, по който живеехме преди 1989 г. От налаганото 45 години уеднаквяване. На Запад през това време има няколко културни революции, които освобождават хората от много стереотипи.
Визуалната култура е стремеж към естетика, провокира въображението в хората, създава желание да са различни, да се открояват, да се заявяват.
Дори София е доста безличен град, нищо че чужденците го хвалят – може би харесват точно различността на тази сивота. По отношение на фотографията светлината в София също не е добра за снимане. В Италия дори естествената светлина е красива.
Боя се, че и животът на визуалните ни артисти е доста капсулиран. Ние не присъстваме ярко в световната култура, с изключение на единични примери. Някак в периферията сме. Трябва културните процеси да станат масови, да бъдат промотирани, за да стигнат до хората, и оттам да настъпи промяна в нагласите.
Имаме хора, които са много талантливи, но не са видими. Съществуват в своите малки общности, да не говорим, че много рядко ги виждаме в националните медии. Не виждаме дори талантливите деца, които пеят, свирят, рисуват, от време на време ни показват тези, които са спечелили някоя олимпиада по математика или физика. Приемаме ги за екзотика. В телевизиите културата е почти невидима, сякаш за запълване на някакви последни минутки от предаванията.


©Вихрен Георгиев за People of Sofia
Но вкусът се изгражда?
Да, точно така. Питали са ме какъв съвет мога да дам за фотографията. Винаги съм казвал: да се стремят да изградят визуална култура. Да гледат старите майстори – картини, скулптури, архитектура. Неслучайно се учи история на изкуството – за да се научиш да виждаш.
Обработвате ли кадрите впоследствие? От години тече полемика за или против. Това не е ли вечният спор между документално и фикционално?
При мен обработката е минимална. Много е важен процесът на избор на кадър обаче, защото, когато правиш галерия със снимки, трябва да има някакъв разказ. Аз не се чувствам ангажиран да представя всичко, ако снимам някакво събитие, както последно бях в Перник да снимам „Сурва“. Това се изисква по-скоро от репортажната фотография. Подбирам по-скоро онова, което за мен е интересно. Иначе, в днешно време може и да не снимаш, ако искаш, изкуственият интелект ще ти генерира каквото искаш изображение.
Фотографията е едновременно реално и илюзорно изкуство.
Когато отвориш People of Sofia, виждаш шарени хора, обаче по улиците по-често срещаме начумерени лица, най-често облечени едноцветно. Както казва един приятел, „тъмносиньото е цветът на българския мъж“. И сега кое е действителността? Ние избираме какво да видим, най-често според образованието и културата си. Ако влезем в матрицата, можем да твърдим, че реалността изобщо не съществува, може да има още десет измерения. А аз съм емоционален човек и това се отразява на нещата, които избирам да снимам.
Документалното снимане изисква да отразиш някаква общовалидна реалност, да си дистанциран и затова и репортажната фотография се стреми към обективност. Но и там има личен елемент, погледът на фотографа е определящ. Не камерата – окото е важно.

Върху какво бихте искали да акцентирате точно сега?
Хората да не се поддават на постоянното облъчване с омраза. Да се мразим като общество. Да сме разделени. Този проблем набира сила напоследък и това целенасочено насаждане на разединение ни пречи да вървим напред. Помним от древността онова „разделяй и владей“ – ето затова обществата са силни, когато са единни и имат общи цели, около които да се обединят.
Истории на върха на налъма
Post Syndicated from Атанас Шиников original https://www.toest.bg/istorii-na-vurha-na-naluma/

Колко ангела или дявола – пита упоритото клише – се събират на върха на една игла? Винаги съм гледал с подозрение на този представян за средновековен философски казус. Най-малкото заради употребата му в пейоративен контекст. Служи за илюстрация на безполезната казуистика, с която се занимават католическите схоластици. Но откъде идва въпросното клише, не е съвсем сигурно. Сигурно е, че помня как в „Сума на теологията“ на Тома от Аквино се обсъжда въпросът дали може няколко ангела да бъдат по едно и също време на едно и също място. Отговорът е „не“. А защо това е така, може да проверите в оригиналното съчинение, което го има и на български. Апропо,
колко истории могат да се съберат на върха на един налъм?
Тук отговорът ще следва златните корпоративни практики, според които при разглеждането на етични казуси често избираш между „да“, „не“ и „зависи“. Тук зависи колко си кръстосвал ориенталската география и история. И също какво точно разбираш под „налъми“.
Една от бабите ми имаше. Държеше ги на входа на банята. Грубовати чамови дъски, изрязани в приблизителната форма на стъпало. Каишката им беше гумена лента, прикована с пирони. Веднъж ги пробвах и щях да се пребия, защото бяха неудобни, твърди и се пързаляха по плочките на външната баня, в която греехме вода в бойлер на дърва. Като говорим за пребиване, тогавашните ми съученици в местното училище имаха друга история със своите баби. Носеше се мълвата, че голямата дървена лъжица за готвене, точилката и налъмът са измежду основните възпитателни средства за „набиване на акъл“, ако трябва да се позова на една крилата фраза на бившия ни премиер Бойко Борисов.
А универсалният характер на този културен и етнографски артефакт се доказва и от бегъл поглед към етимологията на самата дума. Ако проверим в речника на българския език, взели сме налъма от турски. Там му викат „налън“ (nalın). Само че в османотурския думата е преминала от арабския чрез интересна трансформация. На арабски в единствено число е на‘л. Тази обърната запетайка е срещащата се в семитските езици фонема, изписвана с буквата ‘айн. Звучи много особено, веднага се разпознава – едно такова жвакащо и задавено, придава характерна мелодика на арабския език. Та на арабски думата може да значи много и различаващи се от едно от друго неща. Налъм. Сандал. Папук. Патък. Чехъл. Джапанка, ако трябва да използваме един културен анахронизъм. В тези си значения се конкурира и с друг термин – шибшиб, който обаче подслонява в себе си и значението на „пантоф“ за къщна употреба, подобно на хуфф – по-затворена обувка от сандала и налъма, но по-отворена от познатите ни обувки. А на‘л може да обозначава даже и подкова, оттук и на български са дошли налчета впрочем. Но като цяло говорим по-скоро за отворен тип обувки. Не толкова за „галош“ и „цървул“, колкото за „сандал“. А за затворена обувка в арабския език има друга дума – хиза’.
Налъмът обаче е вездесъщ. Множественото число е ни‘ал. Само че се използва рядко и за това си има причина. Все още не е ясно колко истории се събират на върха им, но обикновено побират по едно ходило в налъм. А ходилата, съгласете се, обикновено вървят по две на човек. За целта много удобно семитските езици имат двойствено число. Тези граматични форми все още се използват, макар и предимно във високата, книжовна, „най-чиста“ (фусха) форма на езика. Но налъмите също вървят по два, както и ходилата. Затова и в двойствено число са на‘лан. В родителен и винителен падеж, тоест в най-често срещаната форма на имената в арабския език, са на‘лайн. Разговорно в потока на речта понякога зазвучава като на‘лин. Оттук до турското налън и нашенското налъм има… само един налъм разстояние, нали?
Оказва се, значи, че селските ни баби не се отличават с особена изобретателност. По-скоро залагат на консервативни, прости и изпитани в исторически план решения. Ако трябва да употребя дума, която съм научил от баба ми, „на̀ръчен“ инструмент за наказание и битово насилие си пада налъмът, и то още от стари времена. Много преди провинциалната реалност на късния социализъм, в която е минало детството ми. Да се присетим например за сборника с приказки, стигнал до нас под заглавието „Хиляда и една нощ“. Всички разпознават книгата, а някои български читатели имат досег с нея и през превода от арабския оригинал, а не с предходните преразкази и съкратени издания. Именно там намираме историята за красивия принц Тадж ал-Мулук („Короната на владетелите“, така се превежда името му), който, предрешен като търговец, изпраща една старица, за да извоюва за него любовта на царската щерка Дуня. Тази любов се оказва доста страстна, противоречива и свързана с телесни жестове от различен порядък.
Защо да те упреквам? Че си глупак – разбрах!,
пише в един момент царската дъщеря до Тадж ал-Мулук. Отговорът не остава без реакция от принца, който се разплаква. Това може да не е никак мачовско по съвременните критерии, но не е необичайно за мъжете в този тип разкази. И по съвет на бащиния си везир младежът изпраща обратно писмо по „зловредната бабичка“, ако цитираме разказа, до Дуня.
Тя зла е — аз я нежно възхвалявам, гнети ме — аз я в стихове възпявам,
изповядва се злощастният влюбен. Царската дъщеря прочита писмото, разгневява се, вика слугите и им нарежда:
Хванете тази хитра старица и я бийте с налъмите си!
Удрят я с налъмите, докато изпадне в несвяст, а после я хвърлят зад портата. Но разказът не приключва тук. Сватовницата се свестява и се завръща отново при Тадж ал-Мулук, където непоколебимо скроява поредния план за спечелване на сърцето на „тази мъчителка“.
Нека сега да се опитаме да погледнем налъма отвъд прагматичната му употреба. Ясно е, че сандалът, чехълът, налъмът и папукът – както и да преведете на‘л на български – удобно ляга в ръката и е идеален за образователно-назидателни употреби, за „биене по задницата на престъпника“, както си спомня Иван Вазов в „Даскалите“. Може ли да потърсим по-дълбоки концептуални и духовни основания за популярността му? Оказва се, че да. В намирането на отговори ни помага поп Минчо Кънчев в своята „Видрица“. В Българското възраждане може да липсват ориенталисти, сравними със западните им съвременници, но пък имаме своите оригинални приноси към полето на ислямознанието. В случая с българския свещеник става дума дори за антропологически наблюдения на терен от Диарбекир, където е заточен.
Захванали, разказва той, да говорят из Диарбекир, че в града щял да дойде някой си Шахид шех Чубук. А той носи на главата си „налъма на великия турски на Бога първи пророк Мохамедовата валиде джаваир фатме“, пояснено от него като „скъпоценната госпожа майка“. Гротесково-подигравателното описание на шествието около свещения артефакт, на съпътстващия тормоз върху християните и проповедта на шейха в джамията не е за ухото на по-чувствителния читател, но завършва с нотка на религиозна полемика.
Ний сме подперизи [идолопоклонници], че се кланим на дъски с изобразени образи,
възмущава се изгнаникът в расо, очевидно визирайки иконопочитанието. А пък в същото време турците се кланят и „чест въздават“ на един налъм.
Повечето форми на вярвания имат свещени предмети, ще си кажете. Нормално е. Но със сигурност трябва да отчетем, че реликвите намират своите основания в съдържателните основания на съответната религия. В едни по-конкретни измерения не може да очакваме да намерим в мюсюлманската практика парчета от Светия кръст например. Или мощехранителници. Или мироточиви мощи, ако трябва да посочим характерни за православната традиция явления. Защото те имат напълно различни, външни на мюсюлманската традиция обосновки. Свързани са с други текстове. Но ето, тук имаме налъм. И ако все пак изпаднем в конкретика, дали налъмът от разказа във „Видрица“ изглежда по-скоро като налъм, или като нещо, което бихме определили като сандал? Защото това за нас сега са две различни неща, въпреки че се обозначават с една и съща дума.
Османският налън, известен в Египет също като кабкаб, има характерен външен вид, много различен от грубоватия бабин дървен чехъл. Представлява
дървена платформа с особена форма, по-скоро заострен отпред, с каишка отгоре, но отдолу обикновено се крепи на два високи тока,
издялани от същото парче дърво или допълнително монтирани перпендикулярно дъсчици. Често пъти е богато украсен и инкрустиран, например със седеф или сребро, понякога има и прикрепени звънчета. Ако ме питате, идеален е за подхлъзване и сдобиване с тежка фрактура в банята. Но жените от епохата явно не мислят така и го превръщат в стандартна част от посещението на хамамите и изобщо от всекидневието им, както се вижда и от западни изображения.

Дали обаче в предислямска Арабия и в епохата на ранния ислям познават налъма в този му софистициран вид?
Едва ли, при все че според някои изследователи произходът на налъмите може да се проследи до дървените сандали от Древен Египет и античните сандали. Като че ли е по-вероятно арабският на‘л да прилича на нещо, което сега бихме определили като сандал, а не като османски налъм. Но със сигурност по времето на Пророка и през първите столетия след появата на исляма се случва нещо друго. В Арабия се полагат концептуалните основания на религиозния жест, наблюдаван от българския поп Минчо Кънчев през XIX век в Диарбекир. Казано с по-прости думи, анадолският ходжа съвсем не си измисля, като придава значимост точно на този предмет.
Коранът споменава еднократно превърналия се в термин на‘л. И то във връзка с пророк Муса (библ. Мойсей).
Аз съм твоят Господ. Свали сандалите си! Ти си в свещената долина Тýа,
чува той от самия Аллах (20:12). Ако настъпим малко педала на преводаческия произвол, може да го преведем и с „изуй налъмите си“, нали? Очевидно е, че кораничният разказ пресъздава историята за Мойсей при горящия храст от библейското Петокнижие (Изх. 3:5, Деян. 7:33), споделяна както от юдаизма, така и от християнството. И защо да не се заиграем с подобен превод? Та дори българските преводи на Библията допускат вариации: веднъж в текста, към който препраща Корана, се появяват „обувки“, друг път – „обуща“, а на трето място – „сандали“. А еврейската дума е на‘ал и има същия общосемитски корен. Така чрез акт на аналогия (обозначавана в ислямското право с термина кийас) може да кажем, че
сандало-налъмите обединяват в себе си трите монотеистични религии, докато плават по реката на времето като един „кораб на спасението“
според метафората на богословите. „Който се качи на него, се спасява, а който изостане – потъва“, бил казал легендарният имам Малик ибн Анас от VIII век.
Това, разбира се, е пълен тълкувателен произвол от моя страна. По-скоро би било окачествено с термина „религиозно нововъведение“ (бид‘а), понякога превеждан като „ерес“, и ще ми навлече недоволството и на трите религиозни общности. „Корабът на Нух “ (библ. Ной) от думите на имам Малик не е никакъв налъм, а всъщност представлява пророческата Сунна. И тя задава доста насоки, които да осмислят религиозно ежедневната наглед вещ.
(Следва продължение.)
В рубриката „Ориент кафе“ Атанас Шиников поднася любопитни теми, свързани не толкова с горещата политика, колкото с историята и културата на Близкия изток. А той, древен и днешен, е по-близко до нас и съвремието ни, отколкото си представяме.
Forgotten Founding Father
Post Syndicated from The History Guy: History Deserves to Be Remembered original https://www.youtube.com/watch?v=9QoqtLdfkNo
Fast Response Cutter
Post Syndicated from The History Guy: History Deserves to Be Remembered original https://www.youtube.com/watch?v=DPxwmnMvJoc
Comic for 2025.02.12 – Big Purchase
Post Syndicated from Explosm.net original https://explosm.net/comics/big-purchase
New Cyanide and Happiness Comic

