Millions of Microsoft-stored data records mistakenly exposed

SAN FRANCISCO — Some 38 million records stored on a Microsoft service, including private information, were mistakenly left exposed this year, security firm UpGuard said on Monday.

The data, including names, addresses, financial information and COVID-19 vaccination statuses, was made vulnerable — but not compromised — before the problem was resolved, according to the digital security company's investigation.

Among the 47 affected organisations were American Airlines, Ford, JB Hunt and public agencies such as the Maryland Department of Health and New York City's public transit system.

They all used a Microsoft product called Power Apps, which allows for the creation of websites and mobile apps to interact with the public.

The service's default software configuration setting meant the data of the affected organisations was left without protection up until June 2021, according to UpGuard.

.col-lg-12.second .opinion-widget{border-top:1px solid #D0D0D0;} #widget_1623 .opinions-title {font-size:32px;}

{{articles_filter_1623_widget?.title}}

.epaper-separator{ height: 1px; width: 100%; background-color: #D0D0D0; margin: 15px 0; }

Today’s Paper

.related-articles .layout-ratio{padding-bottom:55%;}
.alert-success { color :#A3656F ; } .alert-danger { color : red ; } .footer { font-family:Myriad Pro,Arial; }
document.addEventListener('DOMContentLoaded', function () { function validateEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function showModal(message,type) { const messageContainer = document.getElementById("messageContainerFooter"); messageContainer.textContent = message; messageContainer.className = `alert alert-${type} mt-3`; // Bootstrap alert styling messageContainer.classList.remove("d-none"); // Hide message after 5 seconds setTimeout(() => { messageContainer.classList.add("d-none"); }, 5000); } document.getElementById("emailFormFooter").addEventListener("submit", function(event) { event.preventDefault(); const emailInput = document.getElementById("emailFooter"); const email = emailInput.value.trim(); if (!validateEmail(email)) { showModal('Invalid email format','danger'); return; } const url = `/subscribeNewsletter?email=${encodeURIComponent(email)}`; fetch(url, { method: "GET", headers: { "Accept": "application/json" } }) .then(response => { if (!response.ok) { showModal("Error submitting email. Try again.",'danger'); } return response.json(); }) .then(data => { showModal(data.message,'success'); }) .catch(error => { showModal("Error submitting email. Try again.",'danger'); }); }); });