ClickHouse¶à¸ö·ì϶µÀÀí·ÖÎö
°ä²¼¹¦·ò 2022-03-21Ò»¡¢·ì϶¸ÅÊö
ClickHouseÊǶíÂÞ˹yandex¹«Ë¾ÓÚ2016Ä꿪ԴµÄÔÆÊý¾Ý¿âÖÎÀíϵͳ£¬£¬£¬£¬£¬£¬£¬£¬ClickHouse¿í·ºÀûÓÃÓÚÔÆÆ½Ì¨µÄ´óÊý¾Ý·ÖÎöÀûÓÃÖУ¬£¬£¬£¬£¬£¬£¬£¬ÆäÓû§Ô̺¬uber¡¢ebay¡¢µÂÒâÖ¾ÒøÐÓ×¢°¢Àï°Í°Í¡¢ÌÚѶµÈ¡£¡£¡£¡£¡£¡£¡£¡£
·ì϶ӰÏìÁËClickHouse 21.10.2.15°æ±¾Ö®Ç°µÄËùÓа汾¡£¡£¡£¡£¡£¡£¡£¡£¾ßÌå·ìϼûèÊöÈçϱíËùʾ£º

¶þ¡¢´ëÖý¨Òé
2021Äê10ÔÂ18ÈÕ°ä²¼µÄClickHouse 21.10.2.15°æ±¾½¨¸´ÁËÉÏÊöµÄ7¸ö·ì϶£¬£¬£¬£¬£¬£¬£¬£¬Ç뾡¿ìÉý¼¶µ½ClickHouse 21.10.2.15¼°ÒÔÀ´µÄ°æ±¾¡£¡£¡£¡£¡£¡£¡£¡£
https://github.com/ClickHouse/ClickHouse/releases/
»º½â´ëÊ©£º
Èý¡¢·ì϶·ÖÎö
ÕâЩ·ì϶¶¼´æÔÚClickHouse Server´¦ÖÃѹËõÊý¾ÝµÄÒªÇó´¦Öùý³ÌÖУ¬£¬£¬£¬£¬£¬£¬£¬ClickHouse ServerÖ§³Ö¶ÔÓû§ÒªÇóµÄ¸½´øÊý¾Ý½øÐÐѹËõ¡£¡£¡£¡£¡£¡£¡£¡£Óû§Äܹ»ÔÚÌáÒéWEBÒªÇóʱ£¬£¬£¬£¬£¬£¬£¬£¬½«decompress±êÖ¾ÉèΪ1¼´¿É£¬£¬£¬£¬£¬£¬£¬£¬¾ÙÀýÈçÏ£º
²éÎʵĸ½´øÊý¾Ý(query.bin)Äܹ»°´ÏÂÃæµÄ½á¹¹½øÐÐ×éÖ¯£º

ClickHouseÖ§³Ö¶àÖÖѹËõÌåʽ£¬£¬£¬£¬£¬£¬£¬£¬Ô̺¬LZ4¡¢Gorilla¡¢DeltaµÈ¶àÖÖѹËõËã·¨¡£¡£¡£¡£¡£¡£¡£¡£ClickHouse Serverƾ¾ÝÒªÇóÖи½´øÊý¾ÝµÄѹËõËã·¨±êʶ£¬£¬£¬£¬£¬£¬£¬£¬Å²ÓÃ·ÖÆçµÄ½âѹËã·¨À´¶ÔÊý¾Ý½øÐнâѹ¡£¡£¡£¡£¡£¡£¡£¡£
3.1 LZ4Ëã·¨½éÉÜ
LZ4ѹËõËã·¨ÊÇLZË㷨ϵÁÐÖеÄÒ»ÖÖ£¬£¬£¬£¬£¬£¬£¬£¬Ò²ÊÇĿǰ×ÛºÏЧÄÜ×î¿ìµÄѹËõËã·¨Ö®Ò»¡£¡£¡£¡£¡£¡£¡£¡£
Ò»¸öLZ4ѹËõ¿éÓɶà¸öLZ4ÐòÁÐ×é³É£¬£¬£¬£¬£¬£¬£¬£¬LZ4ÐòÁÐÓÉÒÔÏÂÊý¾Ý×é³É£¬£¬£¬£¬£¬£¬£¬£¬ÈçÏÂͼËùʾ£º

