Ô­´´ | Ripple20£º£ºTreck TCP/IPºÍ̸ջ·ì϶·ÖÎöÓëÑéÖ¤

°ä²¼¹¦·ò 2020-06-30

Ò»¡¢¡¢Ã½½é


¹úÍⰲȫ×êÑÐÈËÔ±ÔÚÓÉTreck¿ª·¢µÄTCP/IPºÍ̸ջÖз¢ÏÖÁ˶à¸ö·ì϶£¬ÕâһϵÁзì϶ͳ³ÆÎªRipple20¡£¡£¡£ÕâЩ·ì϶¿í·º´æÔÚÓÚǶÈëʽºÍÎïÁªÍøÉ豸ÖУ¬Ó°ÏìÁ˶à¸öÐÐÒµÁìÓò£¨Ô̺¬Ò½ÁÆ¡¢¡¢ÔËÊä¡¢¡¢ÄÜÔ´¡¢¡¢µçÐÅ¡¢¡¢¹¤Òµ½ÚÖÆ¡¢¡¢ÁãÊÛºÍóÒ׵ȣ©£¬Éæ¼°ÁËÖڶ๩¸øÉÌ£¨Ô̺¬HP¡¢¡¢Schneider Electric¡¢¡¢Intel¡¢¡¢Rockwell Automation¡¢¡¢Caterpillar¡¢¡¢BaxterµÈ£©¡£¡£¡£


ÕâЩ·ì϶ԴÓÚRipple20µÄ¶à¸öºÍ̸£¨Ô̺¬IPv4¡¢¡¢ICMPv4¡¢¡¢IPv6¡¢¡¢IPv6OverIPv4¡¢¡¢TCP¡¢¡¢UDP¡¢¡¢ARP¡¢¡¢DHCP¡¢¡¢DNS»òÒÔÌ«ÍøÁ´Â·²ã£©ÔÚ´¦ÖÃÍøÂ籨ÎÄ·¢ËÍʱ´æÔÚȱµã£¬ÆäÖÐÔ̺¬ËĸöÑÏÖØ·ì϶£¬ËüÃǵÄCVE±àºÅ±ðÀëΪCVE-2020-11896¡¢¡¢CVE-2020-11898¡¢¡¢CVE-2020-11910¡¢¡¢CVE-2020-11911¡£¡£¡£CVE-2020-11896£¨CVSSÆÀ·Ö10£©¿Éµ¼ÖÂÔ¶³ÌÖ´ÐдúÂ룬CVE-2020-11897£¨CVSSÆÀ·Ö10£©¿Éµ¼ÖÂÔ½½çдÈ룬CVE-2020-11901£¨CVSSÆÀ·Ö9£©¿Éµ¼ÖÂÔ¶³ÌÖ´ÐдúÂ룬CVE-2020-11898£¨CVSSÆÀ·Ö9.1£©¿Éµ¼ÖÂй¶Ãô¸ÐÐÅÏ¢¡£¡£¡£ÆäËü15¸öRipple20·ì϶µÄÑÏÖØË®Æ½¸÷±ð£¬CVSSÆÀ·Ö±ðÀë´Ó3.1µ½8.2¡£¡£¡£


ÓÉÓÚÎïÁªÍøÉ豸¹©¸øÁ´µÄ¸öÐÔ£¬·ì϶ӰÏìµÄÉ豸Öڶ࣬ӰÏìÁìÓò¹ãÇÒ³ÖÐø¹¦·ò³¤£¬·ì϶ÐÞ¸´µÄÖ´ÐнÏÄÑÌâ¡£¡£¡£Òò¶ø£¬OG¶«·½ÌüADLabµÚÒ»¹¦·ò¶ÔÓйطì϶½øÐÐÁË·ÖÎö²¢Ìá³öÁË·À±¸½¨Òé¡£¡£¡£


¶þ¡¢¡¢ºÍ̸ջ¼ì²â


ÓÉÓÚѡȡTreckºÍ̸ջµÄ³§¼Ò½Ï¶à£¬ÓÐЩ³§¼ÒÊÇÓ²¼þIPºËµÄ·½Ê½ÒýÓÃÁËTreckºÍ̸ջ¡£¡£¡£µ¥´¿Í¨¹ýÉè±¸Ö¸ÎÆÀ´¼ø±ð·ì϶ÊDz»¼°µÄ£¬ÈôºÎ¼ì²âÖ¸±êÉ豸ÊÇ·ñΪTreckºÍ̸ջ³ÉΪ×ʲúÅŲéµÄ¹Ø¼ü£¬Îª´ËOG¶«·½ÌüADLab°²È«×êÑÐÔ±¶ÔTreckºÍ̸ջ½øÐÐÁËÉî¿Ì·ÖÎö£¬²¢¹«¿ªÁËTreckºÍÌ¸Õ»Ö¸ÎÆ¼ì²â²½Öè·¢ÏÖ·ì϶¡£¡£¡£


TreckºÍ̸ջ×Ô½ç˵ÁËÀàÐÍΪ165(0xa5)µÄICMP°ü£¬²¢Ò»µ©ÊÕµ½165µÄICMP°ü»á»Ø¸´ÀàÐÍΪ166µÄICMP°üÏìÓ¦¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Ê×ÏÈ£¬ÏòÖ¸±ê·¢ËÍ ICMPÒªÇó°ü£¬ÆäÖÐtype=0xa5£¬code=0¡£¡£¡£ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


