SD is fine, no losses whatsoever.
Glad to hear, unfortunately it was your sites method of payout that helped enable the attack.
Satoshi Dice lets user create very long chains of unconfirmed transactions,
all attacks we saw used Satoshi Dice to generate a chain of 20+ unconfirmed tx's.
The user then uses the chain of unconfirmed inputs generated by satoshidice and spends them against another 0 conf casino.
The user then takes the 1st unconfirmed input of the chain and spends it with another input that already has confirmations and tada, there is a very high chance of the chain of 20 txids being invalidated.
* Satoshi Dice suffers no loss, this is because they spend the unconfirmed inputs of the bet in the payout thus starting &/ continuing the chain.
Any successful double spend of the bet invalidates the payout txid. SD may have to rescan their wallet/s to validate their unspent inputs.
* The Attacker Suffers no loss other than normal gambling losses that are reduced by double spending losing bets.
* The attacked casino if it accepts and processes such a long chain of unconfirmed inputs loses.
It is a clever use/ abuse of satoshidice and we guess blockchain.info wallets which provides a nice gui for creating double spends.
There are additional checks you can impose on an incoming txid to avoid this, I will have codemonkey fire off an email to share our method and code if needs be with diceoncrack.
I would not say that SDice and blockchain wallet "enabled" this attack. To begin with, everybody should know that accepting 0-conf transactions is not secure.
Repeat: accepting 0-conf transactions is not secure. It is tempting to use and offers great possibilities, but it will always be a risk game against the malicious users.
Having said that, I think including users inputs in the payments is the only effective way you can protect against (this kind) of double-spend attacks. And it is a totally valid and fair countermeasure to use. I am using the same approach on bitbattle.me, probably going even further by fully tracking all inputs of each user separately.
If you can not implement such a safety mechanism on your site then you should change your code or stop accepting 0-conf transactions altogether.
TL;DR:
If you fall victim to 0-conf attack, don't blame others. You knew the risk, everybody and their mother told you that accepting 0-conf is unsafe. It is fun as long as it works, but you have to expect fraud cases.