|
| 1 | +--- |
| 2 | +title: CVE-2017-18350に関する開示 |
| 3 | +name: cve-2017-18350-disclosure |
| 4 | +id: ja-2017-18350-disclosure |
| 5 | +lang: ja |
| 6 | +permalink: /ja/2019/11/08/CVE-2017-18350/ |
| 7 | +type: posts |
| 8 | +layout: post |
| 9 | + |
| 10 | +## If this is a new post, reset this counter to 1. |
| 11 | +version: 1 |
| 12 | + |
| 13 | +## Only true if release announcement or security annoucement. English posts only |
| 14 | +announcement: 1 |
| 15 | + |
| 16 | +excerpt: > |
| 17 | + 2017年11月6日にリリースされたBitcoin Core バージョン 0.15.1で修正されたCVE-2017-18350の詳細の開示 |
| 18 | +--- |
| 19 | +{{page.excerpt}} |
| 20 | + |
| 21 | +技術的な内容 {#technical-details} |
| 22 | +========== |
| 23 | +CVE-2017-18350はバッファーオーバーフローの脆弱性で、悪意あるSOCKSプロキシサーバーがsigned `char`型を持つシステム(一般的な32bitおよび64bitのx86 PCを含む)上のプログラムスタックを上書きすることを可能にします。 |
| 24 | + |
| 25 | +この脆弱性は[60a87bce873 (SOCKS5 support)](https://github.com/bitcoin/bitcoin/commit/60a87bce873ce1f76a80b7b8546e83a0cd4e07a5)で導入され、2012年8月27日にBitcoin Core v0.7.0rc1で最初にリリースされました。修正は2017年11月6日にリリースされたv0.15.1の[d90a00eabed ("Improve and document SOCKS code")](https://github.com/bitcoin/bitcoin/commit/d90a00eabed0f3f1acea4834ad489484d0012372)に隠されていました。 |
| 26 | + |
| 27 | +脆弱になるには、そもそもそのような悪意あるプロキシを利用するようノードを構成する必要があります。(インターネットなど)安全でないネットワークでプロキシを使用すると、そのような目的で接続が傍受される可能性があるため、潜在的に脆弱であることに注意してください。 |
| 28 | + |
| 29 | +ノードからの接続要求に応じて、悪意あるプロキシは要求されたものとは異なるターゲットドメイン名の肯定応答(ACK)で応答します。通常この肯定応答(ACK)は完全に無視されますが、長さが高bitを使用している(つまり長さ128-255を含む)場合、脆弱なバージョンでは負の数として解釈されます。ドメイン名を読み取るためにrecv()システムコールに負の数が渡されると、unsigned/正の数に変換されますが、はるかに広いサイズになり(通常は32 bit)、結果256 byteのダミースタックバッファを超えて事実上無限の読み取りが行われます。 |
| 30 | + |
| 31 | +この脆弱性を修正するため、ダミーバッファは明示的に符号なし(unsigned)のデータ型に変更され、負の数値との変換を回避しました。 |
| 32 | + |
| 33 | +帰属 {#attribution} |
| 34 | +=========== |
| 35 | +脆弱性を発見し最初の修正を提供した[practicalswift](https://twitter.com/practicalswift)と、修正版の偽装バージョンとリスクコードの一般的なクリーンナップを行ったWladimir J. van der Laanの功績です。 |
| 36 | + |
| 37 | +タイムライン {#timeline} |
| 38 | +======== |
| 39 | + |
| 40 | +- 2012-04-01: PR #1141で脆弱性が導入される |
| 41 | +- 2012-05-08: 脆弱性がgitリポジトリのmasterにマージされる |
| 42 | +- 2012-08-27: v0.7.0rc1で脆弱性が公開される |
| 43 | +- 2012-09-17: 脆弱性がv0.7.0でリリースされる |
| 44 | +- ... |
| 45 | +- 2017-09-21: practicalswiftがセキュリティチームに脆弱性を開示する |
| 46 | +- 2017-09-23: Wladimir PR #11397をオープンし内密に脆弱性を修正する |
| 47 | +- 2017-09-27: 修正がgitリポジトリのmasterにマージされる |
| 48 | +- 2017-10-18: 修正がgitリポジトリの0.15にマージされる |
| 49 | +- 2017-11-04: v0.15.1rc1で修正が公開される |
| 50 | +- 2017-11-09: 修正がv0.15.1でリリースされる |
| 51 | +- ... |
| 52 | +- 2019-06-22: Vulnerability existence disclosed to bitcoin-dev ML. |
| 53 | +- 2019-11-08: 脆弱性の詳細がbitcoin-dev MLに公開される |
| 54 | + |
| 55 | +{% include references.md %} |
0 commit comments