[sword-devel] Major Sword bug found -- buffer overflow
DM Smith
dmsmith555 at yahoo.com
Wed Mar 1 06:21:59 MST 2006
Check line 41 of sapphire.cpp. Make sure that rsum is actually an
unsigned byte and that it is handling integer overflow correctly. This
is where I had a bug in the equivalent Java routine.
This code relies upon integer overflow happening correctly. It is safer
to mask before using it for an index.
DM Smith wrote:
> Martin,
> You have the flow of events incorrect. Compression is last on
> building. Decompression is first on reading.
>
> It could be that it is experiencing the same bug I encountered in
> JSword. I'll check (as it is a one line change)
>
> Martin Gruner wrote:
>> Hi,
>>
>> when testing the new GerHfa2002 module, I discovered a major bug in
>> sword. I tried to open the locked module without having the key yet.
>> In some chapters garbage text shows up which clearly belongs not to
>> the module, but to other parts of the address space of BibleTime.
>>
>> IIRC, in Sword, module encryption works like this
>>
>> raw text -> compression -> encryption
>>
> raw text -> encryption -> compression
> encryption does not change the size of the file.
>> This is supposed to strengthen the encryption. But if you don't have
>> the encryption key, then the decryption can't work:
>>
>> decryption -> decompression -> raw text
>>
> decompression -> decryption -> raw text
>
> Actually, if anyone cares to know, there is no difference between
> encryption and decryption.
>
>> Since decryption does not work, decompression tries to uncompress the
>> encrypted text (that's what I guess here). This sometimes leads to
>> buffer overflows (not deterministic). For example, I had this text in
>> Joshua 1 in BibleTime:
>>
>> 1 2 3 b 4 5 6 o 7 8 r-Verlag" and "Friedrich Reinhardt
>> Verlag", we are able to distribute (for missionary purposes) the text
>> of the LOSUNG ("Watchwords" -selected Old and New Testamtent texts-)
>> as freeware. I am very glad about this opportunity, and with all my
>> heart I give thanks to our great God. I am also grateful to all those
>> sustaining this missionary opportunity 9 in prayer. Their part is
>> crucial.\par\parThis free version on disk displays only the Old and
>> New Testament verses. The publisher "H�nssler-Verlag" in Germany
>> offers a disk version 10 for sale (in German), which displays
>> additional text from the printed booklet.\par\parEach user and
>> distributor of this disk must adhere to the license agreement
>> below:\par\par You may distribute the content of this disk or program
>> package only in unmodified form. You must not remove, modify, or pass
>> along any files separately.
>> \par\par Via BBS you m 12 ay distribute individual program packets,
>> such as: \par\par winlos99.exe \par doslos99.exe \par os2los99.zip
>> \par atalsg99.zip \par etc.. \par\par The same restriction applies
>> here, as well: \par\par Distribution of the LOSUNG ("Watchwords")
>> texts without their respective display programs is not permitted. You
>> must not alter the content of the texts.\par\par The programs
>> themselves are copyrighted (German "Urheberrecht") for the benefit of
>> their progr 13 am authors. See program documentation for
>> details.\par\parAdditionally, the following applies:
>> \par\par the LOSUNG ("Watchwords") may be used exclusively by the
>> name "LOSUNG" with the freeware programs provided, and may only be
>> distributed free of charge. \par advertisement, distribution for
>> profit, and distribution through commercial companies, is prohibited.
>> \par you must not use or incorporate the freeware LOSUNG
>> ("Watchwords") texts in any other software program (e.g. an or 15
>> ganizer program), unless the sole function of the program is to
>> display the LOSUNG ("Watchwords") text on the screen.
>> \par\parImportant Copyright Information regarding the English Bible
>> Texts:
>> \par\par The Text of the "AUTHORIZED VERSION" (popularly known as the
>> "King Jam 16 es Version") is in the Public Domain.\par\par The NEW
>> INTERNATIONAL VERSION (often abbreviated as "NIV")\par "Scripture t
>> 17 aken from the HOLY BIBLE, NEW INTERNATIONAL VERSION (R)\par
>> Copyright (C) 1973, 1978, 1984\par 18 by International Bible
>> Society.\par Used by permission of Zondervan Publishing House.\par
>> All rights reserved."\par\par T
>>
>> This obviously comes from other parts of BibleTime's address space.
>> Try "mod2imp GerHfa2002" and you might see places where this happens.
>> The GerHfaLex2002 module crashes BibleTime on my system, perhaps
>> because the decompressor tries to access memory that is outside of
>> BibleTime's address space.
>> The console always spits out warnings like:
>>
>> no room in outbuffer to during decompression. see zipcomp.cpp
>> no room in outbuffer to during decompression. see zipcomp.cpp
>>
>> I don't know how the decompression algorithms and Sword's design in
>> this regard work. Perhaps somebody wants to investigate? This is both
>> a stability and a security problem.
>>
>> Martin
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>>
>>
>>
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
>
>
More information about the sword-devel
mailing list