<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to 118: predictable hash function</title><link href="https://sourceforge.net/p/cppcms/bugs/118/" rel="alternate"/><link href="https://sourceforge.net/p/cppcms/bugs/118/feed.atom" rel="self"/><id>https://sourceforge.net/p/cppcms/bugs/118/</id><updated>2014-05-23T14:11:03.807000Z</updated><subtitle>Recent changes to 118: predictable hash function</subtitle><entry><title>#118 predictable hash function</title><link href="https://sourceforge.net/p/cppcms/bugs/118/?limit=25#6396" rel="alternate"/><published>2014-05-23T14:11:03.807000Z</published><updated>2014-05-23T14:11:03.807000Z</updated><author><name>Artyom Beilis</name><uri>https://sourceforge.net/u/artyom-beilis/</uri></author><id>https://sourceforge.netbc446b4882f9144092cd184a1365597e15b22c01</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Interesting point to think about&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#118 predictable hash function</title><link href="https://sourceforge.net/p/cppcms/bugs/118/?limit=25#15f1" rel="alternate"/><published>2014-05-23T14:10:52.414000Z</published><updated>2014-05-23T14:10:52.414000Z</updated><author><name>Artyom Beilis</name><uri>https://sourceforge.net/u/artyom-beilis/</uri></author><id>https://sourceforge.net26dbedbef5125def2d77e5dd84e492e93d7c5c2f</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;assigned_to&lt;/strong&gt;: Artyom Beilis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;: v1.0_(example) --&amp;gt; 1.2&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>predictable hash function</title><link href="https://sourceforge.net/p/cppcms/bugs/118/" rel="alternate"/><published>2014-04-08T20:02:27.837000Z</published><updated>2014-04-08T20:02:27.837000Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net6df5dba610b7e856f2c844910f070fab569ab5d5</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;It's not really a bug, but i think it should be mentioned somewhere in the docs, that the hash_map and hash_map based modules (e.g caching) are not safe for all kinds of user input/user provided data - because of the predictable hash function and the resulting vulnerability to hash-DoS attacks.&lt;/p&gt;
&lt;p&gt;Poc:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;def&lt;/span&gt; &lt;span class="n"&gt;weinberg_hasher&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;inp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;     &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;     &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;inp&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;         &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;         &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xF0000000&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;         &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;             &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;high&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt; &lt;span class="n"&gt;high&lt;/span&gt;
&lt;span class="p"&gt;...&lt;/span&gt;     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="mh"&gt;0xFFFFFFFF&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;hasher&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;abc&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;len_&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;len_&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;values&lt;/span&gt;
&lt;span class="mi"&gt;10000&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="n"&gt;distinct&lt;/span&gt; &lt;span class="n"&gt;values&lt;/span&gt;
&lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</summary></entry><entry><title>predictable hash function</title><link href="https://sourceforge.net/p/cppcms/bugs/118/" rel="alternate"/><published>2014-04-08T20:02:27.837000Z</published><updated>2014-04-08T20:02:27.837000Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.netaca42ef3c8fe0b12a0c2c6227082d8cb3aad95ba</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ticket 118 has been modified: predictable hash function&lt;br /&gt;
Edited By: Artyom Beilis (artyom-beilis)&lt;br /&gt;
&lt;em&gt;milestone updated: u'v1.0&lt;/em&gt;(example)' =&amp;gt; u'1.2'&lt;br /&gt;
Owner updated: None =&amp;gt; u'artyom-beilis'&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>