Tatlong mga kahinaan na natagpuan sa mga stack ng Linux TCP na humahantong sa remote na pagtanggi ng serbisyo

pag-crash ng linux

Recientemente pinakawalan ang balita sa pagkilala ng maraming mga kritikal na kahinaan sa Linux TCP stack at FreeBSD iyon Pinapayagan ang isang umaatake na magsimula nang malayuan ang isang pagkabigo ng kernel o maging sanhi ng labis na pagkonsumo ng mapagkukunan sa pamamagitan ng pagproseso ng espesyal na paggawa ng mga TCP packet (packet of death).

Ang mga problema ay sanhi ng mga pagkakamali sa mga humahawak ng maximum na laki ng data block sa TCP packet (MSS, Maximum na laki ng segment) at ang mekanismo para sa pili na pagkilala sa koneksyon (SACK, Selective TCP pagkilala).

Ano ang isang piling pagkilala?

Selective TCP Recognition (SACK) ito ay isang mekanismo kung saan maaaring ipaalam ng tatanggap ng data ang nagpadala tungkol sa lahat ng mga segment na matagumpay na natanggap.

Ito Pinapayagan ang nagpadala na muling magpadala ng mga nawawalang segment ng stream mula sa kanyang 'kilalang' set. Kapag ang TCP SACK ay hindi pinagana, ang isang mas malaking hanay ng mga muling pagpapadala ay kinakailangan upang muling maipadala ang isang buong pagkakasunud-sunod.

Sa kernel ng Linux, ang mga problema ay naayos sa mga bersyon 4.4.182, 4.9.182, 4.14.127, 4.19.52 at 5.1.11. Ang solusyon para sa FreeBSD ay magagamit bilang isang patch.

Ang mga update sa package ng Kernel ay inilabas para sa Debian, RHEL, SUSE / openSUSE, ALT, Ubuntu, Fedora, at Arch Linux.

CVE-2019-11477 (SACK Panic)

Ang problema nagpapakita ng sarili sa mga kernel ng Linux ng 2.6.29 at pinapayagan kang mag-crash ng kernel (gulat) kapag nagpapadala ng isang serye ng mga SACK packet dahil sa isang integer overflow sa controller.

Para sa isang atake, sapat na upang itakda ang halaga ng MSS sa 48 bytes para sa isang koneksyon sa TCP at pagpapadala ng isang pagkakasunud-sunod ng nakaayos na mga pack ng SACK sa isang tiyak na paraan.

Ang kakanyahan ng problema ay ang istraktura tcp_skb_cb (Socket Buffer) ay idinisenyo upang mag-imbak ng 17 mga fragment ("Tukuyin ang MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17").

Sa proseso ng pagpapadala ng isang packet, inilalagay ito sa linya ng pagpapadala at mga detalye ng tcp_skb_cb tungkol sa packet, tulad ng numero ng pagkakasunud-sunod, mga flag, pati na rin ang mga "tcp_gso_segs" at "tcp_gso_size" na mga patlang, na ginagamit upang ipadala impormasyon sa paghihiwalay sa controller (TSO, Pag-download ng Segment ng Segment) upang maproseso ang mga segment sa panig ng network card.

Ang mga tipak ay nai-save kapag ang pagkawala ng packet o ang pangangailangan para sa pumipili ng packet retransmission ay nangyayari, kung ang SACK ay pinagana at ang TSO ay suportado ng driver.

Bilang isang solusyon para sa proteksyon, maaari mong hindi paganahin ang pagproseso ng SACK o i-block ang mga koneksyon sa isang maliit na MSS (gagana lamang kapag itinakda mo ang sysctl net.ipv4.tcp_mtu_probing sa 0 at maaaring masira ang ilang normal na may mababang MSS).

CVE-2019-11478 (SACK Slowess)

Ang kabiguang ito nagiging sanhi ng isang pagkagambala ng mekanismo ng SACK (kapag gumagamit ng Linux kernel sa 4.15) o labis na pagkonsumo ng mapagkukunan.

Ang problema ay nagpapakita ng kanyang sarili kapag pinoproseso ang espesyal na paggawa ng mga pack na SACK na maaaring magamit upang pag-fragmentin ang pila sa muling pagpapadala (TCP retransmission). Ang mga solusyon para sa proteksyon ay pareho sa nakaraang mga kahinaan

CVE-2019-5599 (SACK Slowess)

Pinapayagan na maging sanhi ng pagkapira-piraso ng mapa ng mga packet na ipinadala kapag pinoproseso ang isang SACK na pagkakasunud-sunod sa loob ng isang koneksyon sa TCP at maging sanhi ng pagpapatakbo ng isang listahan ng listahan ng masinsinang mapagkukunan upang tumakbo.

Ang problema ay nagpapakita ng sarili sa FreeBSD 12 na may mekanismo ng pagkawala ng pack ng pagkawala ng RACK. Bilang isang workaround maaari mong hindi paganahin ang module na RACK (hindi na-load sa pamamagitan ng default, hindi pinagana sa pamamagitan ng pagtukoy ng sysctl net.inet.tcp.function_default = freebsd)

CVE-2019-11479

Pinapayagan ng kapintasan ang isang magsasalakay na gawin ang Linux kernel na hatiin ang mga tugon sa maraming mga segment ng TCP, ang bawat isa ay nagsasama lamang ng 8 bytes ng data, na maaaring humantong sa isang makabuluhang pagtaas sa trapiko, tumaas na pag-load ng CPU, at isang barado na channel ng komunikasyon.

Bilang karagdagan, kumokonsumo ito ng karagdagang mga mapagkukunan (processor na kapangyarihan at network card).

Ang pag-atake na ito ay nangangailangan ng tuloy-tuloy na pagsisikap ng umaatake at ang mga hit ay magtatapos kaagad pagkatapos tumigil ang nagpadala sa pagpapadala ng trapiko.

Habang ang pag-atake na ito ay isinasagawa, tatakbo ang system sa pinababang kapasidad, na magdudulot ng pagtanggi ng serbisyo para sa ilang mga gumagamit.

Ang isang remote na gumagamit ay maaaring magpalitaw ng problemang ito sa pamamagitan ng pagtatakda ng maximum na laki ng segment (MSS) ng isang koneksyon sa TCP sa pinakamababang limitasyon (48 bytes) at pagpapadala ng isang pagkakasunud-sunod ng mga espesyal na ginawa na pack na SACK.

Bilang isang solusyon, inirerekumenda na harangan ang mga koneksyon na may mababang MSS.


Ang nilalaman ng artikulo ay sumusunod sa aming mga prinsipyo ng etika ng editoryal. Upang mag-ulat ng isang pag-click sa error dito.

Maging una sa komento

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.