| Title | LinuxのLinux Kernelにおける境界外書き込みに関する脆弱性 |
|---|---|
| Summary | Linuxカーネルにおいて、以下の脆弱性が修正されました。ipv6_rpl_srh_rcv()はRFC 6554のソースルーティングヘッダーを展開し、次のセグメントをipv6_hdr-daddrに入れ替えた上で再圧縮し、古いヘッダーを取り除いて新しいヘッダーとIPv6ヘッダーを戻します。再圧縮されたSRHが拡大する際にmac_lenのヘッドルームを確保します。入れ替えによりセグメントがdaddrと共有する共通プレフィックス長が減る場合(CmprI=0, CmprE0, seg[0][0] != daddr[0]の場合は最大+8バイトまで)再圧縮したヘッダーが受信時より大きくなる可能性があります。pskb_expand_head()はsegments_left == 0のときにのみ実行されていたため、初期のセグメントではプッシュ時に未検査のヘッドルームを消費していました。skb_push()がデータ前にskb-mac_lenバイト未満を残してしまうと、skb_mac_header_rebuild()内のskb_set_mac_header(skb, -skb-mac_len)が(data - head) - mac_lenをu16 mac_headerフィールドに格納し、オーバーフローして約65530となり、その後のmemmove()がskb-headから約64KiB先までmac_lenバイトを書き込みます。この脆弱性は、CmprI=0, CmprE=15の二つのセグメントを持つタイプ3 SRHを含むAF_INET6/SOCK_RAW/IPV6_HDRINCLパケットをloデバイスで送信すると、一回通過後にヘッドルームが8に達し、KASANによってipv6_rthdr_rcvで14バイトの範囲外書き込みが報告される問題です。この問題は、残りの空き容量がプッシュサイズとmac_lenの合計より少ない場合にヘッドを拡張し、再構築後のMACヘッダーが収まるように十分な追加領域を要求することで修正されました。 |
| Possible impacts | ・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 ・当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 ・当該ソフトウェアが完全に停止する可能性があります。 |
| Solution | リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 |
| Publication Date | May 21, 2026, midnight |
| Registration Date | June 29, 2026, 11:18 a.m. |
| Last Update | June 29, 2026, 11:18 a.m. |
| CVSS3.0 : 緊急 | |
| Score | 9.8 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Linux |
| Linux Kernel 5.11 以上 5.15.209 未満 |
| Linux Kernel 5.16 以上 6.1.175 未満 |
| Linux Kernel 5.7 以上 5.10.258 未満 |
| Linux Kernel 6.13 以上 6.18.27 未満 |
| Linux Kernel 6.19 以上 7.0.4 未満 |
| Linux Kernel 6.2 以上 6.6.140 未満 |
| Linux Kernel 6.7 以上 6.12.86 未満 |
| Linux Kernel 7.1 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年06月29日] 掲載 |
June 29, 2026, 11:18 a.m. |
| Summary | In the Linux kernel, the following vulnerability has been resolved: ipv6: rpl: reserve mac_len headroom when recompressed SRH grows ipv6_rpl_srh_rcv() decompresses an RFC 6554 Source Routing Header, swaps pskb_expand_head() was gated on segments_left == 0, so on earlier skb_set_mac_header(skb, -skb->mac_len); will store (data - head) - mac_len into the u16 mac_header field, which A single AF_INET6/SOCK_RAW/IPV6_HDRINCL packet over lo with a two Fix this by expanding the head whenever the remaining room is less than |
|---|---|
| Publication Date | May 21, 2026, 10:16 p.m. |
| Registration Date | May 22, 2026, 4:07 a.m. |
| Last Update | May 23, 2026, 1:33 a.m. |