Remove multiplied white noise from periodic signal
I suppose you can use synchronous averaging in this case due to the signal being periodic and the nature of the noise (as long as it is sufficiently uncorrelated). See MATLAB example:

ts = 1e-4; % sampling time
tend = 10; % end time
t = 0:ts:tend-ts; % time vector

fx = 10; % periodic signal frequency
x = 5*sin(2*pi*fx*t); % periodic signal

switch 2
    case 1
        n = 1*rand(1,length(x)); % noise in (0,1)
    case 2
        R = 50; % upsampling factor
        nn = 1*rand(1,length(x)/R+1);
        tn = 0:ts*R:tend;
        nnn = timeseries(nn,tn);
        nnnn = resample(nnn, t, 'zoh');
        n = nnnn.Data(:).'; % noise that looks like OP's plot
end

%y = x + n; % additive 
y = x.*n; % multiplicative 

nsp = 1/(fx*ts); % no. samples per period
NP = fx*tend; % no. periods

avg = zeros(1,nsp); % initialise 
for k = 1:NP % loop over number of periods available

    Is = (k-1)*nsp+1; % index to start of period
    Ie = k*nsp; % index to end of period

    avg = avg + 1/NP*y(Is:Ie); % add period to average
end
avg = 2.*avg; % scale dependent on noise and how it enters the signal

plot(t(1:nsp),y(1:nsp),t(1:nsp),avg,t(1:nsp),x(1:nsp)) % plot signals
legend('signal with noise', 'average', 'signal')