good question, I’m not at all familiar with the methods used in XXS (cross site scripting), man in the middle attacks (man in the browser) or DOM spoofing but my understanding is yes the canvas is currently vulnerable and exposed to being intercepted before it reaches the legitimate user and changed before rendering…
it’s essentially monkey patching eg…
const originalFillRect = CanvasRenderingContext2D.prototype.fillRect;
CanvasRenderingContext2D.prototype.fillRect = function(x, y, w, h) {
// modify behavior
console.log("Intercepted draw");
// call original
return originalFillRect.call(this, x, y, w, h);
};
or…
const originalGetContext = HTMLCanvasElement.prototype.getContext;
HTMLCanvasElement.prototype.getContext = function(type, ...args) {
const ctx = originalGetContext.call(this, type, ...args);
// wrap or modify ctx
return ctx;
};
and post render pixel manipulation…
const imageData = ctx.getImageData(0, 0, width, height);
// modify pixels
imageData.data[i] = 255;
ctx.putImageData(imageData, 0, 0);
you can if you’re OK with lawsuits, I think the problem is that if someone else intercepted the message before being shown to the user you could potentially end up in a lawsuit that wasn’t the fault of yourself…
It’s definitely interesting to follow the progress of this specification in that regard as it could change the way things are rendered entirely if a successful proposal is put together, we could be looking at something other than html5 
