91³Ô¹ÏÍø

Watch CBS News

48 bags with human remains found inside hidden grave in cartel stronghold in Mexico

As many as 48 bags containing human remains were discovered and recovered from a clandestine grave near Guadalajara, Mexican authorities said Thursday.

Guadalajara is the capital of Jalisco state, where one of Mexico's most violent and powerful drug cartels operates and where thousands of people have been reported missing.

The bags with the remains were located four weeks ago by a search group on a vacant lot in Zapopan, a vast outlying municipality in the Guadalajara metropolitan area, the state prosecutor's office said.

Officials said they were still trying to pin down an exact number for victims whose remains were found in the bags. They declined to give an estimate, but said they were carrying on with a search to see if more remains were around.

"We need to make progress on the forensic issue so that we can tell you how many victims this number of bags represents," Blanca Trujillo, deputy state prosecutor for missing persons, told a press conference.

In the meantime, the remains in the 48 bags that were recovered would need to be analyzed, officials said.

Since the grisly discovery, authorities have been working to recover the remains with the support of members of the Guerreros Buscadores collective.

In presenting an official report on the search efforts, Trujillo said her office had the support of the National Commission for the Search for Persons. Because of the vastness of the land, the search has required the use of heavy machinery, she said.

Hundreds of mass graves discovered

The discovery of the grave site adds to dozens of similar cases in Jalisco, the state hardest hit by the crisis of missing persons affecting Mexico, where more than 127,000 victims have vanished nationwide.

The vast majority of disappearances have occurred within the framework of intensified violence that has shaken Mexico since December 2006, when the federal government launched an anti-drug military operation.

One of the largest mass graves in Mexico was reported in 2017 when more than 250 skulls were found in what appeared to be a drug cartel mass burial ground on the outskirts of the city of Veracruz.

More recently, last June, forensic experts located the remains of 34 people buried near a residential area in Zapopan. In January, at least 56 bodies were discovered in unmarked mass graves in northern Mexico, not far from the U.S. border.

According to official data, Jalisco has more than 15,900 cases of missing persons, a toll that experts attribute to the activities of the Jalisco New Generation Cartel (CJNG).

Last February, the the CJNG as a "foreign terrorist organization," after identifying it as one of the main organized criminal groups trafficking fentanyl, a synthetic opioid that has caused the deaths of thousands of Americans.

CJNG has been accused of using fake job advertisements to lure new members and of torturing and killing recruits who resist. In March, a group of people looking for missing relatives found charred bones, shoes and clothing at a suspected training ground for the cartel.

The cartel is led by Nemesio Rubén Oseguera Cervantes, who is better known as "El Mencho." Washington has offered a  for information leading to his capture.

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(); } }); }); }); });