<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 04:10:32 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-25890] Prevent user-initiated writes to the system.views collection</title>
                <link>https://jira.mongodb.org/browse/SERVER-25890</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Work was done in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-25723&quot; title=&quot;don&amp;#39;t terminate in presence of invalid views&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-25723&quot;&gt;&lt;del&gt;SERVER-25723&lt;/del&gt;&lt;/a&gt; to avoid crashing a secondary upon replicating a structurally invalid view definition (i.e. one with unknown fields or incorrect types). We should consider whether it&apos;s possible and that we&apos;re willing to reject user-initiated writes to the &lt;tt&gt;system.views&lt;/tt&gt; collection. One approach would be to return an error in the following functions that were introduced by &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=redbeard0531&quot; class=&quot;user-hover&quot; rel=&quot;redbeard0531&quot;&gt;redbeard0531&lt;/a&gt;&apos;s work in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-23128&quot; title=&quot;Refactor write cmd path&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-23128&quot;&gt;&lt;del&gt;SERVER-23128&lt;/del&gt;&lt;/a&gt;. The parsing and validation would be performed prior the catalog operation that actually does the write and &lt;b&gt;should not&lt;/b&gt; impact the replication of views.&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L135&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseInsertCommand()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L156&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseUpdateCommand()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L199&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseDeleteCommand()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L248&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseLegacyInsert()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L263&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseLegacyUpdate()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/r3.3.11/src/mongo/db/ops/write_ops_parsers.cpp#L281&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;parseLegacyDelete()&lt;/tt&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It is worth mention that issues such as &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-25492&quot; title=&quot;mongod startup should gracefully handle invalid view definitions&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-25492&quot;&gt;&lt;del&gt;SERVER-25492&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-25680&quot; title=&quot;Commands should check for a collection before looking up a view&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-25680&quot;&gt;&lt;del&gt;SERVER-25680&lt;/del&gt;&lt;/a&gt; were only identified as a result of a user being able to write directly to the &lt;tt&gt;system.views&lt;/tt&gt; collection. Since we may end up changing the document structure of a view definition in a future release (e.g. by adding a new option), we may want to be able to retain the ability to write directly to the &lt;tt&gt;system.views&lt;/tt&gt; collection for testing purposes.&lt;/p&gt;</description>
                <environment></environment>
        <key id="313108">SERVER-25890</key>
            <summary>Prevent user-initiated writes to the system.views collection</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="backlog-server-execution">Backlog - Storage Execution Team</assignee>
                                    <reporter username="max.hirschhorn@mongodb.com">Max Hirschhorn</reporter>
                        <labels>
                            <label>read-only-views</label>
                    </labels>
                <created>Wed, 31 Aug 2016 15:27:53 +0000</created>
                <updated>Tue, 6 Dec 2022 04:17:50 +0000</updated>
                            <resolved>Wed, 25 Jan 2017 19:44:59 +0000</resolved>
                                                                    <component>Write Ops</component>
                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="1485235" author="milkie" created="Wed, 25 Jan 2017 19:12:06 +0000"  >&lt;p&gt;Fuzzer is going to proceed with &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-27813&quot; title=&quot;Change ReplSetTest&amp;#39;s checkDBHashesForReplSet() function to handle duplicate namespaces being returned&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-27813&quot;&gt;&lt;del&gt;SERVER-27813&lt;/del&gt;&lt;/a&gt; instead.&lt;/p&gt;</comment>
                            <comment id="1485086" author="schwerin" created="Wed, 25 Jan 2017 17:06:12 +0000"  >&lt;p&gt;As originally conceived, the &quot;root&quot; role should have done this, but somebody gave &quot;root&quot; &quot;restore&quot; privileges, which might have removed the utility of that.&lt;/p&gt;

&lt;p&gt;However, you could create a user with the roles &quot;readWriteAnyDatabase&quot;, &quot;clusterAdmin&quot;, &quot;dbAdminAnyDatabase&quot; and &quot;userAdminAnyDatabase&quot; &amp;#8211; and optionally &quot;backup&quot;.&lt;/p&gt;</comment>
                            <comment id="1484922" author="max.hirschhorn@10gen.com" created="Wed, 25 Jan 2017 15:11:26 +0000"  >&lt;blockquote&gt;
&lt;p&gt;Does the fuzzer have auth on? I&apos;d prefer that the access control system&lt;br/&gt;
guard this, rather than special logic.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=schwerin&quot; class=&quot;user-hover&quot; rel=&quot;schwerin&quot;&gt;schwerin&lt;/a&gt;, are you proposing that we have the fuzzer always authenticate as a user that doesn&apos;t have permission to write to the &lt;tt&gt;system.views&lt;/tt&gt; collection? Is there an easy way to express having all privileges on the cluster, databases, and collections, except for &quot;insert&quot; and &quot;update&quot; on {&lt;tt&gt;db: &quot;&quot;, collection: &quot;system.views&quot;&lt;/tt&gt;}?&lt;/p&gt;</comment>
                            <comment id="1484860" author="schwerin" created="Wed, 25 Jan 2017 14:18:01 +0000"  >&lt;p&gt;Does the fuzzer have auth on? I&apos;d prefer that the access control system&lt;br/&gt;
guard this, rather than special logic.&lt;/p&gt;

</comment>
                            <comment id="1484821" author="milkie" created="Wed, 25 Jan 2017 13:38:08 +0000"  >&lt;p&gt;We should reconsider doing something about this now that 3.4.0 is released.  With the current behavior, the fuzzer is able to create invalid views that cause test failures, yet blacklisting this behavior in the fuzzer is something I&apos;d like to avoid if possible.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="313614">SERVER-25942</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="416362">SERVER-30644</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25136"><![CDATA[Storage Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 31 Aug 2016 16:20:33 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        7 years, 3 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            7 years, 3 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>schwerin@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-server-execution</customfieldvalue>
            <customfieldvalue>milkie@mongodb.com</customfieldvalue>
            <customfieldvalue>max.hirschhorn@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrjxe7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hspa9r:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hselg7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>