Как найти и заменить значение вложенного объекта?
Рекурсивно, вестимо.

Если ещё и нужно клонировать объект не изменяя исходный(сужу по коду), то можно совместить приятное с полезным:
const newData = JSON.parse(
  JSON.stringify(data), 
  (key, value) => key === 'value' ? 'new value' : value
);
P.S. Это сработает, только если объект - преобразуемый в json(не содержит истансов каких-либо классов, функций и т.п.).
В виду того, что сериализация и парсинг JSON очень дорогая операция (см. тест производительности), было принято решение написать свою рекурсивную функцию:

function clone(obj) {
    if (obj === null || typeof(obj) !== 'object' || 'isActive' in obj) return obj;

    const temp = obj.constructor();

    for (let key in obj) {
        if (Object.prototype.hasOwnProperty.call(obj, key)) {
            obj['isActive'] = null;
            temp[key] = key === 'value' ? 'new value' : clone(obj[key]);
            delete obj['isActive'];
        }
    }

    return temp;
}

clone(data);
P.s спасибо пользователю Дмитрий Беляев за совет который сподвигнул к изучению данного вопроса