91³Ô¹ÏÍø

Watch CBS News

Stephen Paul Gale guilty of all charges after trial for 1989 rapes at Massachusetts clothing store

Stephen Paul Gale, the suspected "Boston Strip Mall Rapist" accused of raping two women in a Massachusetts clothing store in 1989, was found guilty on all charges Tuesday.

Gale, now in his 70s, was convicted by a jury of sexual assault, kidnapping and armed robbery. It happened at the Hit or Miss clothing store in Framingham more than 35 years ago.

Investigators say he asked two women working at the store for help before pointing a gun at their heads, stealing money from the safe and raping them. Prosecutor Katharine Folger told jurors that an act by one of the two victims after the rapes led to Gale's arrest decades later.

"She grabbed a tissue, spit into the tissue, folded it in a plastic Hit or Miss bag, and she hid it," Folger said.  

The cold case was broken in 2024 when DNA from genetic genealogy connected Gale to the rapes. Investigators said Gale had at least eight aliases, and U.S. Marshals found him living on a million-dollar yacht off the coast of California. He was apprehended later in the year after an 82-minute pursuit.

Gale's defense questioned the quality of the evidence and argued that the prosecution did not prove his guilt beyond a reasonable doubt. 

The two women bravely faced Gale in court Tuesday, recounting how their lives have changed. Both are experiencing PTSD, panic attacks, and have moved out of state.

"Refused to remain a victim. I became a survivor. But the impact of what was done has never fully disappeared. I remember that day so vividly and details that would have been better left forgotten," one woman said.

"I am grateful after 26 years to receive justice. It brings closure and it brings more healing. I am grateful for the support received along the way and what went into making this day possible," the other victim told the court.

Middlesex County District Attorney Marian Ryan spoke about the women's courage to step forward. "This has been a long and difficult investigation. A 12-day trial. They have been remarkable," Ryan said.  

Prosecutors say the guilty verdicts are the result of decades of persistence. "There is no substitute, in these cases and even using technology, for real police work and dogged investigation," Ryan said.

Gale will be sentenced on Monday.

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