diff --git a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs index 63b3a1b2..160810ce 100644 --- a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs +++ b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs @@ -138,6 +138,16 @@ public static class MfmSerializer result.Append(end); break; } + case MfmTimeoutTextNode mfmTimeoutTextNode: + { + // This mitigates MFM DoS payloads, since every incoming note is parsed & reserialized. + // We need to remove all tags to make sure that the mitigation can't be bypassed by adding to the payload. + // Opening tags are removed because they are now unnecessary. + result.Append(""); + result.Append(mfmTimeoutTextNode.Text.Replace("", "").Replace("", "")); + result.Append(""); + break; + } case MfmTextNode mfmTextNode: { result.Append(mfmTextNode.Text);