securitylab_nJuly 17, 2026🇷🇺Translated from Russian

50,000-Year-Old DNA Found in South African Teeth Where Heat Should Have Destroyed It

Ancient DNA is typically sought in cold environments where permafrost has protected remains from degradation for millennia. Low temperatures slow chemical reactions and microbial activity, allowing bones and teeth from permafrost regions to retain genetic material even after tens of thousands of years. Hot climates were long considered nearly hopeless for such research because high temperatures accelerate molecular breakdown, leaving only short, damaged fragments of the double helix.

However, a tooth discovered in South Africa has preserved DNA estimated to be around 50,000 years old. This represents the oldest genetic material from animals found south of the Sahara to date. The African continent contains numerous rich fossil sites, particularly in the coastal caves of South Africa, yet paleogeneticists have rarely examined local collections due to the time-consuming nature of analysis and the previous assumption of low success probability.

Scientists decided to test this pessimism by collecting 320 fossil bones and teeth from six caves and rock shelters along the southern coast. The remains belonged to six species of wild bovids, including antelopes and buffaloes, spanning ages from the recent past back to 110,000 years ago. Genetic analysis was performed on 144 samples using a primary method focused on short single-stranded DNA segments that survive long-term degradation, compared against traditional techniques designed for more intact double-stranded fragments.

In a normal state, a DNA molecule consists of two connected strands. After an organism dies, chemical bonds gradually break down, fragmenting the long molecule into numerous pieces. Older bones or teeth contain fewer intact sections, causing conventional methods to miss damaged fragments. The single-stranded approach processes the material differently by separating the remaining double-helix remnants in the lab, enabling construction of genetic libraries even from very short single chains and capturing fragments unsuitable for standard technology.

The difference proved significant: in some samples, the single-stranded method extracted 6.7 times more animal DNA than double-stranded analysis. While damage remained, the sensitive technique made previously unusable material viable. Ancient DNA was recovered from 65 of the 144 samples, achieving a 45% success rate — notably high for a warm region, especially given the age of some remains.

Most successful samples dated to the Holocene epoch, which began about 11,700 years ago and continues today. Younger bones and teeth retained more DNA and produced positive results more frequently. The authors recommend that future projects in South Africa begin with Holocene finds due to their higher success probability. Prior to this study, the oldest genome came from an extinct blue antelope in South Africa dated to roughly 9,300 years; the new work extends this boundary by tens of thousands of years.

Four particularly ancient teeth, aged between approximately 12,000 and 50,000 years, stood out. Three belonged to the extinct long-horned buffalo, while one came from a mountain reedbuck, an African antelope in the bovid family. The oldest specimen confirmed that viable DNA can persist in subtropical climates for tens of thousands of years, challenging the prior exclusion of low-latitude regions from paleogenetic studies.

Although success is not guaranteed in every ancient bone — fewer than half of the samples yielded results, mostly from the Holocene — the four older finds show that the preservation boundary extends much further than previously thought. This new methodology will allow more thorough examination of extensive African cave collections containing remains spanning tens of thousands of years, many of which have never been tested for DNA. Genetic data can reveal evolutionary relationships, population changes, and species extinctions, expanding such inquiries beyond cold regions to southern African remains as well.

Related articles

HabrOther

OAuth Authorization Server Built Without Storing User Profiles

The article details the evolution of an OAuth Authorization Server that deliberately avoids storing user profiles, relying instead on external identity providers for authentication. It addresses three core constraints: hundreds of dynamically created isolated APIs, a public SPA client without a BFF, and the inability of resources to query the AS on every request. The design separates concerns so the AS handles only clients, tenants, grants, audiences, scopes, keys, sessions, and token issuance while the Main API owns profiles and roles. Tokens are managed securely inside a Service Worker using a custom FedCM grant, eliminating races across tabs and reducing XSS exposure. The approach minimizes blast radius, simplifies compliance, and keeps the AS replaceable without affecting product domain logic.

HabrOther

Why a 202-Character License Key Uses ECDSA P-256 Instead of Ed25519 or RSA

A developer building offline license verification for a .NET desktop application evaluated Ed25519, RSA, and ECDSA P-256 before selecting the last option. The decision was driven by the requirement for zero external dependencies, keys short enough for manual entry from email, and support for key rotation without breaking existing licenses. Although Ed25519 offers faster verification and a smaller public key, it is absent from System.Security.Cryptography in both .NET 8 and .NET 10, with API approval only targeted for version 11. RSA-2048 produces signatures too long for practical use, resulting in a 571-character Base32 string that users would find cumbersome. ECDSA P-256 with SHA-256 delivers a fixed 64-byte signature that becomes a manageable 202-character key when encoded in Base32, while remaining fully available in the runtime. The article also covers performance measurements, the risks of ECDSA nonce generation, and the deliberate choice of the IEEE P1363 signature format to guarantee fixed-length output.

HabrOther

Pilcrow Publishes Free Comprehensive Guide on Web Authentication

Author Pilcrow has released a detailed, ad-free handbook covering authentication and authorization practices for web applications. The resource draws on personal experience and includes practical examples in JavaScript and Go. It examines password-based methods, email verification, multi-factor authentication, passwordless flows, and passkeys while highlighting associated risks and usability trade-offs. The book also provides in-depth guidance on session management, token security, expiration policies, and email address handling as account identifiers. Recommendations emphasize choosing methods that match application security requirements and user expectations. Additional context is given on OWASP resources and community support channels.

HabrOther

redb 3.4.0 Adds Replay Checkpoints, Shared Runtime Layer and Declarative Secrets Handling for .NET Ecosystem

redb 3.4.0 delivers operational improvements for the .NET integration platform that includes typed storage over Postgres, MSSQL and SQLite, the redb.Route engine modeled after Apache Camel, the Tsak runtime with dashboard and clustering, and redb.Identity for OIDC and OAuth 2.1. The release focuses on post-deployment resilience with replay checkpoints that capture message state at named points inside routes, allowing safe re-execution of downstream steps without duplicating side effects. A shared runtime layer moves framework assemblies into a separate Libs/shared directory so that individual DLLs can be replaced without rebuilding or redeploying the entire Tsak or Identity packages. Secrets are now declared with a [Sensitive] attribute on endpoint options, ensuring URIs containing passwords or keys are sanitized before they reach logs, metrics or health checks. Additional controls include role-based access to management APIs, persistent audit trails and cryptographic signing of dynamically loaded modules. All Pro features remain free on the entire 3.x line with no licensing server required.