¶øºó£¬½Ó¹ÜÖ¸±ê·µ»ØµÄicmpÏìÓ¦°üÊý¾Ý£¬ÆäÖÐtype =0xa6,code =0£¬ICMP±¨ÎĵÚ9×Ö½ÚºóµÄÁù¸ö×Ö½ÚΪ0x01,0x51,0x35,0x28,0x57,0x32(´ó¶Ë)»ò0x51,0x01,0x28,0x35,0x32,0x57(С¶Ë£©¡£¡£¡£


Âú×ãÉÏÊöµÄǰÌᣬÔòÅúÖõÖ¸±êÉ豸Ϊtreck ºÍ̸ջ¡£¡£¡£ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Èý¡¢¡¢·À±¸½¨Òé


1¡¢¡¢ÀûÓøüÐÂ


ʵʱ¸üе½Treck TCP/IPºÍ̸ջÈí¼þµÄ×îв»±ä°æ±¾£¨6.0.1.67»ò¸ü¸ß°æ±¾£©¡£¡£¡£


2. ×èÖ¹Òì³£IPÁ÷Á¿


Äܹ»Í¨¹ýÉî¶ÈÊý¾Ý°ü²é³­À´×èÖ¹ÍøÂç¹¥»÷£¬ÒÔÏÂÊÇÄܹ»Êʵ±ÀûÓÃÓÚÍøÂç»·¾³ÖеĿÉÄÜ»º½â´ëÊ©£¬¹ýÂËÑ¡ÏîÔ̺¬£º£º


¡ñ ÈôÊÇÍøÂç»·¾³²»Ö§³Ö£¬Ôò¹æ·¶»¯»ò»Ø¾øIP·ÖƬµÄÊý¾Ý°ü£¨IP·ÖƬ£©

¡ñ ÈôÊDz»±ØÒª£¬Çë½ûÓûò×èÖ¹IPËíµÀ£¨IPv6-in-IPv4»òIP-in-IPËíµÀ£©

¡ñ ×èÖ¹IPԴ·ÓɺÍËùÓв»ÔÞ³ÉʹÓÃIPv6µÄÖ°ÄÜ£¬ÀýÈç·ÓɱêÍ·

¡ñ Ç¿ÖÆÖ´ÐÐTCP²é³­²¢»Ø¾øÌåʽÃýÎóµÄTCPÊý¾Ý°ü

¡ñ ×èֹδʹÓõÄICMP½ÚÖÆÐÂÎÅ£¬ÀýÈçMTU¸üк͵ØÖ·ÑÚÂë¸üÐÂ

¡ñ ͨ¹ý°²È«µÄµÝ¹é·þÎñÆ÷»òÀûÓòã·À»ðǽ¹æ·¶DNS

¡ñ È·±£ÍøÂç»·¾³ÖÐʹÓõÄÊÇ¿¿µÃסµÄOSIµÚ2²ãÉ豸£¨ÒÔÌ«Íø£©

¡ñ ͨ¹ýDHCPÕìÌýµÈÖ°ÄÜÌṩDHCP / DHCPv6°²È«ÐÔ

¡ñ ÈôÊÇδÔÚ»¥»»»ù´¡¼Ü¹¹ÖÐʹÓã¬Ôò½ûÓûò×èÖ¹IPv6¶à²¥¡£¡£¡£


ËÄ¡¢¡¢ÓйظÅÄî½éÉÜ


1¡¢¡¢IP·ÖƬ


IP·ÖƬʹµÃÔÚÍøÂçÖз¢ËÍ´óµÄIP°ü³ÉΪ¿ÉÄÜ£¬¼´±ãÆä¾Þϸ´óÓÚÍøÂçÌØ¶¨Á´Â·ÖÐÔÊÐíµÄ×î´óÖµ¡£¡£¡£IP·ÖƬ¼¼ÊõÊÇÒ»ÖÖ½«Êý¾Ý°ü·Ö³É¼¸¸ö½ÏСµÄ²¿ÃÅÒÔÖ§³Öͨ¹ýÕâЩÁ´Â·ºÍÍøÂç´«ÊäµÄ¼¼Êõ¡£¡£¡£¸ÃºÍ̸֧³ÖÔÚ·¢ËͶ˽øÐÐ·ÖÆ¬£¬¶øºóÔÚ½Ó¹Ü¶Ë¶Ô·ÖÆ¬ÖØÐÂ×éºÏ¡£¡£¡£ÕâÔÊÐí·ÖÆçµÄ°üÔÚÍøÂçÖÐÁãÉ¢µØ´«Ê䣬²¢ÔÚÁíÒ»²àÕýÈ·µØÖØÐÂ×é×°¡£¡£¡£


·ÖÆçµÄ°üʹÓÃIPÍ·Öеıêʶ×ֶΣ¨Identification£©½øÐзÖ×é¡£¡£¡£´Ë±êʶ×Ö¶ÎÃèÊö·ÖƬÊôÓÚÄĸö°ü¡£¡£¡£Í³Ò»¸ö°üµÄ¶à¸ö·ÖƬµÄIdentificationÊÇÒ»ÑùµÄ¡£¡£¡£IPv4ͨ¹ýFlags¼°Fragment Offset×Ö¶Î¶Ô·ÖÆ¬½øÐÐÖÎÀí£¬FlagsÓÉR¡¢¡¢DF¡¢¡¢MFÈý²¿ÃÅ×é³É£º£º


¡ñ R£¨Reserve bit£©±£ÁôδÓÃ

¡ñ DF (Don't Fragment) DF =1£º£º²»ÈÝ·ÖÆ¬ , DF =0£º£ºÔÊÐí·ÖƬ

¡ñ MF (More Fragment) MF =1£º£º·Ç×îºóһƬ, MF =0£º£º×îºóһƬ(»òδ·ÖƬ)


Fragment Offset(13λ)£º£ºÒ»¸öIP·Ö×é·ÖƬ·â×°Ô­IP·Ö×éÊý¾ÝµÄÏà¶ÔÆ«ÒÆÁ¿, Æ¬Æ«ÒÆ×Ö¶ÎÒÔ8×Ö½ÚΪµ¥Ôª¡£¡£¡£IP°ü½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


2¡¢¡¢IPËíµÀ¼¼Êõ


IPËíµÀÔÊÐíÁ½¸ö¶ÀÁ¢ÍøÂçÖ®¼äµÄÐé¹¹µãµ½µãÁ´Â·¡£¡£¡£ËüÊÇͨ¹ý½«°ü£¨¿ÉËùÒÔIP°ü£©·â×°ÔÚÁíÒ»¸ö°üÖÐÀ´ÊµÏֵģ¬Ê¹µÃÄÚ²¿°üÓµÓÐÓëÍⲿ°ü·ÖÆçµÄÔ´µØÖ·ºÍÖ¸±êµØÖ·¡£¡£¡£Íⲿ°üµÄÔ´µØÖ·ºÍÖ¸±êµØÖ·ÊÇËíµÀ¶Ëµã£¬ÄÚ²¿°üÖеĵØÖ·ÓÃÓÚËíµÀÁ½¶ËµÄÍøÂç·ÓÉ¡£¡£¡£ËíµÀÈë¿ÚµãÊǽӹÜӦͨ¹ýËíµÀת·¢µÄIPÊý¾Ý°üµÄ½Úµã¡£¡£¡£Ëü½«´ËÊý¾Ý°ü·â×°ÔÚÍⲿIPÊý¾Ý°üÖС£¡£¡£µ±Êý¾Ý°ü´ïµ½ËíµÀ³ö¿Úµãʱ£¬Ëü±»½â·â×°²¢×ª·¢£¬¾ÍÈçͬËüÊÇÔÚÖ¸±êÍøÂçÖз¢Ë͵ÄͨÀýÊý¾Ý°üÒ»Ñù¡£¡£¡£IP-in-IP°üÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


IPËíµÀ¼¼ÊõÖØÒªÀûÓÃÔÚÐ鹹רÓÃÍø£¨VPN£©¼¼ÊõÖС£¡£¡£Ä¿Ç°Óм¸ÖÖËíµÀºÍ̸£¬ÆäÖÐ×îµ¥Ò»ºÍ×î¹ÅÀϵÄÊÇIP-in-IP£¨IPºÍ̸±àºÅ4£©¡£¡£¡£IP-in-IPÊÇÒ»ÖÖIPËíµÀºÍ̸£¬ÆäÖÐÒ»¸öIP°üͨ¹ýÔö³¤Ò»¸öÍⲿIP±¨Í·£¨ÆäÔ´µØÖ·ºÍÖ¸±êµØÖ·±ðÀëµÈÓÚËíµÀµÄÈë¿ÚµãºÍ³ö¿Úµã£©·â×°ÔÚÁíÒ»¸öIP°üÖС£¡£¡£ÄÚ²¿Êý¾Ý°üδ±»Åú¸Ä£¬ÍⲿIPÍ·´ÓÄÚ²¿IPÍ·¸´ÖÆÒ»Ð©×ֶΡ£¡£¡£Íⲿ±¨Í·µÄIPºÍ̸ºÅΪ4¡£¡£¡£IP-in-IP±¨ÎÄʾÀýÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Îå¡¢¡¢TreckºÍ̸ջ


1¡¢¡¢ºÍ̸ջ¸ÅÊö


TreckºÍ̸ջͨ¹ýtsPacket½á¹¹À´ÃèÊö°ü½á¹¹£¬Í¨¹ýtsUserPacket½á¹¹Ö§³ÖÊý¾Ý°ü·ÖƬ¡£¡£¡£ÕâÁ½¸ö½á¹¹ÌåÔÚtreck/include/trsocket.hÎļþÖнç˵¡£¡£¡£Treck TCP/IPºÍ̸ջÖеİüÊý¾ÝÓÉtsPacketµÄ½á¹¹°µÊ¾¡£¡£¡£Ã¿¸ö°ü¶¼ÓëÒ»¸öÊý¾Ý»º³åÇøÓйØÁª£¬¸ÃÊý¾Ý»º³åÇø±£Áô´Ó½Ó¿ÚÇý¶¯·¨Ê½´ïµ½µÄԭʼÊý¾Ý¡£¡£¡£tsPacket½á¹¹»¹±£ÁôÁíÒ»¸ö³ÆÎªttUserPacketµÄÖØÒª½á¹¹£¬ÒÔ¼°Ö¸ÏòtsSharedData½á¹¹µÄÖ¸Õ룬¸Ã½á¹¹Ô̺¬ÍøÂçºÍ̸ջ´¦ÖÃÊý¾Ý°üʱËùÐèµÄÐÅÏ¢£¨Ö¸ÏòÌ×½Ó×ֽṹ¡¢¡¢src/dstµØÖ·»ò¶Ë¿ÚµÈµÄÖ¸Õ룩¡£¡£¡£½ç˵ÈçÏ£º£º


struct tsPacket {

ttUserPacket pktUserStruct;

ttSharedDataPtr pktSharedDataPtr;

struct tsPacket * pktChainNextPtr;

struct tsDeviceEntry * pktDeviceEntryPtr;

union anon_union_for_pktPtrUnion pktPtrUnion;

tt32Bit pktTcpXmitTime;

tt16Bit pktUserFlags;

tt16Bit pktFlags;

tt16Bit pktFlags2;

tt16Bit pktMhomeIndex;

tt8Bit pktTunnelCount;

tt8Bit pktIpHdrLen;

tt8Bit pktNetworkLayer;

tt8Bit pktFiller[1];

};


ÕâÊÇÔ̺¬µÄttUserPacket½á¹¹£¨tsUserPacketµÄtypedef£©£¬½ç˵ÈçÏ£º£º


struct tsUserPacket {

void * pktuLinkNextPtr; // Next tsUserPacket for fragmented data

ttUser8BitPtr pktuLinkDataPtr;

ttPktLen pktuLinkDataLength;

ttPktLen pktuChainDataLength;

int pktuLinkExtraCount;

};


pktuLinkNextPtr £º£ºÓÃÓÚ¸ú×ÙÊý¾Ý°üÖÐµÄ·ÖÆ¬¡£¡£¡£´Ë×Ö¶ÎÖ¸Ïò°µÊ¾ÏÂÒ»¸ö·ÖƬµÄÁíÒ»¸ötsPacket½á¹¹£¬¸ÃtsPacket»¹±£Áô¶ÔÏÂÒ»¸ö·ÖƬµÄÒýÓã¬ÈôÊÇ´ËÁ´½ÓÊÇ×îºóÒ»¸ö·ÖƬ£¬»òÕßÊý¾Ýδ±»·ÖƬ£¬Ôò´Ë×ֶν«ÎªNULL¡£¡£¡£


pktuLinkDataPtr£º£ºÖ¸Ïòµ±Ç°·ÖƬµÄÊý¾Ý»º³åÇø¡£¡£¡£µ±TreckºÍ̸ջÔÚ·ÖÆç½×¶Î´¦ÖÃÊý¾Ý°üʱ£¬Êý¾Ý»º³åÇøÖмòÖ±ÇеØÎ»»á²úÉú±ä¶¯£¬ÕâÈ¡¾öÓÚµ±Ç°ÕýÔÚ´¦ÖõÄÊý¾Ý°üµØµãºÍ̸²ã¡£¡£¡£ÀýÈ磬µ±TreckºÍ̸ջ´¦ÖÃÒÔÌ«Íø²ã£¨ÔÚtfEtherRecv()º¯ÊýÖУ©Ê±£¬´Ë×Ö¶ÎÖ¸ÏòÒÔÌ«Íø±¨Í·¡£¡£¡£


pktuLinkDataLength£º£ºpktuLinkDataPtrÖ¸ÏòµÄÊý¾ÝµÄ¾Þϸ£¬¼´µ¥¸ö·ÖƬµÄ¾Þϸ¡£¡£¡£

pktuChainDataLength£º£º°µÊ¾Ô̺¬ËùÓÐ·ÖÆ¬µÄÊý¾Ý°ü³¤¶È£¬¼´Êý¾Ý°üµÄ×ܾÞϸ¡£¡£¡£ËüֻΪµÚÒ»¸ö·ÖƬÉèÖᣡ£¡£ÈôÊÇÊý¾ÝûÓÐ·ÖÆ¬£¬ÔòµÈÓÚpktuLinkDataLength¡£¡£¡£


2¡¢¡¢ºÍ̸ջ´¦Öùý³Ì


ºÍ̸ջÖеÄÒ»¸ö³£¼ûģʽÊÇÔÚºÍ̸ջÖеIJãÖ®¼äÒÆ¶¯Ê±µ÷ÕûpktuLinkDataPtrÖ¸Õë¡£¡£¡£ÀýÈ磬ÈôÊÇOG¶«·½Ìü°üÊÇÒ»¸öICMP»ØÏÔÒªÇó°ü£¨ping£©£¬ËüµÄºÍ̸ÓÉÈý²ã×é³É£º£ºEthernet¡¢¡¢IPv4¡¢¡¢ICMP¡£¡£¡£ÔÚÕâÖÖÇé¿öÏ£¬µ±´¦ÖÃÒÔÌ«Íø²ã£¨ÔÚtfEtherRecv()º¯ÊýÖУ©Ê±£¬pktuLinkDataPtrÖ¸ÏòÒÔÌ«Íø±¨Í·µÄÆðÍ·£¬¶øºóÔÚÒÆ¶¯µ½ÏÂÒ»²ã֮ǰ£¬Ê¹ÓÃÒÔÏ´úÂë¶ÔÆä½øÐе÷Õû£¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÔÚ±¾ÀýÖУ¬0xe£¨Ê®½øÖÆÎª14£©ÊÇÒÔÌ«Íø±¨Í·£¨6£¨dst MAC£©+6£¨src MAC£©+2£¨etherType£©£©µÄ¾Þϸ¡£¡£¡£µ±tfEtherRecv()º¯ÊýʵÏÖ°ü´¦ÖÃʱ£¬Ëü½«°üת·¢µ½ÏÂÒ»²ã´¦Öᣡ£¡£Ö§³ÖµÄÒÔÌ«ÍøÀàÐÍÓÐARP¡¢¡¢IPv4ºÍIPv6¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÔÚʾÀýÖУ¬µ±IPv4²ã½Ó¹Üµ½Êý¾Ý°ü£¨ÔÚº¯ÊýtfIpIncomingPacket()º¯ÊýÖУ©Ê±£¬Ö¸ÕëpktuLinkDataPtrÒѾ­Ö¸ÏòIP±¨Í·¡£¡£¡£´«ÈëÊý¾ÝÓÉÓµÓÐÒ»Ñù¶¨ÃûÔ¼¶¨tf*IncomingPacketµÄº¯Êý´¦Öã¬ÆäÖÐ*ÊǺÍ̸Ãû¡£¡£¡£¶ÔÓÚICMP°üÀ´Ëµ£¬ËüÓÉÈý²ãºÍ̸×é³É£¨Ethernet/IPv4/ICMP£©£¬Êý¾Ý°ü½«Óɺ¯ÊýtfEtherRecv¡¢¡¢tfIpIncomingPacketºÍtfIcmpIncomingPacketº¯Êý±ðÀë´¦Öᣡ£¡£


3¡¢¡¢·ÖÆ¬ÖØ×é


TreckºÍ̸ջÔÚtfIpReassemblePacket()º¯ÊýÖд¦ÖÃ·ÖÆ¬µÄÖØ×飬¸Ãº¯ÊýÓÉtfIpIncomingPacket()ŲÓᣡ£¡£Ã¿µ±½Ó¹Üµ½·¢ÍùÉ豸µÄIP·ÖƬʱ£¬¾Í»áŲÓô˺¯Êý¡£¡£¡£ÈôÊǶÌȱ·ÖƬ£¬º¯Êý½«·µ»ØNULL¡£¡£¡£²»È»£¬ÈôÊÇËùÓÐ·ÖÆ¬¶¼´ïµ½²¢ÇÒûÓи¡·º£¬ÔòÍøÂçºÍ̸ջ½«Ê¹ÓÃpktuLinkNextPtr×ֶν«·ÖƬÁ´½ÓÔÚһ·£¬¶øºó½«Êý¾Ý°ü´«µÝ¸øÏÂÒ»²ã½øÇ°½øÒ»²½´¦Öᣡ£¡£Ôڴ˸ߵÍÎÄÖУ¬¡°ÖØ×顱һ´Ê²¢²»ÁÏζ׎«Êý¾Ý°ü¸´ÖƵ½Â½ÐøµÄ´æ´¢¿é£¬¶øÖ»Êǵ¥Ò»µØ½«ËüÃÇÁ´½Óµ½Ò»¸öÁ´±íÖС£¡£¡£·ÖƬÊý¾ÝÁ´±í½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)

4¡¢¡¢tfIpIncomingPacketº¯Êý


tfIpIncomingPacket()º¯ÊýÊÇ´¦ÖÃIP°üµÄÖØÒªº¯Êý£¬¸Ãº¯ÊýÖØÒªÁ÷³ÌÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


tfIpIncomingPacket()Ê×ÏÈÅжÏÊý¾Ý°üºÏ·¨ÐÔ¡£¡£¡£tfIpIncomingPacket()º¯Êý³ýÁËÑéÖ¤IPͷУÑéºÍ£¬Ëü»¹½øÐÐÒÔÏÂÑéÖ¤£¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


¶øºóÈôÊÇËùÓкϷ¨ÐԲ鳭¶¼Í¨¹ý£¬tfIpIncomingPacket()º¯Êý½«²é³­IP±¨Í·ÖÐTotalLength ÊÇ·ñÑϸñСÓÚÊý¾Ý°üµÄpktuChainDataLength£¬ÕⰵʾÏÖʵ½Ó¹ÜµÄÊý¾Ý±ÈIP±¨Í·ÖÐÉêÃ÷µÄÊý¾Ý¶à¡£¡£¡£ÈôÊÇÊÇÕæµÄ£¬Ôò½øÐÐÐÞ¼ô²Ù×÷£¬ÒªÉ¾³ý¶îÍâµÄÊý¾Ý£¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÔÙÕßÈôÊÇIPÊý¾Ý°üµÄMFΪ1»òÕßFragment Offset´óÓÚ0£¬ÔòtfIpIncomingPacket()º¯Êý¾ÍҪŲÓÃtfIpReassemblePacket()º¯Êý½øÐÐ·ÖÆ¬ÖØ×é¡£¡£¡£ÈôÊÇIP·ÖƬÊý¾Ý½Ó¹Ü²»ÆëÈ«£¬ÔòtfIpReassemblePacket()º¯Êý·µ»ØNULL¡£¡£¡£ÈôÊÇËùÓÐIP·ÖƬ¶¼´ïµ½²¢ÇÒûÓÐÃýÎó£¬ÔòTreckºÍ̸ջʹÓÃpktuLinkNextPtr×ֶν«ÕâЩ·ÖƬÁ´½ÓÔÚһ·£¬³ÉÁ¢Á´±í£¬²¢½«°ü´«µÝµ½ÏÂÒ»²ã½øÇ°½øÒ»²½´¦Öã¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


×îºóÈôÊÇÒѾ­ÊÕµ½ÆëÈ«µÄIPÊý¾Ý°ü£¬ÔòtfIpIncomingPacket()º¯Êýƾ¾ÝIPÊý¾Ý°üÖеĺÍ̸×ֶεĺÍ̸ºÅ£¬Å²ÓÃÏàÓ¦µÄºÍ̸°ü´¦Öú¯Êý½øÐд¦Öᣡ£¡£±ÉÈËÁдúÂëÖУ¬µ±ºÍ̸ºÅΪUDPʱ£¬ÔòŲÓÃtfUdpIncomingPacket()º¯Êý£¬µ±Êý¾Ý°üºÍ̸ΪIP-in-IPºÍ̸£¨ºÍ̸ºÅ4£©Ê±£¬»áµÝ¹éŲÓÃtfIpIncomingPacket()º¯Êý£¬´úÂëʵÏÖÈçÏÂËùʾ£º£º



OG¶«·½Ìü¡¤(Öйú´ó½)


Áù¡¢¡¢·ì϶µÀÀí·ÖÎö


1¡¢¡¢CVE-2020-11896


ǰÎÄÒѾ­½éÉÜtfIpIncomingPacket()º¯ÊýµÄʵÏÖ¹ý³Ì£¬µÚ¶þ²½µÄÊý¾Ý²Ã¼ôÊÇ·ì϶µÄÔ­Òò£¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


pktuLinkDataLength±£Áôµ±Ç°·ÖƬµÄ¾Þϸ£¬pktuChainDataLength±£ÁôÕû¸öIPÊý¾Ý°üµÄ¾Þϸ¡£¡£¡£ÈôÊÇÖ´ÐÐÉÏÊö²Ù×÷£¬½«µ¼ÖÂÒ»¸ö²»Ò»ÖÂÐÔµÄ״̬£¬ÆäÖÐpkt->pktuChainDataLength==pkt->pktuLinkDataLength£¬µ«¿ÉÄÜÓÐpkt->pktuLinkNextPtrÖ¸ÏòÆäËû·ÖƬ¡£¡£¡£¸ü½øÒ»²½µÄÆäÖÐÁ´±íÉÏ·ÖÆ¬µÄ×ÜÊý¾Ý¾Þϸ¿ÉÄÜ´óÓÚ´æ´¢ÔÚpktuChainDataLength±äÁ¿ÖеľÞϸ¡£¡£¡£ÕâÖÖ²Ù×÷µ¼ÖµIJ»Ò»ÖÂÐÔ½«»áµ¼ÖºóÐø±¨ÎÄ´¦ÖòúÉúÒì³£¡£¡£¡£


ͨ¹ýµ¥Ò»µØÉèÖÃÃýÎóµÄIP°ü·ÖƬÊÇÎÞ·¨´¥·¢·ì϶µÄ£¬ÓÉÓڲüô¹ýºóµÄ·ÖƬÊý¾ÝÔÚºóÐøµÄtfIpReassemblePacket()º¯Êý²Ù×÷ÖÐ»áÆ¾¾ÝpktuChainDataLengthµÄ¾Þϸ£¬ÖØÐ³ÉÁ¢·ÖƬÁ´±í£¬²»»áÔì³É²»Ò»ÖµÄ״̬¡£¡£¡£ÃÎÏëµÄÁ÷³ÌÊÇÏÈʵÏÖ·ÖÆ¬Á´±íµÄ³ÉÁ¢£¬ÔÙ½øÐÐÁ´±íÊý¾Ý×ܾÞϸµÄ²Ã¼ôÁ÷³Ì£¬ÕâÑù¾Í»á½øÈë²»Ò»ÖµÄ״̬¡£¡£¡£


ΪÁËÔÚIP²ã´¦ÖÃ·ÖÆ¬Êý¾Ý°ü²¢´¥·¢Ö´ÐÐÓÐÎÊÌâµÄÁ÷³Ì´úÂ룬Äܹ»Ê¹ÓÃIP-in-IPÊý¾Ý°ü¡£¡£¡£¶ÔÓÚ·ÖÆ¬µÄIP-in-IPÊý¾Ý°ü£¬tfIpIncomingPacket()º¯Êý½«ÖÁÉٵݹéŲÓÃÁ½´Î£¬Ò»´ÎÓÃÓÚIPËíµÀ°üµÄÄÚ²ãIPÊý¾Ý°ü£¬ÂÅ´ÎÓÃÓÚÍâ²ãIPÊý¾Ý°ü£¨Ã¿´¦ÖÃÒ»¸öÍâ²ãIP°ü·ÖƬËã×÷Ò»´Î£©¡£¡£¡£


tfIpIncomingPacket()º¯ÊýÔÚ´¦ÖÃIPËíµÀÊý¾Ý°üµÄʱ³½½«ÄÚ²¿IPÊý¾Ý°ü×÷Ϊ·Ç·ÖƬÊý¾Ý°ü½øÐд¦Öᣡ£¡£ÄÚ²¿Êý¾Ý°ü´Ë¿ÌÓɶà¸ö·ÖƬ×é³É£¬µ«ÔÚIP±¨Í·ÖÐÏóÕ÷Ϊ·Ç·ÖƬ£¨MF=0£©£¬ËùÒÔËü²»»áÔÙ½øÈëtfIpReassemblePacket()º¯Êý½øÐÐÖØ×é¡£¡£¡£Ëü´Ë¿ÌÓÉÒ»¸öÁ´±íÖеöµ¥¶ÀµÄtsPacketÁ´½Ó×é³É£¬Ã¿¸öÁ´½Ó¶¼ÓÐÒ»¸öµ¥¶ÀµÄpktuLinkDataLengthÖµ¡£¡£¡£¿£Ë¼¿¼ÏÂÃæµÄÀý×Ó£¬Ëü½«ÓÐÖúÓÚÀí½â·ì϶µÄ³ÉÒò£º£º


¡ñ Inner IP packet: IPv4{len=32, proto=17}/UDP{checksum=0, len=12}£¬ÆäÖÐÔ̺¬1000×Ö½ÚµÄÊý¾Ý¡¯A¡¯¡£¡£¡£

¡ñ Outer IP packet (fragment 1): IPv4{frag offset=0, MF=1, proto=4, id=0xabcd} ,ÆäÖÐÔ̺¬40×Ö½ÚµÄIPÊý¾Ý¡£¡£¡£

¡ñ Outer IP packet (fragment 2): IPv4{frag offset=40, MF=0, proto=4, id=0xabcd} £¬ÆäÖÐÊý¾Ý¸ººÉΪ988×Ö½Ú¡£¡£¡£


ΪÁËÈÆ¹ýUDPУÑ飬½«Ð£ÑéºÍ×Ö¶ÎchecksumÉèÖÃΪ0¡£¡£¡£ÊµÀýÖÐµÄ·ÖÆ¬½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


µ±TreckºÍ̸ջ´¦ÖÃÍⲿÃÅÆ¬Ê±£¬ËüʹÓÃtsUserPacket½á¹¹ÖеÄpktuLinkNextPtr×Ö¶ÎÀ´Á´½ÓËüÃÇ¡£¡£¡£ÈçǰËùÊö£¬µ±tfIpIncomingPacket()º¯Êý´¦ÖÃÄÚ²¿IPÊý¾Ý°ü£¨ºÍ̸Ϊ4£¬IP-in-IP£©Ê±£¬ËüÒѾ­ÊµÏÖÁË·ÖÆ¬Êý¾ÝµÄÖØ×飨ÄÚ²¿IPÊý¾Ý°üÓÉÁ´½ÓÔÚһ·µÄÁ½¸ötsPacket½á¹¹°µÊ¾£©¡£¡£¡£·ÖƬÊý¾ÝÖØ×éºóµÄÁ´±í½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÓÉÓÚtfIpIncomingPacket()º¯ÊýÔÚ½øÐÐÓÐЧÐÔÅжÏʱ£¬Ö»Ë¼¿¼tsUserPacketÖеÄpktuChainDataLength×ֶΣ¨¶ø²»ÊÇpktuLinkDataLength£©£¬ËùÒÔÔÚ´¦ÖÃÄÚ²¿IP°üʱ½«½øÈëÃýÎóµÄÁ´±í³¤¶ÈµÄ²Ã¼ôÁ÷³Ì£¬´Ó¶øµ¼ÖÂÁËÎÊÌâ¡£¡£¡£


ÄÚ²¿IP°üͨ¹ýÁËIPÍ·ÆëÈ«ÐԲ鳭£¬ÔÚ¸ÃÀý×ÓÖУ¬ÄÚ²¿IP°üµÄ×ܳ¤¶È(32£©Ð¡ÓÚÁ´±íÊý¾Ý³¤¶È£¨1000+8+20=1028£©£¬Òò¶øTreckºÍ̸ջ½«³¢ÊÔÃýÎóµØÐÞ¼ôÊý¾Ý°ü£¬²½ÖèÊǽ«×Ö¶ÎpktuLinkDataLengthºÍpktuChainDataLengthÉèÖÃΪһÑùµÄÖµipTotalLength£¨ÔÚOG¶«·½ÌüʾÀýÖÐΪ32£©¡£¡£¡£Õâµ¼ÖÂÄÚ²¿IPÊý¾Ý°üÓÉÁ´½ÓÔÚһ·µÄÁ½¸ötsPacket½á¹¹°µÊ¾£¬µ«ËüÃǵÄÊý¾Ý×ܳ¤¶È´óÓÚpktuChainDataLength×ֶΣ¨ÐÞ¼ôºópktuChainDataLength×ֶβ»ÊÇ1028×Ö½Ú£¬¶øÊǵÈÓÚ32£©¡£¡£¡£¾­¹ýÊý¾Ý³¤¶È²Ã¼ôºóµÄÁ´±í½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


´Ë¿ÌÒѾ­Ê¹µÃÁ´±í°×µ½Á˲»Ò»ÖµÄ״̬£¬ÏÂÃæ½«½éÉÜÈôºÎÀûÓÃÕâÖÖ²»Ò»ÖµÄ״̬À´µ¼ÖÂÄÚ´æ·ÛËé¡£¡£¡£


ÔÚTreckºÍ̸ջ´úÂëÖÐÖÁÉÙÓÐÒ»¸ö´úÂëõè¾¶Äܹ»½«·ÖƬÊý¾Ý¸´ÖƵ½µ¥¸öÂ½Ðø»º³åÇøÖС£¡£¡£¾ßÌåµÄÖ´ÐÐõ辶Ϊ£º£º

tfUdpIncomingPacket() ->  tfSocketIncomingPacket() -> tfCopyPacket()¡£¡£¡£ÏÂÃæµÄ´úÂëÊÇtfSocketIncomingPacket()º¯Êý´¦ÖÃUDPÊý¾Ý±¨µÄ´úÂëµÄÒ»²¿ÃÅ£¬ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Õâ¶Î´úÂëÖÐtfSocketIncomingPacket()º¯ÊýŲÓÃtfGetSharedBuffer()ÉêÇëÄڴ棬Æä¾Þϸ»ùÓÚpktuChainDataLength×ֶεÄÖµ£¬¶øºóͨ¹ýtfCopyPacket()º¯Êý½«Êý¾Ý°üµÄ·ÖÆç·ÖƬÖð¸ö¸´ÖƵ½Ð·ÖÅäµÄÄÚ´æ¿Õ¼äÖУ¬²úÉúÒç³öµÄ´úÂëÈçÏÂËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÓÉÓÚÁ½¸ö·ÖƬÖеÄpktuLinkDataLengthÖ®ºÍΪ1000×Ö½Ú£¬ºóÐøµÄtfCopyPacketº¯Êý½«»á°Ñ1000×Ö½ÚµÄÊý¾Ý¿½±´µ½Õâ¶ÎÄÚ´æÖУ¬Õ⽫µ¼Ö¶ÑÒç³ö¡£¡£¡£


2¡¢¡¢CVE-2020-11898


ÕýÈçǰÎÄÃèÊöÈôºÎ´¥·¢CVE-2020-11896·ì϶ÄÇÑù£¬Treck TCP/IPºÍ̸ջÎÞ·¨ÕýÈ·´¦ÖÃͨ¹ýIP-in-IPËíµÀ´«ÈëµÄIPv4·ÖƬ¡£¡£¡£ÕâÒ²¿ÉÄÜÔÊÐíδ¾­Éí·ÝÑéÖ¤µÄ¹¥»÷Õß´Ó¶ÑÖÐй©ÄÚ´æ¡£¡£¡£¿£Äܹ»Ñ¡È¡ÒÔÏÂʾÀý½øÐзì϶´¥·¢£º£º


¡ñ ÄÚ²¿IPÊý¾Ý°ü£º£ºIPv4 {ihl = 0xf£¬len = 100£¬proto = 0}£¬ÓÐÐ§ÔØºÉΪ'\ x00'* 40 +'\ x41'* 100¡£¡£¡£

¡ñ ÍⲿIPÊý¾Ý°ü£¨·ÖƬ1£©£º£ºIPv4 {frag offset = 0£¬MF = 1£¬proto = 4£¬id = 0xabcd}£¬ÆäÖÐ24¸ö×Ö½ÚÀ´×ÔÄÚ²¿IPÊý¾Ý°üÓÐЧ¸ºÔØ¡£¡£¡£ÕâÒâζ׎«¸´ÖÆ20¸ö×Ö½ÚµÄIP±êÍ·£¬Íâ¼Ó4¸ö¿Õ×Ö½Ú¡£¡£¡£

¡ñ ÍⲿIPÊý¾Ý°ü£¨·ÖƬ2£©£º£ºIPv4 {frag offset = 24£¬MF = 0£¬proto = 4£¬id = 0xabcd}£¬À´×ÔÄÚ²¿IPÊý¾Ý°üµÄÆäÓà×Ö½Ú×÷ΪÓÐЧ¸ºÔØ¡£¡£¡£


ʵÀýÖÐµÄ·ÖÆ¬½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÕâÀïihlΪ0xf£¬°µÊ¾Îª×î´óIPÑ¡Ï³¤¶ÈΪ60×Ö½Ú£¬Êý¾Ý°ü×ܳ¤¶Ètotal_lengthΪ100¡£¡£¡£µ±ÍøÂçºÍ̸ջÊÕµ½Á½¸ö·ÖƬʱ£¬Ëü½«Ê¹ÓÃtfIpReassemblePacket()º¯ÊýÖØÐÂ×é×°ËüÃÇ¡£¡£¡£·ÖƬÊý¾ÝÖØ×éºóµÄÁ´±í½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


¸ÃtfIpReassemblePacket()º¯ÊýʹÓÃtsUserPacket½á¹¹ÖеÄ×Ö¶ÎpktuLinkNextPtrÁ´½ÓÁ½¸ö·ÖƬ¡£¡£¡£ÈôÊÇÆôÓÃÁËIP-in-IPËíµÀ´«Ê䣬ÔòÄÚ²¿IPÊý¾Ý°ü½«ËæºóÓÉtfIpIncomingPacket()º¯ÊýÖд¦Öã¬ÐÞ¼ôºóµÄpktuChainDataLength×ֶβ»ÊÇ160£¬¶øÊǵÈÓÚ100¡£¡£¡£¾­¹ýÊý¾Ý³¤¶È²Ã¼ôºóµÄÁ´±í½á¹¹ÈçÏÂͼËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÄÚ²¿IPÊý¾Ý°üͨ¹ýIP±êÍ·ÆëÈ«ÐԲ鳭£¬ÓÉÓÚ½ö˼¿¼ÁËtsUserPacketµÄpktuChainDataLength×ֶΣ¨¶ø²»Ë¼¿¼pktuLinkDataLength£©¡£¡£¡£ÓÉÓÚÔڳ߶ÈIPÍ·²¿£¨20¸ö×Ö½Ú£©Ö®ºóÓÐ4¸ö¿Õ×Ö½Ú£¬²¢ÇÒÒ»¸ö¿Õ×Ö½Ú´ú±íIPÑ¡ÏîµÄĩ⣬IPÑ¡Ïî½âÎöͨ¹ý²é³­¡£¡£¡£ÓÉÓÚÄÚ²¿IPÊý¾Ý°üÔ̺¬ÎÞЧµÄIPv4ºÍ̸±àºÅ£¨ProtocolΪ0£©£¬½øÈëdefault·ÖÖ§£¬¶øºóÖ±½Ó½øÈëTM_IP_LOCAL_FLAG·ÖÖ§¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Òò¶øÍøÂçºÍ̸ջ½«Í¨¹ý·¢ËÍÀàÐÍΪ3£¨Ö¸±ê²»³É´ï£©ºÍ´úÂëΪ2£¨ºÍ̸²»³É´ï£©µÄICMPÃýÎóÐÂÎÅÀ´»Ø¾ø¸ÃÊý¾Ý°ü¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


ÕÆ¹Ü´´½¨ÃýÎóÊý¾Ý°üµÄÊÇtfIcmpErrPacket()º¯Êý¡£¡£¡£Ëü·ÖÅäÒ»¸öеÄÊý¾Ý°ü£¬³õʼ»¯Ò»Ð©ICMPÍ·²¿×ֶΡ£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


×îºó´ÓºóÐøÊý¾Ý°ü£¨ÄÚ²¿IPÊý¾Ý°ü£©Öи´ÖÆÒ»Ð©Êý¾Ý¡£¡£¡£¸´ÖƲ¿ÃÅÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Èç´úÂëËù¼û£¬tfIcmpErrPacket()º¯Êýͨ¹ý»ñÈ¡IP±¨Í·³¤¶È£¨ÒÔ×Ö½ÚΪµ¥Ôª¼ÓÉÏ8£¬ÔÚÏÖʵÇé¿öÏÂΪ60 + 8 = 68£©ÓëpktuLinkDataLength×ֶΣ¨ÒÔ¼°±»²Ã¼ôΪ100£©Ö®¼äµÄ×îСֵÀ´ÍÆËãÒª¸´ÖƵÄ×Ö½ÚÊý ¡£¡£¡£ÓÉÓÚ·¢ËÍÊý¾Ý°üµÄµÚÒ»¸ö·ÖƬµÄÏÖʵÁ´Â·Êý¾Ý³¤¶ÈΪ24£¨¶ø²»ÊÇ100£©£¬Òò¶øtfIcmpErrPacket()º¯Êý½«´Ó¶ÑÖи´ÖÆ68-24 = 44×ֽڵĶîÍâÊý¾Ý¡£¡£¡£¶øºóÉèÖÃv12_icmpErrPacketÖÐÓйØÊý¾Ý¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


×îºóŲÓÃtfIpSendPacket()º¯Êý·¢ËÍicmp_ErrPacket°üµ½Ö¸±êµØÖ·£¬Õ⽫µ¼ÖÂ44×Ö½ÚµÄÐÅϢй¶¡£¡£¡£


3¡¢¡¢CVE-2020-11910


CVE-2020-11910ÊÇÔ½½ç¶Á·ì϶£¬¸Ã·ì϶´æÔÚtfIcmpIncomingPacketº¯ÊýÖУ¬¸Ãº¯ÊýÖØÒªÊÇ´¦ÖÃICMP°ü¡£¡£¡£tfIcmpIncomingPacketº¯ÊýÔÚ´¦ÖÃÉ豸ÊÕµ½ÀàÐÍΪ3£¬codeΪ4µÄICMP°üµÄʱ³½£¬´úÂ벢ûÓÐÑéÖ¤ºóÐøÊý¾ÝµÄ³¤¶È£¬Ö±½Ó¾Í½Ó¼ûÁ˶ÔÓ¦µØÎ»µÄÊý¾Ý£¬Ôì³ÉÁËÔ½½ç¶Á·ì϶¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


4¡¢¡¢CVE-2020-11911


CVE-2020-11911ÊÇδÊÚȨµÄÃô¸ÐÐÅÏ¢¸üзì϶£¬¸Ã·ì϶´æÔÚtfIcmpIncomingPacketº¯ÊýÖУ¬¸Ãº¯ÊýÖØÒªÊÇ´¦ÖÃICMP°ü¡£¡£¡£tfIcmpIncomingPacketº¯ÊýÔÚ´¦ÖÃÉ豸ÊÕµ½ÀàÐÍΪ18£¨Address mask reply£©°üµÄʱ³½£¬´úÂ벢ûÓÐÑéÖ¤É豸ÊÇ·ñ·¢Ë͹ýÀàÐÍ17£¨Address mask request£©ÒªÇ󣬾ÍÖ±½Ó¸üÐÂÁËÉ豸µÄ×ÓÍøÑÚÂë¡£¡£¡£ÈçÏ´úÂëËùʾ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


Æß¡¢¡¢CVE-2020-11898·ì϶ÑéÖ¤


Ô¶³Ì¹¥»÷´òÓ¡»ú£¬ÊÓÆµÇ뵽΢ÐŹ«¼ÒºÅÖв鿴£º£ºÑéÖ¤ÊÓÆµ¡£¡£¡£


°Ë¡¢¡¢²Î¿¼


1¡¢¡¢https://www.ietf.org/rfc/rfc2003.txt

2¡¢¡¢https://www.ietf.org/rfc/rfc792.txt

3¡¢¡¢https://www.ietf.org/rfc/rfc1853.txt

4¡¢¡¢https://www.jsof-tech.com/ripple20/

5¡¢¡¢https://kb.cert.org/vuls/id/257161

6¡¢¡¢/article/1/11834.html

7¡¢¡¢JSOF_Ripple20_Technical_Whitepaper_June20.pdf



OG¶«·½Ìü»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©


ADLab³ÉÁ¢ÓÚ1999Ä꣬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¸ÅÄîÊ×ÍÆÕß¡£¡£¡£½ØÖ¹Ä¿Ç°£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶1000Óà¸ö£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶800Óà¸ö£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£¡£¡£³¢ÊÔÊÒ×êÑз½Ïòº­¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑС¢¡¢Òƶ¯ÖÇÄÜÖն˰²È«×êÑС¢¡¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑС¢¡¢Web°²È«×êÑС¢¡¢¹¤¿ØÏµÍ³°²È«×êÑС¢¡¢Ôư²È«×êÑС£¡£¡£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑС¢¡¢¹ú¶ÈÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢¡¢×¨Òµ°²È«·þÎñµÈ¡£¡£¡£



OG¶«·½Ìü¡¤(Öйú´ó½)