I think you should look at it the other way around.
Let $X_t$ denote the FOR/DOM spot exchange rate, i.e. 1 unit of foreign currency = $X_t$ units of domestic currency at time $t$.
The FX forward rate $F^X(t,T)$ is defined as
$$ F^X(t,T) = X_t \frac{B_f(t,T)}{B_d(t,T)} $$
by basence of arbitrage opportunity.
To understand this, consider the following thought experiment. Let $C_0$ represent a cash amount denominated in the foreign currency. At $t=0$, you - an investor with initial capital $C_0$ - basically face a choice:
- Invest in the foreign economy: buy $C_0/B^f(0,T)$ units of foreign zero-coupon bonds at $t=0$. This costs you $C_0$. At $t=T$, you shall receive (assuming no default): $C_0/B^f(0,T)$.
- Invest in the domestic economy: exchange your $C_0$ units of the foreign currency for $C_0 X_0$ units of domestic currency and buy $C_0 X_0/B^d(0,T)$ units of domestic zero-coupon bonds at $t=0$. This costs you $C_0 X_0$. At $t=T$, you shall receive (assuming no default): $C_0 X_0 / B^d(0,T)$.
Now to preclude arbitrage opportunities, it is clear that the two strategies should be equivalent as seen of today. In other words, the fair forward exchange rate should be such that, what you receive when you invest $C_0$ in the foreign economy, converted at the fair forward rate, should match what you receive when you invest $C_0$ in the domestic economy. With the previous notations this writes:
$$ \left( C_0/B^f(0,T) \right) \times F^X(0,T) = C_0 X_0 / B^d(0,T)$$
hence
$$ F^X(0,T) = X_0 \frac{B^f(0,T)}{B^d(0,T)} $$
[REM 1]: you need to consider bonds vs investing in the respective money market accounts when interest rates are stochastic, because the evolution of the money market accounts are not deterministic anymore: when you invest, you don't know what you'll get in the end. Buying bonds and assuming zero-default saves the day.
[REM 2]: As explained in Gordon's answer if you want to write the forward exchange rate as a martingale under a certain measure $\mathbb{X}$
$$ F^X(0,T) = X_0 \frac{B^f(0,T)}{B^d(0,T)} = \mathbb{E}^{\mathbb{X}}_0 \left[ X_T \underbrace{\frac{B^f(T,T)}{B^d(T,T)}}_{=1} \right] = \mathbb{E}_0^{\mathbb{X}} [ F(T,T) ]$$ you see that this measure is associated to the numéraire $B^d(t,T)$ since the last expression is equivalent to writing that:
$$ F(t,T) = \frac{X_t B^f(t,T)}{B^d(t,T)} \text{ is a } \mathbb{X} \text{ martingale} $$
and $\mathbb{X}$ is called the $T$-forward domestic measure, usually denoted $\mathbb{Q}^d_T$.
[REM3]: If you're wondering whether your proposed SDE is consistent with the above results, here's how you can convince yourself. Applying Itô's lemma to your SDE (expressed under the domestic risk-neutral measure $\mathbb{Q}^d$) and integrating from $t=0$ to $t=T$ gets you
$$ X_T = X_0 \exp\left(\int_0^T (r^d_t-r^f_t) dt - \frac{1}{2}\sigma^2 T + \sigma W_T^{\mathbb{Q}^d} \right) = X_0 \frac{B^d(T)}{B^f(T)}\mathcal{E}[\sigma W_T^{\mathbb{Q}^d}]$$
where I've used the notation $B(t)$ for the $t$-value of a money market account in the domestic/foreign economies where $1$ unit of currency has been invested at $t=0$.
The quanto change of measure then classically writes (see related SE questions)
$$ \left. \frac{d\mathbb{Q}^f}{d\mathbb{Q}^d} \right\vert_{\mathcal{F}_T} = \frac{X_T B^f(T)}{X_0 B^d(T)} = \mathcal{E}[\sigma W_T^{\mathbb{Q}^d}] $$
given the expression of $X_T$ found above (note how this is a Doléans-Dade exponential).
Now we would like to compute the fair forward price as an expectation under the domestic $T$-forward measure $\mathbb{Q}^d_T$ whose Radon-Nikodym derivative wrt $\mathbb{Q}^d$ reads:
$$ \left. \frac{d\mathbb{Q}^d_T}{d\mathbb{Q}^d} \right\vert_{\mathcal{F}_T} = \frac{1/B^d(T)}{B^d(0,T)} $$
(notice how this equals one for deterministic rates). We then have:
\begin{align}
F^X(0,T) &= \mathbb{E}^{\mathbb{Q}^d_T}_0[ X_T ] \\
&= \mathbb{E}^{\mathbb{Q}^d}_0 \left[ X_T \left. \frac{d\mathbb{Q}^d_T}{d\mathbb{Q}^d} \right\vert_{\mathcal{F}_T} \right] = \mathbb{E}^{\mathbb{Q}^d}_0 \left[ X_T \frac{1/B^d(T)}{B^d(0,T)} \right] \tag{1} \\
&= \frac{1}{B^d(0,T)} X_0 \mathbb{E}^{\mathbb{Q}^d}_0 \left[ \frac{1}{B^f(T)} \mathcal{E}[\sigma W_T^{\mathbb{Q}^d}] \right] \tag{2} \\
&= \frac{1}{B^d(0,T)} X_0 \mathbb{E}^{\mathbb{Q}^f}_0 \left[ \frac{1}{B^f(T)} \underbrace{\mathcal{E}[\sigma W_T^{\mathbb{Q}^d}] \left. \left(\frac{d\mathbb{Q}^f}{d\mathbb{Q}^d}\right)^{-1} \right\vert_{\mathcal{F}_T}}_{=1} \right] \tag{3} \\
&= X_0 \frac{B^f(0,T)}{B^d(0,T)} \tag{4}
\end{align}
where we have used:
- Change of measure from the $T$-forward domestic measure $\mathbb{Q}^d_T$ to the dometic measure $\mathbb{Q}^d$ + expression of the corresponding Radon-Nikodym derivative
- Definition of $X_t$ solution of the original SDE provided under the domestic measure $\mathbb{Q}^d$
- Change of measure from domestic measure $\mathbb{Q}^d$ to foreign measure $\mathbb{Q}^f$ + expression of the corresponding Randon-Nikodym derivative
- Definition of the price of a zero-coupon bond under the foreign measure $\mathbb{Q}^f$
Conclusion you can safely use that SDE as it implies no blatant arbitrage issues.