Network Audio System(NAS)是一套采用客户机/服务器结构的网络音频传输系统。该系统支持音频传输、音频处理、音频存储等。 Network Audio System中ProcAuWriteElement中的整数溢出导致bcopy崩溃 ProcAuWriteElement中的整数溢出允许客户端在连接期间设置超长的max_samples值,然后向目标缓冲区写入过多字节,导致NAS服务器崩溃。 server/dia/audispatch.c文件中的漏洞代码: int ProcAuWriteElement(ClientPtr client) { ... if (stuff->num_bytes > c->dataSize - currentSize) AU_ERROR(AuBadValue, stuff->num_bytes); if (stuff->num_bytes) { s = (AuUint8 *) & stuff[1]; d = c->write; n = aumin(stuff->num_bytes, c->dataEnd - d); bcopy(s, d, n); /* wrap if necessary */ if (n != stuff->num_bytes) bcopy(s + n, c->data, stuff->num_bytes - n); ...
Network Audio System(NAS)是一套采用客户机/服务器结构的网络音频传输系统。该系统支持音频传输、音频处理、音频存储等。 Network Audio System中ProcAuWriteElement中的整数溢出导致bcopy崩溃 ProcAuWriteElement中的整数溢出允许客户端在连接期间设置超长的max_samples值,然后向目标缓冲区写入过多字节,导致NAS服务器崩溃。 server/dia/audispatch.c文件中的漏洞代码: int ProcAuWriteElement(ClientPtr client) { ... if (stuff->num_bytes > c->dataSize - currentSize) AU_ERROR(AuBadValue, stuff->num_bytes); if (stuff->num_bytes) { s = (AuUint8 *) & stuff[1]; d = c->write; n = aumin(stuff->num_bytes, c->dataEnd - d); bcopy(s, d, n); /* wrap if necessary */ if (n != stuff->num_bytes) bcopy(s + n, c->data, stuff->num_bytes - n); ...