I should that the Security Implications are NONE. There are no security implications in setting a MIME type for "magic number" containing SQLite3 databases.
I should think that the "Interoperability Considerations" are that the contained data cannot be processed as a stream and it must be saved to a filesystem before it can be used by any application incorporating the SQLite3 database engine. --- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >-----Original Message----- >From: sqlite-users [mailto:sqlite-users- >boun...@mailinglists.sqlite.org] On Behalf Of Clemens Ladisch >Sent: Sunday, 1 October, 2017 08:33 >To: sqlite-users@mailinglists.sqlite.org >Subject: Re: [sqlite] Proposed registration for >application/vnd.sqlite3 and +sqlite3 (was: Why is Sqlite mediatype >not registered at iana) > >Paul van Genuchten wrote: >> i’m currently not a member of the sqlite consortium. > >RFC 6838 § 3.2 says: >| A registration may be placed in the vendor tree by anyone who needs >| to interchange files associated with some product or set of >products. >| However, the registration properly belongs to the vendor or >| organization producing the software that employs the type being >| registered, and that vendor or organization can at any time elect >to >| assert ownership of a registration done by a third party in order >to >| correct or update it. > > >Okay, did I overlook anything (especially in the security or >interoperability considerations sections)? > > >===================================================================== >=== > > >Type name: > > application > >Subtype name: > > vnd.sqlite3 > >Required parameters: > > none > >Optional parameters: > > none > >Encoding considerations: > > binary > >Security considerations: > > Database files contain complex data structures, so parsers must >take > care to prevent buffer overflows, stack overruns, and other >unexpected > behaviour caused by malicious content. > > Views and triggers can contain arbitrary SQL expressions (including > recursion), which can result in arbitrarily large amounts of > processing time, memory, and disk space required when attempting to > access data. Applications should use mechanisms like > sqlite3_interrupt() or sqlite3_progress_handler() to allow long > computations to be aborted, and an alternative memory allocator to > limit the amount of memory used. > > The SQLite library itself, as distributed, does not allow SQL > statements to access resources or data outside the database. >However, > if applications add extension modules or functions, they should not >do > so in the database connection used to access untrusted content, or > they must ensure that these modules/functions are safe to use even > when called from malicious SQL code. > > The database may leave part of deleted or updated data in the >database > file. Applications that do not want ot leave traces of old data >must > enable PRAGMA secure_delete before doing any modifications, or run > VACUUM before transmitting the database file. > > Databases can use indexes to cache data in a format that is faster >to > access for certain queries. It is possible to construct database > files with inconsistent data in indexes so that some queries return > data different from what is actually stored in a table. To avoid > this, applications should run REINDEX before accessing a database > received from a potentially malicious source. > > This format provides no cryptographic integrity protection of any > kind. > > Databases can be used to store blobs containing data to be handled >by > other applications or libraries; any security considerations of >those > must also be taken into account. > >Interoperability considerations: > > At publication of this document, there exists only a single > implementation, the SQLite library. > > Database files written with recent versions of the library can be >read > and modified by any version back to at least 3.7.0 (released > 2010-07-21). However, there is no backwards compatibility if SQL > features introduced in a newer version are actually used. To >ensure > interoperability with other applications that use an older version >of > the library, applications SHOULD avoid using features that are not > supported in the version that other applications are known or > suspected to use. At publication of this document, features > introduced in newer versions are: > > 3.20.0: deterministic date/time functions; > 3.18.0: printf() thousands marks; > 3.16.0: PRAGMA functions; > 3.15.0: row values; deterministic SQL functions in partial indexes; > 3.9.0: expression indexes; > 3.8.8: more than 500 rows in a VALUES clause; > 3.8.6: hexadecimal integer literals; likely(); > 3.8.3: common table expressions (WITH); printf(); > 3.8.2: clustered indexes (WITHOUT ROWID tables); > 3.8.1: unlikely(); likelihood(); > 3.8.0: partial indexes; > 3.7.16: unicode(); char(); > 3.7.15: instr(); > 3.7.11: multiple rows in a VALUES clause; bare columns in aggregate >queries. > > Some runtime settings (e.g., PRAGMA case_sensitive_like) or > compilation options can change the semantics of SQL statements. > Applications SHOULD use the default settings and options; however, > some settings (e.g., PRAGMA foreign_keys) are disabled by default >only > for backwards compatibility and are commonly enabled. > > When a transaction that changes the database has not yet committed, > the database file might be in an inconsistent state and require >data > from the rollback journal to get back to a consistent state. > Therefore, when it is possible that other processes or threads >change > a database, an application that wishes to transmit a database file > SHOULD prevent concurrent changes by executing BEGIN IMMEDIATE >before > reading/copying the file, or use the backup API to create a >consistent > copy of the database. > > A database in WAL mode can have part of its data in the WAL file. > Therefore, an application that wishes to transmit a database file >in > WAL mode SHOULD initiate a full checkpoint before reading/copying >the > file, or use the backup API to create a copy of the database. > > The unregistered media type "application/x-sqlite3" MUST NOT be >used, > except where required for backwards compatibility. > >Published specification: > > http://www.sqlite.org/fileformat2.html > http://www.sqlite.org/lang.html > >Applications that use this media type: > > Applications that want to store or interchange relational data. > >Fragment identifier considerations: > > none > >Deprecated alias names for this type: > > application/x-sqlite3 > >Magic number: > > 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 > (zero-terminated ASCII "SQLite format 3") at offset 0 > >File extensions: > > .db, .sqlite, .sqlite3 > (".db" does not uniquely identify SQLite database files. > Other extensions are commonly used.) > >Macintosh file type code: > > none > >Contact: > > SQLite mailing list > <sqlite-users@mailinglists.sqlite.org> > >Intended usage: > > COMMON > >Restrictions on usage: > > none > >Author/Change controller: > > Clemens Ladisch > <clem...@ladisch.de> > >Provisional registration? (standards tree only): > > N/A > > >===================================================================== >=== > > >Name > > SQLite3 database > >+suffix > > +sqlite3 > >References > > Same as for "application/vnd.sqlite3". > >Encoding considerations > > binary > >Interoperability considerations > > Same as for "application/vnd.sqlite3". > > To allow identification of files when the media type name is not > available, each individual "xxx/yyy+sqlite3" registration SHOULD > specify an appliction ID value to be set with PRAGMA application_id > (http://www.sqlite.org/pragma.html#pragma_application_id), and >SHOULD > specifiy it as a second magic number (file offset 68, see > http://www.sqlite.org/fileformat2.html#application_id) in addition >to > the header string at offset 0. This value should also be added to >the > magic.txt file in the SQLite repository > (http://www.sqlite.org/src/artifact?ci=trunk&filename=magic.txt) by > submitting a patch to <sqlite-users@mailinglists.sqlite.org>. > >Fragment identifier considerations > > The syntax and semantics of fragment identifiers specified for > +sqlite3 SHOULD be as specified for "application/vnd.sqlite3". > (At publication of this document, there is no fragment >identification > syntax defined for "application/vnd.sqlite3".) > > The syntax and semantics of fragment identifiers for a specific > "xxx/yyy+sqlite3" SHOULD be processed as follows: > > For cases defined in +sqlite3, where the fragment identifier >resolves > per the +sqlite3 rules, then as specified in +sqlite3. > > For cases defined in +sqlite3, where the fragment identifier does >not > resolve per the +sqlite3 rules, then as specified in >"xxx/yyy+sqlite3". > > For cases not defined in +sqlite3, then as specified in >"xxx/yyy+sqlite3". > >Security considerations > > Same as for "application/vnd.sqlite3". > > Each individual media type registered with a +sqlite3 suffix can >have > additional security considerations. For example, if a specific > registration requires that certain extension functions are >available, > or that blob fields contain data to be processed by other libraries >or > external tools, or if only a single implementation exists to handle > a specific registered media type, then this increases the known >attack > surface available to an attacker. > >Contact > > SQLite mailing list > <sqlite-users@mailinglists.sqlite.org> > >Author/Change controller. > > Clemens Ladisch > <clem...@ladisch.de> >_______________________________________________ >sqlite-users mailing list >sqlite-users@mailinglists.sqlite.org >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users