Token´óÓ×Ϊ1×Ö½Ú£¬£¬£¬£¬£¬£¬£¬£¬¸ß4¸öbitsΪ²»³ÉѹËõÊý¾Ý(literal£©µÄ³¤¶È(literallength)£¬£¬£¬£¬£¬£¬£¬£¬¶øµÍ4¸öbitsΪÄܹ»Ñ¹ËõÊý¾Ý(match)³¤¶È(match length)¡£¡£¡£¡£¡£¡£¡£¡£ÈôÊÇliterallengthµÄֵΪ0£¬£¬£¬£¬£¬£¬£¬£¬Ôò°µÊ¾ºóÐøÊý¾ÝÀïûÓÐliteral¡£¡£¡£¡£¡£¡£¡£¡£ÓÉÓÚliteral lengthÖ»ÓÐ4±ÈÌØÀ´°µÊ¾£¬£¬£¬£¬£¬£¬£¬£¬ËüµÄ×î´óֵΪ15¡£¡£¡£¡£¡£¡£¡£¡£µ±literalÊý¾ÝµÄ´óÓ×´óÓÚµÅ×Ú15ʱ£¬£¬£¬£¬£¬£¬£¬£¬±ØÒªÔÚToken×ֶκóÔö³¤¸ñ±íµÄ×Ö½ÚÀ´°µÊ¾literalµÄ³¤¶È£¨Literal length+£©¡£¡£¡£¡£¡£¡£¡£¡£
MatchÖ¸³Á¸´Ï£¬£¬£¬£¬£¬£¬£¬Äܹ»Ñ¹ËõµÄ²¿ÃÅ¡£¡£¡£¡£¡£¡£¡£¡£
src/Compression/LZ4_decompress_faster.cppµÄdecompressImplº¯ÊýÔÚ¿½±´LZ4ÐòÁÐÊý¾ÝµÄliteralʱ£¬£¬£¬£¬£¬£¬£¬£¬Ã»ÓÐÅжϸ´ÔìµÄÊý¾ÝÊÇ·ñ³¬¹ýÖ¸±ê»º³åÇøµÄÏÞ¶È¡£¡£¡£¡£¡£¡£¡£¡£µ±±ØÒª¸´ÔìµÄÊý¾Ý³¬¹ýÖ¸±ê»º´æµÄ´óÓ×ʱ£¬£¬£¬£¬£¬£¬£¬£¬»áµ¼Ö¶ÑÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£

ÈçÉÏͼ´úÂëËùʾ£¬£¬£¬£¬£¬£¬£¬£¬ipÊÇÖ¸ÏòѹËõ»º³åÇøµÄÖ¸Õë¡£¡£¡£¡£¡£¡£¡£¡£opÊÇÖ¸Ïò·ÖÅäµÄÖ¸±ê»º³åÇøµÄÖ¸Õ룬£¬£¬£¬£¬£¬£¬£¬¸ÃÖ¸±ê»º³åÇøµÄ´óÓ×Ϊ±¨Í·Öиø¶¨µÄ½âѹ´óÓס£¡£¡£¡£¡£¡£¡£¡£copy_endÊÇÖ¸Ïò¸´ÔìÇøÓò½áβµÄÖ¸Õë¡£¡£¡£¡£¡£¡£¡£¡£
¹¥»÷ÕßÄܹ»»ú¹Ø¶ñÒâµÄLZ4ÐòÁÐÊý¾Ý£¬£¬£¬£¬£¬£¬£¬£¬ÆäÖÐliteraµÄ³¤¶È(length±äÁ¿)´óÓÚdest_size£¬£¬£¬£¬£¬£¬£¬£¬½«µ¼Ö¶ÑÒç³ö¡£¡£¡£¡£¡£¡£¡£¡£

3.4 CVE-2021-43305·ì϶µÀÀí

3.5 CVE-2021-42388¼°CVE-2021-42387·ì϶µÀÀí
·ì϶´æÔÚsrc/Compression/LZ4_decompress_faster.cppµÄdecompressImplº¯ÊýÖУ¬£¬£¬£¬£¬£¬£¬£¬¸Ãº¯ÊýÖ±½Ó´ÓLZ4ѹËõÊý¾ÝÖжÁÈ¡16λÎÞ·ûºÅÆ«ÒÆÁ¿£¨offset¹¥»÷ÕßÄܹ»½ÚÔ죩,¸ÃÆ«ÒÆÁ¿ÓÃÓÚÍÆËãwildCopy²Ù×÷µÄÔ´Êý¾ÝµØÖ·¡£¡£¡£¡£¡£¡£¡£¡£µ±offsetµÄֵΪ´óÓÚcopy_amountʱ(Èçoffset = 0xffff£©£¬£¬£¬£¬£¬£¬£¬£¬½«µ¼Ö·¨Ê½½«opµØÖ·Ö®Ç°µÄÊý¾Ý¿½±´µ½opÖ¸ÏòµÄµØÖ·ÖУ¬£¬£¬£¬£¬£¬£¬£¬´Ó¶øµ¼ÖÂÔ½½ç¶Á¡£¡£¡£¡£¡£¡£¡£¡£

CVE-2021-42387ÊÇCVE-2021-42388µÄÒ»¸öÀàËÆ·ì϶£¬£¬£¬£¬£¬£¬£¬£¬ÕâÀï¾Í²»ÔÙ½éÉÜ¡£¡£¡£¡£¡£¡£¡£¡£
ClickHouseÖ§³ÖµÄDoubleDelta±à½âÂëÆ÷¡¢Delta±à½âÂëÆ÷¡¢Gorilla±à½âÂëÆ÷Öж¼´æÔÚ±»Áã³ýµÄ·ì϶¡£¡£¡£¡£¡£¡£¡£¡£ËüÃÇ»ùÓÚ½«Ñ¹Ëõ»º³åÇøµÄµÚÒ»¸ö×Ö½ÚÉèÖÃΪÁã¡£¡£¡£¡£¡£¡£¡£¡£½âѹ´úÂë¶ÁȡѹËõ»º³åÇøµÄµÚÒ»¸ö×Ö½Ú£¬£¬£¬£¬£¬£¬£¬£¬²¢¶ÔÆäÖ´ÐÐÄ£ÔËËãÒÔ»ñµÃÔü×Ò×Ö½Ú£¬£¬£¬£¬£¬£¬£¬£¬µ±source[0]Ϊ0ʱ£¬£¬£¬£¬£¬£¬£¬£¬CPU¶Ô0½øÐÐȡģʱ²Ù×÷½«²úÉú³ý0Òì³£¡£¡£¡£¡£¡£¡£¡£¡£

ËÄ¡¢ÊµÏÖÓï
´óÊý¾ÝʱÆÚÏ£¬£¬£¬£¬£¬£¬£¬£¬´óÁ¿Êý¾ÝÜöÝÍ¡¢ÏνӼ°ÍøÂçÌìǵµÄÑÓ³¤¶¼ÎªÊý¾Ý¿âµÄµÄ°²È«Ìá³öÁ˸ü¸ßµÄÒªÇ󡣡£¡£¡£¡£¡£¡£¡£Êý¾Ý¿â×÷ΪÐÅÏ¢¼¼ÊõϵͳµÄÖ÷ÌâºÍ»ù´¡£¬£¬£¬£¬£¬£¬£¬£¬³ÐÔØ×ÅÔ½À´Ô½¶àµÄ¹Ø¼üÒµÎñϵͳ£¬£¬£¬£¬£¬£¬£¬£¬³ÉΪÆóÒµºÍ»ú¹¹×îÓµÓÐÕ½ÊõÐÔµÄÖ÷ÌâÊý¾Ý×ʲú£¬£¬£¬£¬£¬£¬£¬£¬Òò¶øÊý¾Ý¿â·½ÃæµÄ°²È«ÖµµÃÎÒÃdzÖÐø¹Ø×¢¡£¡£¡£¡£¡£¡£¡£¡£
²Î¿¼Á´½Ó£º
[1]https://jfrog.com/blog/7-rce-and-dos-vulnerabilities-found-in-clickhouse-dbms/
[2]https://github.com/ClickHouse/ClickHouse
[3]https://thehackernews.com/2022/03/multiple-flaws-uncovered-in-clickhouse.html


¾©¹«Íø°²±¸11010802024551ºÅ