Windows版のBIND 9.xでのみ発生する、意図しないアクセス許可をしてしまう問題についての記事が出ていました:
- 「BIND 9.x」Windows版に脆弱性、意図しない設定でオープンリゾルバーにも – INTERNET Watch
- BIND 9.xの脆弱性(サービス提供者が意図しないアクセスの許可)について – 株式会社日本レジストリサービス
後者のページが詳しいのですが、簡単にまとめると「WinSock 2はWinSock 2であってBSDソケットではない」という一語に尽きるかと思います。WSAIoctl
というAPIは、WinSockに固有のAPIであり、この仕様はWinSockに固有であるわけです。そのため、今回は255.255.255.255
のときの値が、BINDの作成者が期待していたとのと異なる関係で問題が生じてしまったというケースです。
WinSock 2はBSDソケットだと思って使っていると、微妙に互換性がない部分があります。注意しないと今回のように危ないことも起こりえるわけです。
なんというか、こういう微妙な差異で、正常系では問題なく動いてしまっているとなかなか気づきにくい不具合ですよね。