プリンキピア

第14章サイバー資源の品質とサイバーコンピューティングのガバナンス

Internet Solutions Cybersecurityインターネットソリューションのサイバーセキュリティー

The Internet is a network of networks, which is an interconnected set of nodes. Nodes at the edge of the network are called (end-)hosts while nodes within the core of the network are routers. The network uses IP addresses to name the nodes, while humans use more easily memorable host names that point to the corresponding IP addresses. The Dynamic Host Configuration Protocol (DHCP) can create IP addresses and associate them with hosts as they connect to the network. The Domain Name Service (DNS) maps domain names to corresponding routable IP addresses (Figure 14.34).
英語のヒント
インターネットはネットワークのネットワークであり、互いにつながったノードの集合である。ネットワークの端のノードはエンドホスト、中心部のノードはルーターと呼ぶ。ネットワークはノードの識別にIPアドレスを使うが、人間は、対応するIPアドレスを指す、覚えやすいホスト名を使う。Dynamic Host Configuration Protocol(DHCP)は、ホストが接続するとき、IPアドレスを作って関連付けられる。Domain Name Service(DNS)は、ドメイン名を対応する経路制御可能なIPアドレスへ対応付ける(図14.34)。
Figure 14.34

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.34 Users obtain IP addresses from the DHCP server when they boot up a system. This process helps ensure that only authorized users can access the Internet. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.34 利用者はシステムの起動時にDHCPサーバーからIPアドレスを得る。この過程は、許可された利用者だけがインターネットへアクセスできるようにするのに役立つ。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
Web Infrastructure Assuranceウェブ基盤の保証
The World Wide Web (the Web) is an organizational system for information that is accessible by using the Internet. In other words, the Web infrastructure is provided by the TCP/IP network stack. In particular, review the roles of the various layers of the Internet TCP/IP network stack, the protocols associated to each layer, and how packets are created and exchanged over the Internet. It is important to know what each layer is responsible for and what the predominant protocols are at each layer. Finally, experimenting with existing network protocol analyzers (e.g., Wireshark) to study packets and communication is recommended. The overall design principles of the TCP/IP network stack have been critical to making an Internet that can evolve with changing needs (at least for the most part), but the the details really matter. In the following, we will dig into specific protocols to understand the kinds of attacks that can happen at the networking layer and how to protect against them.
英語のヒント
World Wide Web(ウェブ)は、インターネットを使ってアクセスできる情報の整理システムである。言い換えると、ウェブの基盤はTCP/IPのネットワークスタックが提供する。インターネットのTCP/IPスタックの各層の役割、各層のプロトコル、パケットを作って交換する仕組みを、特に復習してほしい。各層の責任と主要なプロトコルを知ることが重要である。Wiresharkのような既存のネットワークプロトコル解析ツールを試し、パケットと通信を調べることも勧める。TCP/IPスタックの全体的な設計原理は、少なくとも大部分で、変化する必要性に合わせて発展できるインターネットの実現に不可欠だった。しかし細部こそが重要である。以下では具体的なプロトコルを掘り下げ、ネットワーク層で起こりうる攻撃と防御を理解する。
As noted earlier, the DHCP protocol can create IP addresses dynamically and associate them to hosts as they connect on the network. The DNS maps domains names to corresponding routable IP addresses (Figure 14.35).
先に述べたように、DHCPはIPアドレスを動的に作り、ホストのネットワーク接続時に関連付けられる。DNSはドメイン名を、対応する経路制御可能なIPアドレスへ対応付ける(図14.35)。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.35 The DHCP protocol creates IP addresses dynamically and associates them to hosts as they connect on the network. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.35 DHCPはIPアドレスを動的に作り、接続してきたホストに関連付ける。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
Because DHCP requests are broadcasted to all nodes neighboring nodes initially, attackers on the same subnet can hear a new host request and can race the actual DHCP server to replace the DNS server (i.e., redirect any of a host’s lookups such as “what IP address should I use when trying to connect to google.com?” to a machine of the attacker’s choice) or the gateway, where the host sends all of its outgoing traffic so that the host does not have to figure out routes by itself; by making a machine of the attacker’s choice the gateway, the attacker would be able to act as the MitM and gain access to all of the traffic to and from the user’s machine. So, how can a user detect such an attack?
英語のヒント
DHCPの要求は、初めに近隣の全ノードへブロードキャストする。そのため、同じサブネットの攻撃者は、新しいホストの要求を聞き、実際のDHCPサーバーより先に応答してDNSサーバーを置き換えられる。「google.comへ接続するには、どのIPアドレスを使うか」などの検索を、攻撃者が選んだ機械へ向けるのである。ゲートウェイも置き換えられる。ホストは自分で経路を探さずに済むよう、すべての外向き通信をゲートウェイへ送る。攻撃者が選んだ機械をゲートウェイにすると、攻撃者は中間者(MitM)として、利用者の機械へ出入りするすべての通信にアクセスできる。では、利用者はこのような攻撃をどう検出できるだろうか。
The DNS service divides the domain name namespace into zones for administrative reasons. Subdomains do not need to be in the same zone, which allows the owner of one zone (e.g., nyu.edu) to delegate responsibility to another (e.g., cs.nyu.edu). The name server is the piece of code that answers queries of the form “What is the IP address for cs.nyu.edu?” Every zone must run at least two name servers. Caching is central to the success of the DNS service. Unfortunately, it is also central to attacks such as cache poisoning, which consists of filling a victim’s cache with false information (Figure 14.36).
英語のヒント
DNSサービスは、管理上の理由で、ドメイン名の名前空間をゾーンに分ける。サブドメインは同じゾーンにある必要はない。したがって、nyu.eduなどのゾーンの所有者は、cs.nyu.eduなどの別の所有者へ責任を委任できる。ネームサーバーは、「cs.nyu.eduのIPアドレスは何か」といった問い合わせへ答えるコードである。各ゾーンは、少なくとも二つのネームサーバーを動かさなければならない。DNSの成功にはキャッシュが不可欠である。残念ながら、犠牲者のキャッシュを偽情報で埋めるキャッシュポイズニングなどの攻撃でも、キャッシュが中心になる(図14.36)。
Figure 14.36

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.36 A DNS cache poisoning example consists of filling a local name server DNS cache with false information. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.36 DNSキャッシュポイズニングの例。ローカルのネームサーバーのDNSキャッシュを、偽の情報で埋める。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
In the diagram, the recursive name server is the name server that does the heavy lifting and issues DNS queries on behalf of the client resolver (i.e., the host that asks DNS queries on behalf of the client) until an authoritative answer returns. Because the local resolver has a lot of incoming/outgoing queries at any point in time, it determines which response maps to which queries by using a query ID (i.e., a 16-bit field in the DNS header shown as 16322 as an example in the diagram). The requester sets the query ID to whatever it wants and the responder must provide the same value in its response. For a cache poisoning attack to work, the attacker must guess the query ID, ask for it, and go from there. Note that a partial defense is to randomize query IDs, but this takes space, and the attacker can issue a lot of query IDs. Once the attacker has guessed the query ID, it must guess the source port number, which is typically constant for a given server (often always 53). Note that if the answer is already in the cache, the attacker will avoid issuing a query in the first place.
英語のヒント
図の再帰ネームサーバーは、クライアントリゾルバーに代わって、権威ある回答が戻るまでDNS問い合わせを出す、重い仕事を担うサーバーである。クライアントリゾルバーは、クライアントの代わりにDNS問い合わせを出すホストを指す。ローカルリゾルバーには常に多数の問い合わせが出入りするため、問い合わせIDで、どの応答がどの問い合わせに対応するかを判断する。DNSヘッダー内の16ビットの欄で、図では例として16322と示している。要求側は好きな問い合わせIDを設定でき、応答側は同じ値を返さなければならない。キャッシュポイズニングを成功させるには、攻撃者はIDを推測し、それを問い合わせ、そこから先へ進む。IDのランダム化は部分的な防御だが、空間を要し、攻撃者は多数のIDを出せる。IDを推測したら、次は送信元ポート番号を推測する。特定のサーバーでは通常一定で、常に53であることも多い。答えがすでにキャッシュにある場合、攻撃者はそもそも問い合わせを出さない。
The same cache poisoning approach may be used to poison more than one record (Figure 14.37).
同じキャッシュポイズニングの方法で、複数のレコードを汚染できる(図14.37)。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.37 The same cache poisoning approach may be used to poison more than one cached record. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.37 同じキャッシュポイズニングの方法で、複数のキャッシュ済みレコードを汚染できる。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
Note that randomizing query ID is not sufficient in itself because there are only 16 bits of entropy. So the source port should be randomized as well because there is no reason for it to stay and it is possible to obtain another 16 bits of entropy in this way. Another solution is to use Domain Name System Security Extensions (DNSSEC). If everyone has deployed it, and if you know the root’s keys, then DNSSEC prevents spoofed responses. DNSSEC uses public key infrastructure (PKI) to secure communication between the DNS servers in the various zones, and the authoritative answer is signed. But unlike PKIs, if one or more name servers has not deployed DNSSEC (which is the case in incremental deployments), then DNSSEC is not very useful. While it is possible to ignore name server responses without DNSSEC, this would improve security but it prevents the user from connecting to a number of hosts.
英語のヒント
問い合わせIDだけをランダム化しても、エントロピーが16ビットしかないため不十分である。送信元ポートを固定する理由はなく、そこもランダム化すれば、さらに16ビットのエントロピーを得られる。別の解決法は、DNS Security Extensions(DNSSEC)である。全員が導入し、ルートの鍵を知っていれば、DNSSECは偽装応答を防ぐ。公開鍵基盤(PKI)を使って各ゾーンのDNSサーバー間の通信を保護し、権威ある回答に署名する。しかしPKIと異なり、段階的な導入の途中などで、一つ以上のネームサーバーがDNSSEC未導入なら、あまり役立たない。DNSSECなしの応答を無視することはでき、安全性は高まるが、いくつものホストに接続できなくなる。
Now, let us focus on the networking protocols and study possible TCP/IP attacks and defenses. In particular, let us look at the (inter)network layer, which works across different link technologies, bridges multiple “subnets” to provide end-to-end Internet connectivity between nodes, and provides global addressing (IP addresses). Note that if the transport layer uses the TCP protocol, it will only result in best-effort delivery of data (i.e., no retransmissions). The IPv4 packet header used by the IP protocol is 20 B long, and one of the header fields is the source IP address. Nothing in the IP protocol enforces that the source IP address is yours. Furthermore, the IP protocol does not protect the payload or headers. Source spoofing exploits this (Figure 14.38).
英語のヒント
次に、ネットワークのプロトコルに注目し、TCP/IPの攻撃と防御を調べよう。特にネットワーク間を結ぶ層は、異なるリンク技術をまたいで働き、複数のサブネットを橋渡しして、ノード間の端から端までの接続を提供し、グローバルなIPアドレスを提供する。トランスポート層がTCPを使う場合、データはベストエフォートで配信され、再送は行われない。IPが使うIPv4パケットのヘッダーは20 Bで、その欄の一つが送信元IPアドレスである。そのアドレスが本当にあなたのものかを、IPは強制的に確認しない。ペイロードやヘッダーも保護しない。送信元偽装は、これを悪用する(図14.38)。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.38 Source spoofing exploits the fact that the IP protocol does not protect the payload or headers. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.38 送信元偽装は、IPがペイロードもヘッダーも保護しないことを悪用する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
Source spoofing may be used to send many emails from one computer (i.e., email spamming). The recipient may, in return, block emails from a given (source) IP address but the attacker could spoof the source IP address as a countermeasure. So, does a packet you receive have a spoofed source?
送信元偽装は、一台から大量のメールを送る、つまり迷惑メールの送信に使える。受信者は特定の送信元IPアドレスを遮断できるが、攻撃者は対抗して送信元を偽装できる。では、受け取ったパケットの送信元は偽装されているだろうか。
Because the Internet operates via destination-based routing, the response to a spoofed-source message sent by an attacker goes to the spoofed source rather than the attacker (i.e., pkt (spoofed source) -> destination: pkt -> spoofed source). Therefore, to know whether a packet you receive has a spoofed source, you can send a challenge packet to the possibly spoofed source (e.g., a difficult-to-guess, random number used once [nonce]). If the recipient can answer the challenge, then it is likely that the source was not spoofed. The problem with this approach is that you have to do this for every packet (i.e., every packet should have something difficult to guess). This is analogous to the easily predicted query IDs in the DNS query poisoning attacks that facilitated Kaminsky’s attack.
英語のヒント
インターネットは宛先に基づいて経路制御するため、攻撃者が送信元を偽装して送ったメッセージへの応答は、攻撃者ではなく、偽装された送信元へ届く。つまり、偽装送信元のパケット → 宛先、その後、応答パケット → 偽装送信元、となる。受け取ったパケットの送信元が偽装かを知るには、その可能性のある送信元へ、チャレンジのパケットを送れる。たとえば推測しにくい一度限りの乱数(nonce)である。相手が答えられれば、送信元は偽装でない可能性が高い。問題は、すべてのパケットについてこれを行う必要があることだ。各パケットに推測しにくい何かが必要となる。これは、Kaminsky攻撃を容易にしたDNSポイズニングでの、予測しやすい問い合わせIDと似ている。
Source spoofing may also be used for denial of service (DoS) attacks. The idea is to generate as much traffic as possible to congest the victim’s network. An easy defense is to block all traffic from a given source near the edge of your network. An easy countermeasure is to spoof the source address. Challenges will not help here because the damage has been done by the time the packets reach the core of your network. So, ideally, you would need to detect such spoofing near the source, and egress filtering does exactly that. The point (router/ switch) at which traffic enters your network is the ingress point, and the point (router/switch) at which traffic leaves your network is the egress point. While you do not know who owns all IP addresses worldwide, you do know who in your network gets what IP addresses. Therefore, your egress point can drop any packets whose source IP address does not match the IP address your network assigned to that machine. This egress filtering approach is not often deployed because your egress point bears the costs but your network does not gain any benefit.
英語のヒント
送信元偽装は、サービス拒否(DoS)攻撃にも使える。できるだけ大量の通信を作り、犠牲者のネットワークを混雑させる。簡単な防御は、ネットワークの端近くで、特定の送信元からの通信をすべて遮断することだ。簡単な対抗策は、送信元アドレスの偽装である。パケットが中心部へ届くまでに被害が起きてしまうため、チャレンジは役に立たない。理想的には送信元の近くで偽装を検出したい。それを行うのが、エグレスフィルタリングである。通信がネットワークへ入るルーターやスイッチを入口点、出るものを出口点という。世界中のIPアドレスの所有者は分からなくても、自分のネットワーク内の誰に何を割り当てたかは分かる。したがって出口点では、送信元IPアドレスが、その機械に割り当てたアドレスと一致しないパケットを捨てられる。この方式は、出口点が費用を負担するのに、自分のネットワークには利益がないため、あまり導入されない。
The defense methods suggested earlier to counter eavesdropping/tampering with IP headers are clearly not bulletproof. A better protection method against the fact that no security is built into IP is to deeply secure IP over IP. This is done by using a virtual private network (VPN). The goal of a VPN is to allow a client to connect to a trusted network from within an untrusted network. For example, you could use a VPN to connect to your company’s network for payroll file access while visiting a competitor’s office. In that case, a VPN client and server would create an end-to-end encrypted/authenticated channel, as illustrated in Figure 14.39. A predominant way of achieving this is to use Internet Protocol Security (IPSec) to secure IP datagrams (instead of using TLS or secure shell at the application layer level). This was considered a good idea circa 1992–1993 as it would secure all traffic (not just TCP/UDP) and automatically secure applications (without requiring changes). It also provides built-in firewalling/access control. Initial proposed standards were published in 1988, and a revision (i.e., Internet Key Exchange version 2) was approved in 2005.
英語のヒント
IPヘッダーの盗聴・改ざんに対して先に挙げた防御は、明らかに完璧ではない。IPに安全性が組み込まれていないことへの、よりよい保護は、IPの上でIPを深く保護することである。仮想プライベートネットワーク(VPN)を使う。VPNの目標は、信頼できないネットワーク内から、信頼できるネットワークへ接続することだ。たとえば競合企業のオフィスを訪ねていても、VPNで自社ネットワークにつなぎ、給与ファイルへアクセスできる。図14.39のように、VPNクライアントとサーバーが、端から端まで暗号化・認証された通信路を作る。主要な方法は、アプリケーション層でTLSやSecure Shellを使う代わりに、Internet Protocol Security(IPsec)でIPデータグラムを保護することである。1992~1993年ごろには、よい考えとされた。TCP/UDPだけでなくすべての通信を保護し、変更を求めず、自動的にアプリケーションを守れるからだ。ファイアウォールやアクセス制御も組み込まれる。最初の標準案は1988年に公表され、改訂版のInternet Key Exchangeバージョン2は2005年に承認された。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.39 A VPN client and server can be used to create an end-to-end encrypted/authenticated channel. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.39 VPNのクライアントとサーバーにより、端から端まで暗号化・認証された通信路を作れる。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
The Internet Key Exchange addressed anonymity issues and DoS prevention. There have been many implementations of IPSec, and nearly all deployments are in VPN settings. People ended up switching over to SSL/VPN, but that was not how SSL was intended to be used. IPSec is regarded today as a semifailure as it is complex, hard to use, and exhibits design flaws. IPsec did not get the usage model right, but SSL/TLS and SSH (discussed later in this subsection) got it right.
英語のヒント
Internet Key Exchangeは、匿名性の問題とDoSの防止に対処した。IPsecには多数の実装があるが、導入先のほぼすべてがVPNである。人々は結局SSL/VPNへ移ったが、SSLの想定された用途ではなかった。IPsecは複雑で使いにくく、設計上の欠陥もあるため、今日では半ば失敗と見なされる。IPsecは利用モデルを正しく捉えられなかったが、SSL/TLSと、後で扱うSSHは捉えられた。
IPSec operates in a few different modes:
IPsecには、いくつかの動作モードがある。
• Transport mode: Encrypts the payload but not the headers
• トランスポートモード:ペイロードは暗号化するが、ヘッダーは暗号化しない。
• Tunnel mode: Encrypts the payload and the headers
• トンネルモード:ペイロードとヘッダーを暗号化する。
The corresponding packet formats are illustrated in Figure 14.40.
対応するパケット形式を、図14.40に示す。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.40 IPsec uses specific packet formats for transport mode and tunnel mode. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.40 IPsecは、トランスポートモードとトンネルモードで、それぞれ特定のパケット形式を使う。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
For routing to work when tunnel mode encrypts the headers, IPSec encrypts the entire IP packet and makes it the payload of another IP packet.
トンネルモードでヘッダーを暗号化しても経路制御ができるよう、IPsecはIPパケット全体を暗号化し、それを別のIPパケットのペイロードにする。
Figure 14.41 illustrates using IPSec in tunnel mode. In this case, the VPN server decrypts and then sends the payload (itself a full IP packet) as if it had just received it from the network. From the client/server’s perspective, it looks like the client is physically connected to the network.
英語のヒント
図14.41は、トンネルモードでのIPsecの利用を示す。VPNサーバーは復号後、ペイロードを、今ネットワークから受け取ったかのように送信する。そのペイロード自体が、完全なIPパケットである。クライアントとサーバーからは、クライアントがネットワークへ物理的に接続しているように見える。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.41 In IPsec tunnel mode, the VPN server decrypts and then sends the payload (itself a full IP packet) as if it had just received it from the network. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.41 IPsecのトンネルモードでは、VPNサーバーは復号後、ペイロードそのものが完全なIPパケットであることを利用し、ネットワークから今受け取ったかのように送信する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
Now, let us focus on the transport layer of the TCP/IP stack and study possible TCP/IP attacks and defenses. The transport layers ensure end-to-end communication between processes. It provides different services, including UDP (unreliable datagrams) and TCP (reliable byte stream). Reliable means that it keeps track of the data appropriately received and retransmits packets as necessary. Given best-effort delivery, the goal is to ensure reliability. All packets are delivered to applications in unmodified order (reasonably high probability) and TCP must robustly detect and retransmit corrupt or lost data. TCP’s second job is flow and congestion control. The idea is to try to use as much of the network as is safe (not adversely affecting others’ performance) and efficient (using network capacity). The TCP solution is to dynamically adapt how quickly it sends packets based on the network path’s capacity. Furthermore, when an ACK doesn’t return, the network may be beyond capacity and slow down. TCP is a connection-driven protocol, and there are various TCP flags in the TCP header that are used to manage connections as indicated:
英語のヒント
次に、TCP/IPスタックのトランスポート層の攻撃と防御を調べよう。この層は、プロセス間の端から端までの通信を確保する。UDPの信頼性のないデータグラムや、TCPの信頼性のあるバイトストリームなど、異なるサービスを提供する。信頼性があるとは、正しく受信したデータを追跡し、必要に応じて再送することである。ベストエフォートの配信を前提に、信頼性の確保を目指す。すべてのパケットは、かなり高い確率で順序を保ってアプリケーションへ届く。TCPは破損や紛失を確実に検出し、再送しなければならない。二つ目の仕事は、フロー制御と輻輳制御である。他者の性能に悪影響を与えないという意味で安全に、ネットワーク容量を使うという意味で効率よく、できるだけ多く利用する。TCPは、経路の容量に基づいて送信速度を動的に適応させる。また、ACKが戻らないときは、ネットワークが容量を超え、遅くなっている可能性がある。TCPは接続を基にしたプロトコルで、ヘッダーには次の接続管理用フラグがある。
• SYN: Used for setting up a connection
• SYN:接続の確立に使う。
• ACK: Acknowledgments for data and “control” packets
• ACK:データと「制御」パケットへの確認応答。
• FIN: Used for shutting down a connection (two-way) using FIN and FIN+ACK
• FIN:FINとFIN+ACKで、双方向の接続を閉じるために使う。
• RST: Used for shutting down notification (says “delete all your local state, because I do not know what you are talking about”)
• RST:接続終了の通知に使う。「あなたが何を言っているか分からないので、ローカルの状態をすべて消してほしい」という意味である。
Various attacks are known to take advantage of the transport layer vulnerability. For example, SYN flooding takes advantage of a vulnerability in TCP’s connection setup’s three-way handshake as illustrated in Figure 14.42.
英語のヒント
トランスポート層の脆弱性を利用するさまざまな攻撃が知られている。たとえばSYNフラッディングは、図14.42のように、TCPの接続確立時の3ウェイハンドシェイクの脆弱性を利用する。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.42 SYN flooding takes advantage of a vulnerability in TCP’s connection setup’s three-way handshake. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.42 SYNフラッディングは、TCPの接続確立時の3ウェイハンドシェイクの脆弱性を悪用する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
If B does not receive an acknowledgment, it will hold onto this local state and retransmit SYN+ACK until it hears back or times out (up to 63 s). It is easy to detect many incomplete handshakes from a single IP address and then spoof the source IP address as illustrated in Figure 14.43 (it is just a field in a header as described earlier that can be set to whatever the attacker “C” likes). A possible problem is that the host who owns that spoofed IP address may respond to the SYN+ACK with a RST, deleting the local state at the victim. Therefore, an attacker should spoof an IP address of a host that it knows will not respond.
英語のヒント
Bは確認応答を受け取らなければ、ローカルの状態を保ち、返事があるか時間切れになるまで、最大63秒間SYN+ACKを再送する。一つのIPアドレスから来る未完了のハンドシェイクを多数見つけるのは容易で、その後、図14.43のように送信元IPアドレスを偽装できる。先述のとおり、単なるヘッダーの欄なので、攻撃者Cが好きな値を設定できる。考えられる問題は、偽装したIPアドレスの本当のホストが、SYN+ACKへRSTで応答し、犠牲者側のローカル状態を消してしまうことである。そのため攻撃者は、応答しないと分かっているホストのIPアドレスを偽装する必要がある。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.43 This IP address spoofing example illustrates how to detect many incomplete handshakes from a single IP address and then spoof the source IP address. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.43 IPアドレス偽装の例。一つのIPアドレスからの多数の未完了ハンドシェイクを検出し、その後、送信元IPアドレスを偽装する方法を示す。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
A defense against SYN flooding is to use SYN cookies, as illustrated in Figure 14.44.
SYNフラッディングへの防御は、図14.44のようにSYN Cookieを使うことである。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.44 Using SYN cookies provides a defense against SYN flooding. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.44 SYN Cookieは、SYNフラッディングへの防御を提供する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
The SYN cookie format is illustrated in Figure 14.45.
SYN Cookieの形式を図14.45に示す。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.45 SYN cookies use a specific format. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.45 SYN Cookieは特定の形式を使う。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
Injection attacks take advantage of having a node on the path between source and destination. In that case, injecting packets with the correct sequence number is trivial. If the node is not on the path, it would need to guess the sequence number, which is difficult. Initial sequence numbers used to be deterministic, and it was easy to wreak havoc by sending RSTs, injecting data packets into an existing connection (i.e., TCP veto attacks), or initiating and using an entire connection without ever hearing the other end. Figure 14.46 illustrates one type of attack known as the Mitnick attack.
英語のヒント
注入攻撃は、送信元と宛先の間の経路上にノードを持つことを利用する。その場合、正しいシーケンス番号でパケットを注入するのは容易である。経路上でなければ、番号を推測しなければならず、難しい。以前の初期シーケンス番号は決定的だったので、RSTの送信、既存接続へのデータ注入(TCP veto攻撃)、相手の声を一度も聞かずに接続全体を開始して利用することなどで、容易に大混乱を起こせた。図14.46は、Mitnick攻撃という一種を示す。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.46 A Mitnick attack spoofs a trusted server’s IP address to gain access to the X-terminal server to which it connects. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.46 Mitnick攻撃は、信頼されたサーバーのIPアドレスを偽装し、その接続先のX端末サーバーへアクセスする。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
A typical defense is to ensure that the initial sequence number is difficult to predict.
典型的な防御は、最初のシーケンス番号を予測しにくくすることである。
OPT-ACK attacks take advantage of the fact that TCP uses ACKs not only for reliability but also for congestion control (i.e., the more ACKs come back, the faster it can send), as illustrated in Figure 14.47.
OPT-ACK攻撃は、図14.47のように、TCPが信頼性だけでなく輻輳制御にもACKを使うことを悪用する。ACKが多く返るほど、速く送信できるからである。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.47 An OPT-ACK attack takes advantage of the fact that TCP uses ACKs not only for reliability but also for congestion control. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.47 OPT-ACK攻撃は、TCPが信頼性だけでなく輻輳制御にもACKを使うことを悪用する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
An attacker can exploit this as illustrated in Figure 14.48.
攻撃者は、図14.48のようにこれを悪用できる。
Image omitted because its reuse rights could not be verified.権利の確認ができないため画像を割愛。
Figure 14.48 An OPT-ACK exploit convinces TCP to send packets quickly, which results in a DoS attack on the network. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license; credit: reproduced with permission from Dave Levin)
図14.48 OPT-ACKの悪用は、TCPにパケットを高速送信させ、ネットワークへのDoS攻撃を引き起こす。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。出典:Dave Levinの許可を得て転載。)
The actual attack scheme is illustrated in Figure 14.49.
実際の攻撃の仕組みを図14.49に示す。
Figure 14.49

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.49 The OPT-ACK attack scheme results in packets getting dropped while TCP is fooled into thinking that packets were acknowledged. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.49 OPT-ACK攻撃では、パケットが廃棄されているのに、TCPは確認応答を受けたと思い込まされる。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
The big deal with this attack is its amplification factor. An attacker sends many bytes of data, causing the victim to send many more in response. There are examples of such attacks on NTP and DNSSEC. The attack is amplified in TCP due to its support for cumulative ACKs (i.e., “ACK x” says “I’ve seen all bytes up to but not including x”). Figure 14.50 illustrates the maximum number of bytes that can be sent by a victim per ACK.
英語のヒント
この攻撃で重大なのは、増幅率である。攻撃者が多数のバイトを送ると、犠牲者は応答として、さらにずっと多くを送る。NTPやDNSSECにも同様の攻撃例がある。TCPは累積ACKに対応するため、増幅が起こる。「ACK x」は、x自身を含まず、それより前の全バイトを受け取ったという意味である。図14.50は、ACK一つ当たり、犠牲者が送れる最大バイト数を示す。
Figure 14.50

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.50 This illustration shows the maximum number of bytes per ACK. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.50 ACK当たりの最大バイト数。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
Figure 14.51 shows the maximum number of ACKs that an attacker can send per second.
図14.51は、攻撃者が1秒間に送れるACKの最大数を示す。
Figure 14.51

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.51 This illustration shows the maximum number of ACKs sent by the attacker. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.51 攻撃者が送るACKの最大数。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
Therefore, the amount of damage is the value of max window size and MSS (e.g., default max window size: 65,536 and default MSS: 536). In that case:
したがって、被害の大きさは最大ウィンドウサイズとMSSの値で決まる。たとえば、既定の最大ウィンドウサイズは65,536、MSSは536である。この場合は次のようになる。
• Default amp factor: 65536 * (1/536 + 1/54) ~ 1336x
• 既定の増幅率:65536 * (1/536 + 1/54) ≈ 1336倍。
• Window scaling lets you increase this by a factor of 2^14
• ウィンドウスケーリングでは、これを2^14倍に増やせる。
• Window scaling amp factor: ~1336 * 2^14 ~ 22M
• ウィンドウスケーリングでの増幅率:約1336 * 2^14 ≈ 2200万倍。
• Using a minimum MSS of 88: ~ 32M
• 最小MSSの88を使うと:約3200万倍。
A challenge is to find a solution to defend against OPT-ACK in a way that is still compatible with existing implementations of TCP. Also, note that an essential goal in networking is incremental deployment. Ideally, we should be able to benefit from a system/modification when even a subset of hosts deploy it.
英語のヒント
難題は、既存のTCP実装との互換性を保ちながら、OPT-ACKを防ぐ方法を見つけることである。また、ネットワークの本質的な目標の一つは、段階的な導入である。理想的には、一部のホストだけが導入しても、システムや変更の利益を得られるべきだ。
Now, let us focus on the application layer of the TCP/IP stack and study possible TCP/IP attacks and defenses. The Secure Socket Layer (SSL) protocol was originally a Netscape proprietary protocol that targeted e-commerce applications (i.e., what people thought the Web was for in 1994). The objective was to address outcomes such as “send my credit card to Amazon securely.” The basic principle (circa 1994) was to authenticate the server (via certificate) and let the client access the server unauthenticated. SSLv1 was designed by Kipp Hickman and had serious security flaws. He addressed some of the flaws in SSLv2, which still had security issues but was widely deployed. SSLv3 fixed these problems. The Transport Layer Security (TLS) 1.0 protocol was the first standardized version of SSL with some improvements for key derivation (refer to ietf.org RFC 2246). TLS 1.1 (RFC 4346) addressed some security flaws, and TLS 1.2 (RFC 5246) added more flexibility in using hash functions. TLS 1.3 brought significant changes (e.g., no RSA key exchange for forward secrecy, authenticated encryption modes, no RTT handshakes). As explained earlier, a trusted CA may vouch that a certain public key belongs to a particular site and issue a TLS certificate that abides by the x.509 format.
英語のヒント
次にアプリケーション層に注目し、TCP/IPの攻撃と防御を調べよう。Secure Socket Layer(SSL)は、当初はNetscape独自のプロトコルで、電子商取引を対象にしていた。1994年には、それがウェブの用途だと考えられていた。「クレジットカードをAmazonへ安全に送る」といった結果を実現することが目的だった。1994年ごろの基本原理は、証明書でサーバーを認証し、クライアントは認証なしで接続できるようにすることだった。Kipp Hickmanの設計したSSLv1には重大な欠陥があった。SSLv2で一部を直したが、問題を残しながら広く導入された。SSLv3でこれらの問題を修正した。Transport Layer Security(TLS)1.0は、鍵導出の改善を含む、SSL初の標準化版だった(ietf.orgのRFC 2246参照)。TLS 1.1(RFC 4346)は一部の欠陥に対処し、TLS 1.2(RFC 5246)はハッシュ関数の利用に柔軟性を加えた。TLS 1.3は、前方秘匿性のためRSA鍵交換をなくし、認証付き暗号モードやRTTのないハンドシェイクなど、大きな変更を加えた。先に説明したように、信頼されたCAは、ある公開鍵が特定サイトに属すると保証し、X.509形式に従うTLS証明書を発行できる。
Web applications use HTTP over SSL/TLS (HTTPS), in which case the client knows that the server expects HTTPS (because it is specified in the URL and supported on a separate port on the server). Furthermore, the server certificate has its domain name. HTTP is stateless, and the lifetime of an HTTP session is as follows:
英語のヒント
ウェブアプリケーションは、SSL/TLS上のHTTPであるHTTPSを使う。URLで指定され、サーバーの別ポートで対応するため、クライアントはサーバーがHTTPSを期待すると分かる。また、サーバー証明書にはドメイン名がある。HTTPは状態を保持せず、HTTPセッションの流れは次のとおりである。
• The client connects to the server.
• クライアントがサーバーへ接続する。
• The client issues a request.
• クライアントが要求を出す。
• The server responds.
• サーバーが応答する。
• The client issues a request for something in the response.
• クライアントが、その応答に含まれるものについて要求する。
• The interaction continues until client has received all the information it needs.
• 必要な情報をすべて受け取るまで、やり取りを続ける。
• The client disconnects.
• クライアントが切断する。
Because asymmetric (private key operations) are expensive (and HTTPS tends to involve a lot of SSL/TCP connections), caching pays off. Each handshake establishes a session, and clients can resume the session with the same keying material, skipping the key exchange. If the client and servers do not know each other’s capabilities, they can discover them and automatically upgrade to TLS. This, however, may allow downgrade attacks.
英語のヒント
非対称暗号の秘密鍵操作は高くつき、HTTPSでは多数のSSL/TCP接続が起こりがちなので、キャッシュが効果を持つ。各ハンドシェイクでセッションを確立し、クライアントは同じ鍵の情報で再開して、鍵交換を省ける。相互の対応機能が不明なら、クライアントとサーバーはそれを調べ、自動でTLSへ移行できる。ただし、ダウングレード攻撃を許す可能性がある。
DoS attacks on SSL/TLS rely on the SSL/TLS connection requiring TCP handshake, and TCP connections are easy attack with a DoS. Protection against these types of attacks needs to be at a lower layer and is provided by Datagram TLS (RFC 4347). DTLS is a slight modification of TLS that provides reliability for the handshake and ensures that data records are independent.
SSL/TLSへのDoS攻撃は、その接続にTCPハンドシェイクが必要で、TCP接続はDoS攻撃を受けやすいことに依存する。保護は下位の層に必要であり、Datagram TLS(RFC 4347)が提供する。DTLSはTLSを少し変更し、ハンドシェイクの信頼性と、各データレコードの独立性を確保する。
Tatu Ylonen originally designed the Secure Shell (SSH) Protocol, which is a replacement for rsh. It is now the standard tool for secure remote login, and it provides a lot of authentication mechanisms, such as remote X, file transfer, and port forwarding. The transport protocol used by SSH looks a lot like TLS. SSL does not use certificates; the server just has a raw public key and it provides the key when the client connects. The client stores the server’s key on the first connection. Any changes in the key result in an error. The key can be authenticated from the band (i.e., the server operator tells the client the key fingerprint/hash over the phone; only the most concerned people do this). The SSH leap of faith authentication was considered extreme initially but is now considered clever. SSH client authentication first requires server authentication and then authenticates the client using various negotiated mechanisms (e.g., raw password, challenge-response, public key, GSS-API, Kerberos). SSH provides port forwarding/tunneling features. SSH port forwarding redirects network traffic to a particular port/IP address so that a remote host is made directly accessible by applications on the local host. The destination may be on the remote SSH server, or that server may be configured to forward to another remote host. SSH tunnels are powerful tools for IT administrators and malicious actors because they can transit an enterprise firewall undetected. As a result, tools are available to prevent unauthorized use of SSH tunnels through a corporate firewall. Figure 14.52 illustrates how an X11 remote connection can be established using SSH.
英語のヒント
Secure Shell(SSH)は、rshを置き換えるものとして、Tatu Ylonenが最初に設計した。現在は安全な遠隔ログインの標準ツールであり、遠隔X、ファイル転送、ポート転送など、多数の認証機構を提供する。SSHのトランスポートプロトコルは、TLSによく似ている。SSLは証明書を使わず、サーバーは生の公開鍵を持ち、クライアントの接続時に渡すだけである。クライアントは最初の接続で鍵を保存し、その後鍵が変わるとエラーになる。鍵は別経路でも認証できる。サーバー運用者が電話でフィンガープリントやハッシュを伝える方法で、特に気にかける人だけが行う。SSHの、最初は信じてみる認証は、初めは極端とされたが、今では巧妙と見なされる。SSHのクライアント認証は、まずサーバーを認証し、その後、交渉で選んだ方式によりクライアントを認証する。生のパスワード、チャレンジ・レスポンス、公開鍵、GSS-API、Kerberosなどがある。SSHはポート転送とトンネリングも提供する。特定のポートやIPアドレスへ通信を向け、ローカルのアプリケーションから遠隔ホストへ直接アクセスできるようにする。宛先は遠隔SSHサーバー自身でもよく、そこから別の遠隔ホストへ転送する設定もできる。SSHトンネルは、企業のファイアウォールを検知されず通過できるため、IT管理者にも悪意ある者にも強力な道具である。そのため、企業のファイアウォールを通る無許可のトンネル利用を防ぐツールもある。図14.52は、SSHによるX11の遠隔接続を示す。
Figure 14.52

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 14.52 With an X11 remote SSH connection, the server simply has to “setenv DISPLAY localhost: XXXX” and the applications just automatically work. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図14.52 X11のSSH遠隔接続では、サーバーが「setenv DISPLAY localhost: XXXX」と設定するだけで、アプリケーションは自動的に動作する。(帰属表示:著作権 Rice University、OpenStax。CC BY 4.0ライセンス。)
Finally, SSH is backward and compatible with rsh, so other applications can be securely remoted without port forwarding. This is also useful when applications need insecure remote access.
最後に、SSHはrshとの後方互換性があるため、ポート転送なしに他のアプリケーションを安全に遠隔利用できる。安全でない遠隔アクセスを必要とするアプリケーションにも役立つ。
The various application layer protocols we discussed are subject to a variety of attacks, including attack vectors, site design attacks, UI interface-based attacks, PKI attacks, implementation attacks (e.g., null termination attacks), Goto fail, heartbleed, BERserk attack, Logjam, Cloudbleed, and client-side HTTP interception.
英語のヒント
ここまで扱ったアプリケーション層プロトコルは、多様な攻撃の対象となる。攻撃経路、サイト設計への攻撃、UIを使う攻撃、PKI攻撃、ヌル終端攻撃などの実装への攻撃、Goto fail、Heartbleed、BERserk、Logjam、Cloudbleed、クライアント側のHTTP傍受などである。
Attack vectors are designed to attack the weakest certificate authority. They attack browser implementations. They may also find and exploit a key generation library bug that leads the attacker to discover all the private keys issued by that authority. They also attacked the cryptographic primitives, although this was more difficult to achieve.
攻撃経路は、最も弱い認証局を狙うよう設計される。ブラウザーの実装を攻撃し、鍵生成ライブラリーのバグを見つけて悪用し、その局が発行したすべての秘密鍵を発見する場合もある。実現はより難しかったが、暗号プリミティブ自体も攻撃された。
SSLStrip attacks are examples of attacks that go after site design by proxying through the content without HTTPS. The defense is to default to HTTPS for all websites. You can also use HSTS (hypertext strict transport security), which is enforced by browsers; the header states to always expect HTTPS. HTTPS everywhere can also be forced using a browser extension. Some site design attacks use mixed content attacks. In this case, a page loads over HTTPS but contains content over HTTP (e.g., JavaScript). An active attacker can tamper with HTTP content to hijack the session. The defense is to issue browser warnings (e.g., "This page contains insecure content"), but the use of these warnings is inconsistent and the warnings are often ignored.
英語のヒント
SSLStripは、HTTPSを使わずコンテンツを代理転送し、サイト設計を狙う攻撃の例である。防御は、全サイトでHTTPSを既定にすることだ。ブラウザーが強制するHSTS(hypertext strict transport security)も使える。ヘッダーで、常にHTTPSを期待すると宣言する。ブラウザー拡張で、どこでもHTTPSを強制することもできる。サイト設計への攻撃には、混在コンテンツ攻撃もある。ページはHTTPSで読み込むが、JavaScriptなど一部の内容がHTTPになる。能動的な攻撃者はHTTPの内容を改ざんし、セッションを乗っ取れる。防御は「このページには安全でないコンテンツがあります」などの警告だが、警告の使い方は一貫せず、しばしば無視される。
UI interface-based attacks exploit invalid certs (i.e., expired, misidentified URL, unknown CA such as a self-signed certificate). The defense is to issue browser warnings and require users to go through an anti-usability page to continue. Another type of UI interface-based attack is a picture-in-picture attack that spoofs the user interface (i.e., the attacker page draws a fake browser window with a lock icon). In this case, the defense is to create an individualized image.
英語のヒント
UIを使う攻撃は、期限切れ、URLの誤認、自己署名証明書のような不明なCAなど、無効な証明書を悪用する。防御では、ブラウザーが警告を出し、続行に使いにくいページを通ることを要求する。別の種類は、UIを偽装するピクチャー・イン・ピクチャー攻撃である。攻撃ページが、鍵のアイコン付きの偽ブラウザー窓を描く。この場合の防御は、利用者ごとに異なる画像を作ることである。
PKI attacks compromise CAs. There was an example of such an attack in 2011 against a Dutch CA named DigiNotar. It issued a *.google.com certificate to an attacker that subsequently used it to orchestrate MitM attacks in Iran. Nobody noticed the attack until someone found the certificate in the wild. DigiNotar later admitted that dozens of fraudulent certificates were created. Google, Microsoft, Apple, and Mozilla all revoked the root DigiNotar certificate. The Dutch government took over DigiNotar, and the company subsequently went bankrupt and closed. In general, MD5/SHA1 is known to break and can generate collisions. In 2008, researchers showed they could create a rogue CA certificate using an MD5 collision. The attack consisted of colliding messages, A and B, with the same MD5 hash as follows:
英語のヒント
PKI攻撃は、CAを侵害する。2011年には、オランダのDigiNotarへの攻撃があった。同社は攻撃者に*.google.comの証明書を発行し、攻撃者はそれを使ってイランで中間者攻撃を仕掛けた。実際に出回る証明書を誰かが見つけるまで、誰も気付かなかった。後にDigiNotarは、数十件の不正な証明書が作られたと認めた。Google、Microsoft、Apple、Mozillaは、いずれも同社のルート証明書を失効させた。オランダ政府が同社を管理下に置き、同社はその後破産して閉鎖した。一般にMD5/SHA-1は破られ、衝突を生成できると知られている。2008年、研究者はMD5の衝突を使って不正なCA証明書を作れると示した。同じMD5ハッシュを持つ、衝突する二つのメッセージAとBを、次のように使った。
• A: Site certificate: "cn=attack.com, pubkey=....”
• A:サイト証明書:「cn=attack.com, pubkey=....」。
• B: Delegated CA certificate: "pubkey=.... is allowed to sign certs for *”
• B:委任されたCA証明書:「pubkey=....は、*の証明書に署名することを許される」。
• Get CA to sign A -- Signature is Sign(MD5(message))
• CAにAへ署名させる。署名はSign(MD5(message))である。
• Signature also valid for B (same hash)
• 同じハッシュなので、署名はBにも有効である。
• The attacker is now a CA!
• 攻撃者は、今やCAである。
• Make a cert for any site, browsers will accept it
• どのサイトの証明書でも作れ、ブラウザーはそれを受け入れる。
MD5 CA certificates still exist, but CAs have stopped signing certificates with them. SHA-1 should not be used either.
MD5のCA証明書はまだ存在するが、CAはそれを使う証明書への署名をやめた。SHA-1も使うべきではない。
There are numerous other types of attacks:
他にも、多数の種類の攻撃がある。
• Goto fail (Feb. 2014) was an Apple SSL bug that resulted in skipping certificate check for almost a year.
• Goto fail(2014年2月):AppleのSSLのバグで、ほぼ1年間、証明書の確認が飛ばされた。
• Heartbleed (April 2014) was an OpenSSL bug that leaked data, possibly including private key!
• Heartbleed(2014年4月):OpenSSLのバグで、秘密鍵を含む可能性のあるデータが漏れた。
• Mozilla BERserk vulnerability (Oct 2014) was a bug in verifying certificate signatures that allowed spoofing certificates.
• MozillaのBERserk脆弱性(2014年10月):証明書の署名検証のバグで、証明書の偽装が可能になった。
• Logjam (Oct 2016) took advantage of a TLS vulnerability to man-in-the middle “downgrade” attacks.
• Logjam(2016年10月):中間者による「ダウングレード」攻撃へのTLSの脆弱性を利用した。
• Cloudbleed, one of the most popular “content delivery networks,” acts as the SSL endpoint for many servers; a buffer overflow attack caused it to leak HTTPS data.
• Cloudbleed:最もよく使われる「コンテンツ配信ネットワーク」の一つで、多数のサーバーのSSL終端として働く。バッファーオーバーフロー攻撃により、HTTPSデータが漏れた。
• Client-side HTTP interception leverages the fact that most antivirus software intercepts your HTTPS, generating poor implementations and introducing new vulnerabilities.
• クライアント側のHTTP傍受:大半のウイルス対策ソフトがHTTPSを傍受することを利用する。質の低い実装が生じ、新たな脆弱性が持ち込まれる。