[sword-devel] Major Sword bug found -- buffer overflow

Martin Gruner mg.pub at gmx.net
Wed Mar 1 05:29:39 MST 2006


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

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

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


More information about the sword-devel mailing list