Hacker wipes Romania's entire land registry database
Sign in<br>Subscribe
This newsletter is brought to you by Thinkst , the makers of the much-loved Thinkst Canary . You can subscribe to an audio version of this newsletter as a podcast by searching for "Risky Business" in your podcatcher or subscribing via this RSS feed . You can also add the Risky Business newsletter as a Preferred Source to your Google search results by going here .
Risky Business Player
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap");
body {<br>margin: 0px;
.audio-player {<br>font-family: "Inter", sans-serif;
.icon {<br>background-image: url("https://risky.biz/static/img/icons/subscribe-icons.svg");<br>display: block;<br>width: 33px;<br>height: 33px;<br>background-size: 528px 111px;
Your browser does not support the audio element.
Risky Bulletin: Hacker wipes Romania's entire land registry database
▶
0:00 /
9:03
Subscribe
document.addEventListener("DOMContentLoaded", function () {<br>const players = document.querySelectorAll(".audio-player");
function resizeElements(player) {<br>const logo = player.querySelector(".logo");<br>const subscribeIcons = player.querySelectorAll(".icon");<br>const subscribeContainer = player.querySelector(".subContainer"); // Select subContainer by class<br>const subText = player.querySelector(".subText"); // Select subText by class
if (player.offsetWidth {<br>icon.style.transform = "scale(0.7)";<br>icon.style.transformOrigin = "center";<br>icon.style.verticalAlign = "middle";<br>});
// Remove padding from subText and set font-size to 12px<br>if (subText) {<br>subText.style.padding = "0";<br>subText.style.fontSize = "12px";
// Set gap in subContainer to 0px<br>if (subscribeContainer) {<br>subscribeContainer.style.gap = "0px";<br>} else {<br>// Reset scaling, alignment, and visibility<br>if (logo) {<br>logo.style.display = "block";<br>logo.style.transform = "scale(1)";<br>logo.style.verticalAlign = "baseline";<br>subscribeIcons.forEach(icon => {<br>icon.style.transform = "scale(1)";<br>icon.style.verticalAlign = "baseline";<br>});
// Reset padding and font-size in subText<br>if (subText) {<br>subText.style.padding = "0 20px"; // Default padding<br>subText.style.fontSize = "inherit"; // Default font-size
// Reset gap in subContainer<br>if (subscribeContainer) {<br>subscribeContainer.style.gap = "6px"; // Default gap
function handleResize() {<br>players.forEach(player => {<br>resizeElements(player);<br>});
// Run on initial load and resize<br>handleResize();<br>window.addEventListener("resize", handleResize);<br>});
// Custom Audio Player<br>document.addEventListener("DOMContentLoaded", function () {<br>const players = document.querySelectorAll(".audio-player");
players.forEach(function (player) {<br>// Skip if already initialized<br>if (player.dataset.initialized === "true") return;
// Mark player as initialized<br>player.dataset.initialized = "true";
const audio = player.querySelector(".audioElement");<br>const playPauseBtn = player.querySelector(".playPauseBtn");<br>const progressBar = player.querySelector(".progressBar");<br>const currentTimeEl = player.querySelector(".currentTime");<br>const durationEl = player.querySelector(".duration");
if (!audio || !playPauseBtn || !progressBar || !currentTimeEl || !durationEl) {<br>console.error("One or more player elements not found:", { audio, playPauseBtn, progressBar, currentTimeEl, durationEl });<br>return;
playPauseBtn.addEventListener("click", () => {<br>if (audio.paused) {<br>audio.play();<br>playPauseBtn.textContent = "⏸";
// GA4 event for starting audio<br>gtag("event", "audio_play", {<br>"content_title": "Risky Bulletin: Hacker wipes Romania's entire land registry database",<br>"content_type": "audio"<br>});<br>} else {<br>audio.pause();<br>playPauseBtn.textContent = "▶";<br>});
audio.addEventListener("timeupdate", () => {<br>if (audio.duration) {<br>progressBar.value = (audio.currentTime / audio.duration) * 100;<br>currentTimeEl.textContent = formatTime(audio.currentTime);<br>});
audio.addEventListener("loadedmetadata", () => {<br>durationEl.textContent = formatTime(audio.duration);<br>});
progressBar.addEventListener("input", () => {<br>if (audio.duration) {<br>audio.currentTime = (progressBar.value / 100) * audio.duration;<br>});
function formatTime(seconds) {<br>const minutes = Math.floor(seconds / 60);<br>const secs = Math.floor(seconds % 60);<br>return `${minutes}:${secs
'>
A hacker has breached Romania's cadastre agency and wiped the country's entire land registry database following a failed extortion attempt.<br>The hack has brought Romania's entire real-estate market to a standstill as official apps and websites have been offline for a week. Notaries can't record new transactions while citizens can't obtain proof of ownership or detailed land records.<br>Email servers at the National Agency for Cadastre and Real Estate Advertising (Agenția Națională de Cadastru și Publicitate Imobiliară, or ANCPI) were also down as part of the incident.<br>Sources told Risky Business that the hacker entered using valid credentials, mapped internal systems, and wiped systems and backups after failing to extort the...