91³Ô¹ÏÍø

Watch CBS News

DHS secretary says metro Atlanta shootings that killed government employee was "act of pure evil"

Department of Homeland Security Secretary Markwayne Mullin has responded to a series of shootings in metro Atlanta that killed a DHS employee and another woman and left a man in critical condition.

In a statement posted on X, Mullin described the shootings on Monday as "an act of pure evil" and said that the department has been "devastated" by the violence.

The first victim was found with multiple gunshot wounds near a Checkers restaurant on Wesley Chapel Road at around 1 a.m. Monday. She was taken to a hospital but died, DeKalb County Police Chief Gregory Padrick said at a news conference. Police have not publicly identified her.

Just before 7 a.m. and more than 10 miles away in the suburb of Panthersville, officers responding to a call found a woman with gunshot and stab wounds, Patrick said. The woman, identified as DHS employee Lauren Bullis, died at the scene. A third victim, described only as a 49-year-old homeless man, was critically injured after being shot in a Kroger parking lot in Brookhaven.

dd68373e-0a4d-4898-abec-ee71a6826be4.jpg
Authorities say the spree of violence ended with the shooting of a homeless man sleeping outside a Brookhaven Kroger. CBS News Atlanta

Investigators in Brookhaven say they determined that the three attacks were connected and believe that at least the male victim was targeted at random. Authorities are still looking into whether Bullis and the other woman were also picked randomly.

Using information about a silver Volkswagen Jetta that police say was seen leaving the first crime scene, officers took 26-year-old Adon Abel into custody during a traffic stop in Troup County. Abel is charged with two counts of malice murder, aggravated assault, and additional firearms counts.

Concerns over alleged past criminal history and citizenship

The Department of Homeland Security identified Abel as a native of the United Kingdom who was granted U.S. citizenship in 2022, when Democrat Joe Biden was president.

Mullin, who took over DHS last month after Kristi Noem was fired, said in his statement that Abel has a criminal record that includes a sexual battery conviction, battery against a police officer, and assault.

In his statement, Mullin noted that since President Donald Trump took office, U.S. Citizenship and Immigration Services, which DHS oversees, has worked to ensure that people with criminal histories don't attain citizenship, but the U.S. has long barred people convicted of most violent felonies from becoming citizens, and it wasn't immediately clear if Adon Abel had a criminal record that predated him becoming a citizen in 2022.

Mullin said that his prayers were with the families of the victims.

Abel remains in custody and waived his initial court appearance on Tuesday.

The Associated Press contributed to this report.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });