{"id":520,"date":"2023-01-26T01:44:21","date_gmt":"2023-01-26T07:44:21","guid":{"rendered":"https:\/\/www.fayebell.name\/?p=520"},"modified":"2023-08-10T09:19:46","modified_gmt":"2023-08-10T15:19:46","slug":"artnet-is-not-conforming-to-rfcs","status":"publish","type":"post","link":"https:\/\/www.fayebell.name\/?p=520","title":{"rendered":"ArtNet is not conforming to RFCs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">For all the Network Techs out there. I have a Interesting one, on reddit there was a post about a L2 switch killing the port when ArtNet was sent over it.  Using my Network experience,  I pulled the devices manual, a the Device in question is a GSD-1002M  L2\/L4 switch. I wrote up how I would configure it.  Long story short it was the DOS protection on this switch.  I dug in deeper, made this nice RCA for this issue, <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyways Enjoy,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I used Wireshark and checked some of the default settings in the GSD-1002M <a rel=\"noreferrer noopener\" href=\"https:\/\/www.planet.com.tw\/storage\/products\/48527\/EM-GSD-1002M_v1.1.pdf\" target=\"_blank\">Manual<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Wireshart-ArtNet.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"456\" height=\"121\" src=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Wireshart-ArtNet.jpg?resize=456%2C121&#038;ssl=1\" alt=\"\" class=\"wp-image-521\" srcset=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Wireshart-ArtNet.jpg?w=456&amp;ssl=1 456w, https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Wireshart-ArtNet.jpg?resize=300%2C80&amp;ssl=1 300w\" sizes=\"auto, (max-width: 456px) 100vw, 456px\" \/><\/a><figcaption class=\"wp-element-caption\">Wireshark packet of UDP ArtNet from Lightfactory<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<p class=\"has-text-align-left wp-block-paragraph\">The Highlighted data of the Source and Destination ports. are the same!<br><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"490\" class=\"wp-image-522\" style=\"width: 480px;\" src=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/GSD-1002M-switch-DOS-default-settings.png?resize=480%2C490&#038;ssl=1\" alt=\"\" srcset=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/GSD-1002M-switch-DOS-default-settings.png?w=755&amp;ssl=1 755w, https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/GSD-1002M-switch-DOS-default-settings.png?resize=294%2C300&amp;ssl=1 294w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><br>From the<a href=\"https:\/\/www.planet.com.tw\/storage\/products\/48527\/EM-GSD-1002M_v1.1.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.planet.com.tw\/storage\/products\/48527\/EM-GSD-1002M_v1.1.pdf\" target=\"_blank\" rel=\"noreferrer noopener\"> Switch&#8217;s manual.<\/a> Here is the default for the DOS settings<br><br>The highlighted settings are the items of interest  the UDP and TCP BLAT settings.<br><br>What is a Blat Attack \u2013 These switch result from sending a specially crafted packet to a machine where the source host port is the same as the destination host port. The system attempts to reply to itself, resulting in system lockup.<br><br>This attack could be compared to setting up a mic IN FRONT of your Main PA 1&#8243; Away from the speaker. Then Turning it on full blast.  <br><br>Looking  at <a rel=\"noreferrer noopener\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc6056\" target=\"_blank\">RFC6056<\/a><br><br>Recommendations for Transport-Protocol Port Randomization<br><br> These attacks rely on the attacker&#8217;s ability to<br>   guess or know the five-tuple (Protocol, Source Address, Destination<br>   Address, Source Port, Destination Port) that identifies the transport<br>   protocol instance to be attacked.<br><br>Says this needs to happen on the Source port.  so the source port is random but the destination is set<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Looking at <a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc1948\">RFC<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc1948\" target=\"_blank\">1948<\/a><br><br> Defending Against Sequence Number Attacks  from  May 1996<br>In summary &#8220;source port == destination port&#8221; is a bad practice.<br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>This Bug has been fixed for a long time in the Linux Kernel networking subsystem to avoid this  issue<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/commit\/?id=32c1da70810017a98aa6c431a5494a302b6b9a30\" data-type=\"URL\" data-id=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/commit\/?id=32c1da70810017a98aa6c431a5494a302b6b9a30\" target=\"_blank\">The commit that fixed the port bug in the kernel back in 2007.<br><\/a><br>Following up at that Lets look at the man page for <a rel=\"noreferrer noopener\" href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/ip.7.html\" data-type=\"URL\" data-id=\"https:\/\/man7.org\/linux\/man-pages\/man7\/ip.7.html\" target=\"_blank\">ip(7<\/a>)<br><br>Looking at how to Get a Source socket, to open two way coms with a remote server, (or multicast group)<br><br> When connect(2) is called on an unbound socket, **the socket is automatically bound to a <strong>random free port or to a usable shared port<\/strong> with the local address set to INADDR_ANY.<br><br><br><br>So in closing,<br><br>source port == dest port. Is triggering the Blat DOS detection. <br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now lets look at the Protocol spec., <br>Looking at ArtNet&#8217;s spec  <a rel=\"noreferrer noopener\" href=\"https:\/\/www.artisticlicence.com\/WebSiteMaster\/User%20Guides\/art-net.pdf\" data-type=\"URL\" data-id=\"https:\/\/www.artisticlicence.com\/WebSiteMaster\/User%20Guides\/art-net.pdf\" target=\"_blank\">Here<\/a><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Art-net-SRC-and-Dest.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"569\" height=\"180\" src=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Art-net-SRC-and-Dest.jpg?resize=569%2C180&#038;ssl=1\" alt=\"\" class=\"wp-image-523\" srcset=\"https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Art-net-SRC-and-Dest.jpg?w=569&amp;ssl=1 569w, https:\/\/i0.wp.com\/www.fayebell.name\/wp-content\/uploads\/2023\/01\/Art-net-SRC-and-Dest.jpg?resize=300%2C95&amp;ssl=1 300w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/a><figcaption class=\"wp-element-caption\">From page 10 the Hex 0x1936 is 6454 in base 10<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br>It states that the programmer must use, source port of 6454  to contact the  destination&nbsp; listing port 6454 of the server. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br><br>That is Not conforming to Multiple RFCs  and is  using <strong>a bad<\/strong> practice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Work around Disable BLAT protection.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Root Cause ArtNet protocol says to use the same source port(client) as the destination port (server). is causing the issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>For all the Network Techs out there. I have a Interesting one, on reddit there was a post about a L2 switch killing the port when ArtNet was sent over it. Using my Network experience, I pulled the devices manual, &hellip; <a href=\"https:\/\/www.fayebell.name\/?p=520\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[10,4,3,1],"tags":[],"class_list":["post-520","post","type-post","status-publish","format-standard","hentry","category-lighting","category-networking-computers","category-programing","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pa1ntP-8o","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/posts\/520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=520"}],"version-history":[{"count":10,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/posts\/520\/revisions"}],"predecessor-version":[{"id":539,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=\/wp\/v2\/posts\/520\/revisions\/539"}],"wp:attachment":[{"href":"https:\/\/www.fayebell.name\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fayebell.name\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}